WPS: Allow fragment size to be configured
authorJouni Malinen <jouni.malinen@atheros.com>
Mon, 19 Jul 2010 02:11:09 +0000 (19:11 -0700)
committerJouni Malinen <j@w1.fi>
Wed, 21 Jul 2010 05:55:39 +0000 (22:55 -0700)
src/eap_peer/eap.c
src/eap_peer/eap_i.h
src/eap_peer/eap_wsc.c

index b9f186b..482934a 100644 (file)
@@ -1923,6 +1923,15 @@ const char * eap_get_config_phase2(struct eap_sm *sm)
 }
 
 
+int eap_get_config_fragment_size(struct eap_sm *sm)
+{
+       struct eap_peer_config *config = eap_get_config(sm);
+       if (config == NULL)
+               return -1;
+       return config->fragment_size;
+}
+
+
 /**
  * eap_key_available - Get key availability (eapKeyAvailable variable)
  * @sm: Pointer to EAP state machine allocated with eap_peer_sm_init()
index e7c826e..afca611 100644 (file)
@@ -345,6 +345,7 @@ const u8 * eap_get_config_otp(struct eap_sm *sm, size_t *len);
 void eap_clear_config_otp(struct eap_sm *sm);
 const char * eap_get_config_phase1(struct eap_sm *sm);
 const char * eap_get_config_phase2(struct eap_sm *sm);
+int eap_get_config_fragment_size(struct eap_sm *sm);
 struct eap_peer_config * eap_get_config(struct eap_sm *sm);
 void eap_set_config_blob(struct eap_sm *sm, struct wpa_config_blob *blob);
 const struct wpa_config_blob *
index 8317f72..f65d982 100644 (file)
@@ -219,7 +219,11 @@ static void * eap_wsc_init(struct eap_sm *sm)
                os_free(data);
                return NULL;
        }
-       data->fragment_size = WSC_FRAGMENT_SIZE;
+       res = eap_get_config_fragment_size(sm);
+       if (res > 0)
+               data->fragment_size = res;
+       else
+               data->fragment_size = WSC_FRAGMENT_SIZE;
 
        if (registrar && cfg.pin) {
                wps_registrar_add_pin(data->wps_ctx->registrar, NULL,