hostapd: reduce to a single instance per service
[openwrt/staging/mkresin.git] / package / network / services / hostapd / src / src / ap / ubus.c
index 5b168125482954b18f195ffb23595fbf7e92da3b..aeea3105946fb267a1a19137caa3f34c463364ca 100644 (file)
@@ -937,6 +937,7 @@ enum {
        WNM_DISASSOC_ADDR,
        WNM_DISASSOC_DURATION,
        WNM_DISASSOC_NEIGHBORS,
+       WNM_DISASSOC_ABRIDGED,
        __WNM_DISASSOC_MAX,
 };
 
@@ -944,6 +945,7 @@ static const struct blobmsg_policy wnm_disassoc_policy[__WNM_DISASSOC_MAX] = {
        [WNM_DISASSOC_ADDR] = { "addr", BLOBMSG_TYPE_STRING },
        [WNM_DISASSOC_DURATION] { "duration", BLOBMSG_TYPE_INT32 },
        [WNM_DISASSOC_NEIGHBORS] { "neighbors", BLOBMSG_TYPE_ARRAY },
+       [WNM_DISASSOC_ABRIDGED] { "abridged", BLOBMSG_TYPE_BOOL },
 };
 
 static int
@@ -1017,6 +1019,9 @@ hostapd_wnm_disassoc_imminent(struct ubus_context *ctx, struct ubus_object *obj,
        if (nr)
                req_mode |= WNM_BSS_TM_REQ_PREF_CAND_LIST_INCLUDED;
 
+       if (tb[WNM_DISASSOC_ABRIDGED] && blobmsg_get_bool(tb[WNM_DISASSOC_ABRIDGED]))
+               req_mode |= WNM_BSS_TM_REQ_ABRIDGED;
+
        if (wnm_send_bss_tm_req(hapd, sta, req_mode, duration, 0, NULL,
                                NULL, nr, nr_len, NULL, 0))
                return UBUS_STATUS_UNKNOWN_ERROR;
@@ -1110,24 +1115,12 @@ static struct ubus_object_type daemon_object_type =
 void hostapd_ubus_add(struct hapd_interfaces *interfaces)
 {
        struct ubus_object *obj = &interfaces->ubus;
-       char *name;
-       int name_len;
        int ret;
 
        if (!hostapd_ubus_init())
                return;
 
-       name_len = strlen("hostapd") + 1;
-       if (interfaces->name)
-               name_len += strlen(interfaces->name) + 1;
-
-       name = malloc(name_len);
-       strcpy(name, "hostapd");
-       if (interfaces->name) {
-               strcat(name, ".");
-               strcat(name, interfaces->name);
-       }
-       obj->name = name;
+       obj->name = strdup("hostapd");
 
        obj->type = &daemon_object_type;
        obj->methods = daemon_object_type.methods;