hostapd: add Multi-AP patches and config options
[openwrt/staging/lynxis.git] / package / network / services / hostapd / src / wpa_supplicant / ubus.c
index d4ed8e222ae3210d6bb464072779577fce1b948e..5fdb57be7a0e3a971ee8cfcde4e9a1d0d489cece 100644 (file)
@@ -96,6 +96,15 @@ wpas_bss_get_features(struct ubus_context *ctx, struct ubus_object *obj,
 }
 
 #ifdef CONFIG_WPS
+enum {
+       WPS_START_MULTI_AP,
+       __WPS_START_MAX
+};
+
+static const struct blobmsg_policy wps_start_policy[] = {
+       [WPS_START_MULTI_AP] = { "multi_ap", BLOBMSG_TYPE_BOOL },
+};
+
 static int
 wpas_bss_wps_start(struct ubus_context *ctx, struct ubus_object *obj,
                        struct ubus_request_data *req, const char *method,
@@ -103,8 +112,15 @@ wpas_bss_wps_start(struct ubus_context *ctx, struct ubus_object *obj,
 {
        int rc;
        struct wpa_supplicant *wpa_s = get_wpas_from_object(obj);
+       struct blob_attr *tb[__WPS_START_MAX], *cur;
+       int multi_ap = 0;
+
+       blobmsg_parse(wps_start_policy, __WPS_START_MAX, tb, blobmsg_data(msg), blobmsg_data_len(msg));
+
+       if (tb[WPS_START_MULTI_AP])
+               multi_ap = blobmsg_get_bool(tb[WPS_START_MULTI_AP]);
 
-       rc = wpas_wps_start_pbc(wpa_s, NULL, 0);
+       rc = wpas_wps_start_pbc(wpa_s, NULL, 0, multi_ap);
 
        if (rc != 0)
                return UBUS_STATUS_NOT_SUPPORTED;