Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion device.c
Original file line number Diff line number Diff line change
Expand Up @@ -1317,7 +1317,8 @@ device_create(const char *name, struct device_type *type,
dev->config_pending = false;
}

device_check_state(dev);
int checkret = device_check_state(dev);
D(DEVICE, "%s device_check_state return %d\n", __func__, checkret);

return dev;
}
Expand Down
2 changes: 1 addition & 1 deletion netifd.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ enum {
DEBUG_WIRELESS = 3,
};

#ifdef DEBUG
#if 1 // def DEBUG
#define DPRINTF(format, ...) fprintf(stderr, "%s(%d): " format, __func__, __LINE__, ## __VA_ARGS__)
#define D(level, format, ...) do { \
netifd_udebug_printf("[" #level "] %s(%d): " format, __func__, __LINE__, ## __VA_ARGS__); \
Expand Down
54 changes: 54 additions & 0 deletions ubus.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,59 @@ netifd_add_dynamic(struct ubus_context *ctx, struct ubus_object *obj,
return UBUS_STATUS_UNKNOWN_ERROR;
}

enum {
DI_DEV_NAME,
DI_DEV_TYPE,
__DI_DEV_MAX
};

static const struct blobmsg_policy dynamic_device_policy[__DI_DEV_MAX] = {
[DI_DEV_NAME] = { .name = "name", .type = BLOBMSG_TYPE_STRING },
[DI_DEV_TYPE] = { .name = "type", .type = BLOBMSG_TYPE_STRING }
};

static int
netifd_add_dynamic_device(
struct ubus_context */*ctx*/, struct ubus_object */*obj*/,
struct ubus_request_data */*req*/, const char */*method*/,
struct blob_attr *msg )
{
D(DEVICE, "%s\n", __func__);

struct blob_attr *tb[__DI_DEV_MAX];
struct device *device;
struct device_type *type;
struct blob_attr *config;

blobmsg_parse( dynamic_device_policy, __DI_DEV_MAX, tb,
blob_data(msg), blob_len(msg) );

if (!tb[DI_DEV_NAME] || !tb[DI_DEV_TYPE])
return UBUS_STATUS_INVALID_ARGUMENT;

const char *name = blobmsg_get_string(tb[DI_DEV_NAME]);
const char *type_name = blobmsg_get_string(tb[DI_DEV_TYPE]);

type = device_type_get(type_name);

if (!type)
return UBUS_STATUS_INVALID_ARGUMENT;

config = blob_memdup(msg);
if (!config)
return UBUS_STATUS_UNKNOWN_ERROR;

device = device_create(name, type, config);
if (!device)
goto error_free_config;

return UBUS_STATUS_OK;

error_free_config:
free(config);
return UBUS_STATUS_UNKNOWN_ERROR;
}

enum {
NETNS_UPDOWN_JAIL,
NETNS_UPDOWN_START,
Expand Down Expand Up @@ -209,6 +262,7 @@ static struct ubus_method main_object_methods[] = {
UBUS_METHOD("add_host_route", netifd_add_host_route, route_policy),
{ .name = "get_proto_handlers", .handler = netifd_get_proto_handlers },
UBUS_METHOD("add_dynamic", netifd_add_dynamic, dynamic_policy),
UBUS_METHOD("add_dynamic_device", netifd_add_dynamic_device, dynamic_device_policy),
UBUS_METHOD("netns_updown", netifd_netns_updown, netns_updown_policy),
};

Expand Down
2 changes: 2 additions & 0 deletions vlandev.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,8 @@ static struct device *
vlandev_create(const char *name, struct device_type *devtype,
struct blob_attr *attr)
{
D(DEVICE, "%s\n", __func__);

struct vlandev_device *mvdev;
struct device *dev = NULL;

Expand Down