ubus: add reload command
[project/unetd.git] / ubus.c
diff --git a/ubus.c b/ubus.c
index 323fe44cfa6aba9b79c66f888c196ac9de60fe4c..df45a546adc68d5c804bc11bd3510fd0128ba466 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -250,6 +250,19 @@ ubus_network_connect(struct ubus_context *ctx, struct ubus_object *obj,
        return 0;
 }
 
+static int
+ubus_reload(struct ubus_context *ctx, struct ubus_object *obj,
+           struct ubus_request_data *req, const char *method,
+           struct blob_attr *msg)
+{
+       struct network *net;
+
+       avl_for_each_element(&networks, net, node)
+               network_soft_reload(net);
+
+       return 0;
+}
+
 
 static const struct ubus_method unetd_methods[] = {
        UBUS_METHOD("network_add", ubus_network_add, network_policy),
@@ -258,6 +271,7 @@ static const struct ubus_method unetd_methods[] = {
        UBUS_METHOD_MASK("network_get", ubus_network_get, network_policy,
                         (1 << NETWORK_ATTR_NAME)),
        UBUS_METHOD("network_connect", ubus_network_connect, connect_policy),
+       UBUS_METHOD_NOARG("reload", ubus_reload),
        UBUS_METHOD("service_get", ubus_service_get, service_policy),
 };