]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WPS: Make fragment size configurable for EAP-WSC peer
authorJouni Malinen <jouni.malinen@atheros.com>
Thu, 22 Jul 2010 17:24:23 +0000 (10:24 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 9 Sep 2010 13:07:49 +0000 (06:07 -0700)
"wpa_cli set wps_fragment_size <val>" can now be used to configure the
fragment size limit for EAP-WSC.

src/eap_peer/eap_wsc.c
wpa_supplicant/ctrl_iface.c
wpa_supplicant/wpa_supplicant_i.h
wpa_supplicant/wps_supplicant.c

index a38e2ad993373568654df2c638550aa977f6c7a2..00eab635488f18bd0f0cb6b4bee834f3e3c4beed 100644 (file)
@@ -224,6 +224,8 @@ static void * eap_wsc_init(struct eap_sm *sm)
                data->fragment_size = res;
        else
                data->fragment_size = WSC_FRAGMENT_SIZE;
+       wpa_printf(MSG_DEBUG, "EAP-WSC: Fragment size limit %u",
+                  (unsigned int) data->fragment_size);
 
        if (registrar && cfg.pin) {
                wps_registrar_add_pin(data->wps_ctx->registrar, NULL, NULL,
index 9c849cbf57b9bd681c6d29724bc4ff4aecb13232..f02554845da1f942763aad652e7ae3af2c669d7a 100644 (file)
@@ -80,6 +80,8 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
        } else if (os_strcasecmp(cmd, "dot11RSNAConfigSATimeout") == 0) {
                if (wpa_sm_set_param(wpa_s->wpa, RSNA_SA_TIMEOUT, atoi(value)))
                        ret = -1;
+       } else if (os_strcasecmp(cmd, "wps_fragment_size") == 0) {
+               wpa_s->wps_fragment_size = atoi(value);
        } else
                ret = -1;
 
index 6c36a1a8c738d09ae57f90e67ec5d11bc2bfc338..b170638b90abafdc6abd92a2e6556eab0bb06add 100644 (file)
@@ -437,6 +437,7 @@ struct wpa_supplicant {
 
        int after_wps;
        unsigned int wps_freq;
+       int wps_fragment_size;
 };
 
 
index bb46adb17093c52dc0913ec107d2a6b51f1ae3ff..99fcabce6b21564f4f694f950b4ce94837939fc1 100644 (file)
@@ -673,6 +673,8 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid)
        if (ssid == NULL)
                return -1;
        wpa_config_set(ssid, "phase1", "\"pbc=1\"", 0);
+       if (wpa_s->wps_fragment_size)
+               ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,
                               wpa_s, NULL);
        wpas_wps_reassoc(wpa_s, ssid);
@@ -698,6 +700,8 @@ int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
                os_snprintf(val, sizeof(val), "\"pin=%08d\"", rpin);
        }
        wpa_config_set(ssid, "phase1", val, 0);
+       if (wpa_s->wps_fragment_size)
+               ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,
                               wpa_s, NULL);
        wpas_wps_reassoc(wpa_s, ssid);
@@ -788,6 +792,8 @@ int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
        if (res < 0 || res >= end - pos)
                return -1;
        wpa_config_set(ssid, "phase1", val, 0);
+       if (wpa_s->wps_fragment_size)
+               ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,
                               wpa_s, NULL);
        wpas_wps_reassoc(wpa_s, ssid);