unet-cli: strip initial newline in usage message
[project/unetd.git] / ubus.c
diff --git a/ubus.c b/ubus.c
index 323fe44cfa6aba9b79c66f888c196ac9de60fe4c..439b40166b00c1795360111653126eabe5382913 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -234,7 +234,7 @@ ubus_network_connect(struct ubus_context *ctx, struct ubus_object *obj,
                return UBUS_STATUS_INVALID_ARGUMENT;
 
        if ((cur = tb[CONNECT_ATTR_ADDRESS]) == NULL ||
-           network_get_endpoint(&ep, blobmsg_get_string(cur), UNETD_GLOBAL_PEX_PORT, 0) < 0 ||
+           network_get_endpoint(&ep, AF_UNSPEC, blobmsg_get_string(cur), UNETD_GLOBAL_PEX_PORT, 0) < 0 ||
            !ep.in.sin_port)
                return UBUS_STATUS_INVALID_ARGUMENT;
 
@@ -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),
 };
 
@@ -281,6 +295,13 @@ ubus_connect_handler(struct ubus_context *ctx)
                fprintf(stderr, "Failed to add object: %s\n", ubus_strerror(ret));
 }
 
+void unetd_ubus_notify(struct network *net)
+{
+       blob_buf_init(&b, 0);
+       blobmsg_add_string(&b, "network", network_name(net));
+       ubus_notify(&conn.ctx, &unetd_object, "network_update", b.head, -1);
+}
+
 void unetd_ubus_netifd_update(struct blob_attr *data)
 {
        uint32_t id;