From f3a3e6987e2201e17cdb244e166b62325f99eb7d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sun, 18 Jul 2010 19:11:09 -0700 Subject: [PATCH] WPS: Allow fragment size to be configured --- src/eap_peer/eap.c | 9 +++++++++ src/eap_peer/eap_i.h | 1 + src/eap_peer/eap_wsc.c | 6 +++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/eap_peer/eap.c b/src/eap_peer/eap.c index b9f186bf1..482934ae8 100644 --- a/src/eap_peer/eap.c +++ b/src/eap_peer/eap.c @@ -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() diff --git a/src/eap_peer/eap_i.h b/src/eap_peer/eap_i.h index e7c826ee8..afca6111e 100644 --- a/src/eap_peer/eap_i.h +++ b/src/eap_peer/eap_i.h @@ -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 * diff --git a/src/eap_peer/eap_wsc.c b/src/eap_peer/eap_wsc.c index 8317f728f..f65d98216 100644 --- a/src/eap_peer/eap_wsc.c +++ b/src/eap_peer/eap_wsc.c @@ -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,