aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/src/wpa_supplicant/ubus.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/src/wpa_supplicant/ubus.c')
-rw-r--r--package/network/services/hostapd/src/wpa_supplicant/ubus.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/package/network/services/hostapd/src/wpa_supplicant/ubus.c b/package/network/services/hostapd/src/wpa_supplicant/ubus.c
index d4ed8e222a..5fdb57be7a 100644
--- a/package/network/services/hostapd/src/wpa_supplicant/ubus.c
+++ b/package/network/services/hostapd/src/wpa_supplicant/ubus.c
@@ -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;