mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
udhcpsnoop: added ubus 'add_devices' command
Added the new ubus command 'add_devices' which takes the same devies JSON schema data as the 'config' command does. This is needed, for example, to add dynamic VLAN uplink devices once they are created Signed-off-by: Paul White <paul@shasta.cloud>
This commit is contained in:
@@ -449,15 +449,19 @@ free:
|
||||
return;
|
||||
}
|
||||
|
||||
void dhcpsnoop_dev_config_update(struct blob_attr *data)
|
||||
void dhcpsnoop_dev_config_update(struct blob_attr *data, bool add_only)
|
||||
{
|
||||
struct blob_attr *cur;
|
||||
int rem;
|
||||
|
||||
vlist_update(&devices);
|
||||
if (!add_only)
|
||||
vlist_update(&devices);
|
||||
|
||||
blobmsg_for_each_attr(cur, data, rem)
|
||||
dhcpsnoop_dev_config_add(cur);
|
||||
vlist_flush(&devices);
|
||||
|
||||
if (!add_only)
|
||||
vlist_flush(&devices);
|
||||
}
|
||||
|
||||
void dhcpsnoop_dev_check(void)
|
||||
|
||||
@@ -16,7 +16,7 @@ int dhcpsnoop_run_cmd(char *cmd, bool ignore_error);
|
||||
|
||||
int dhcpsnoop_dev_init(void);
|
||||
void dhcpsnoop_dev_done(void);
|
||||
void dhcpsnoop_dev_config_update(struct blob_attr *data);
|
||||
void dhcpsnoop_dev_config_update(struct blob_attr *data, bool add_only);
|
||||
void dhcpsnoop_dev_check(void);
|
||||
|
||||
void dhcpsnoop_ubus_init(void);
|
||||
|
||||
@@ -27,7 +27,7 @@ dhcpsnoop_ubus_config(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
blobmsg_parse(dhcpsnoop_config_policy, __DS_CONFIG_MAX, tb,
|
||||
blobmsg_data(msg), blobmsg_len(msg));
|
||||
|
||||
dhcpsnoop_dev_config_update(tb[DS_CONFIG_DEVICES]);
|
||||
dhcpsnoop_dev_config_update(tb[DS_CONFIG_DEVICES], false);
|
||||
|
||||
dhcpsnoop_dev_check();
|
||||
|
||||
@@ -35,6 +35,23 @@ dhcpsnoop_ubus_config(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
dhcpsnoop_ubus_add_devices(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
struct ubus_request_data *req, const char *method,
|
||||
struct blob_attr *msg)
|
||||
{
|
||||
struct blob_attr *tb[__DS_CONFIG_MAX];
|
||||
|
||||
blobmsg_parse(dhcpsnoop_config_policy, __DS_CONFIG_MAX, tb,
|
||||
blobmsg_data(msg), blobmsg_len(msg));
|
||||
|
||||
dhcpsnoop_dev_config_update(tb[DS_CONFIG_DEVICES], true);
|
||||
|
||||
dhcpsnoop_dev_check();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dhcpsnoop_ubus_check_devices(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
struct ubus_request_data *req, const char *method,
|
||||
@@ -61,6 +78,7 @@ dhcpsnoop_ubus_dump(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
|
||||
static const struct ubus_method dhcpsnoop_methods[] = {
|
||||
UBUS_METHOD("config", dhcpsnoop_ubus_config, dhcpsnoop_config_policy),
|
||||
UBUS_METHOD("add_devices", dhcpsnoop_ubus_add_devices, dhcpsnoop_config_policy),
|
||||
UBUS_METHOD_NOARG("check_devices", dhcpsnoop_ubus_check_devices),
|
||||
UBUS_METHOD_NOARG("dump", dhcpsnoop_ubus_dump),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user