Browse Source

WPS: Merged two cred_cb variables into the same one

Previously, wpa_supplicant as Enrollee case was handled using a
different callback function pointer. However, now that the wps_context
structure is allocated for all cases, the same variable can be used in
all cases.
Jouni Malinen 16 years ago
parent
commit
bcbbc7af45

+ 1 - 1
src/eap_peer/eap.h

@@ -223,7 +223,7 @@ struct eapol_callbacks {
 	 * new credentials. This can be left %NULL if no WPS functionality is
 	 * new credentials. This can be left %NULL if no WPS functionality is
 	 * enabled.
 	 * enabled.
 	 */
 	 */
-	int (*wps_cred)(void *ctx, struct wps_credential *cred);
+	int (*wps_cred)(void *ctx, const struct wps_credential *cred);
 
 
 	/**
 	/**
 	 * eap_param_needed - Notify that EAP parameter is needed
 	 * eap_param_needed - Notify that EAP parameter is needed

+ 2 - 6
src/eap_peer/eap_wsc.c

@@ -68,8 +68,6 @@ static void eap_wsc_state(struct eap_wsc_data *data, int state)
 static int eap_wsc_new_psk_cb(void *ctx, const u8 *mac_addr, const u8 *psk,
 static int eap_wsc_new_psk_cb(void *ctx, const u8 *mac_addr, const u8 *psk,
 			      size_t psk_len)
 			      size_t psk_len)
 {
 {
-	/* struct eap_wsc_data *data = ctx; */
-
 	wpa_printf(MSG_DEBUG, "EAP-WSC: Received new WPA/WPA2-PSK from WPS for"
 	wpa_printf(MSG_DEBUG, "EAP-WSC: Received new WPA/WPA2-PSK from WPS for"
 		   " STA " MACSTR, MAC2STR(mac_addr));
 		   " STA " MACSTR, MAC2STR(mac_addr));
 	wpa_hexdump_key(MSG_DEBUG, "Per-device PSK", psk, psk_len);
 	wpa_hexdump_key(MSG_DEBUG, "Per-device PSK", psk, psk_len);
@@ -83,7 +81,6 @@ static int eap_wsc_new_psk_cb(void *ctx, const u8 *mac_addr, const u8 *psk,
 static void eap_wsc_pin_needed_cb(void *ctx, const u8 *uuid_e,
 static void eap_wsc_pin_needed_cb(void *ctx, const u8 *uuid_e,
 				  const struct wps_device_data *dev)
 				  const struct wps_device_data *dev)
 {
 {
-	/* struct eap_wsc_data *data = ctx; */
 	char uuid[40], txt[400];
 	char uuid[40], txt[400];
 	int len;
 	int len;
 	if (uuid_bin2str(uuid_e, uuid, sizeof(uuid)))
 	if (uuid_bin2str(uuid_e, uuid, sizeof(uuid)))
@@ -138,7 +135,8 @@ static void * eap_wsc_init(struct eap_sm *sm)
 	}
 	}
 
 
 	data->wps_ctx = wps;
 	data->wps_ctx = wps;
-	wps->cb_ctx = data;
+	wps->cb_ctx = sm->eapol_ctx;
+	wps->cred_cb = sm->eapol_cb->wps_cred;
 
 
 	/* TODO: store wps_context at higher layer and make the device data
 	/* TODO: store wps_context at higher layer and make the device data
 	 * configurable */
 	 * configurable */
@@ -212,8 +210,6 @@ static void * eap_wsc_init(struct eap_sm *sm)
 		os_memcpy(wps->uuid, sm->uuid, UUID_LEN);
 		os_memcpy(wps->uuid, sm->uuid, UUID_LEN);
 	else
 	else
 		cfg.uuid = sm->uuid;
 		cfg.uuid = sm->uuid;
-	cfg.wps_cred_cb = sm->eapol_cb->wps_cred;
-	cfg.cb_ctx = sm->eapol_ctx;
 	data->wps = wps_init(&cfg);
 	data->wps = wps_init(&cfg);
 	if (data->wps == NULL) {
 	if (data->wps == NULL) {
 		os_free(data);
 		os_free(data);

+ 1 - 1
src/eapol_supp/eapol_supp_sm.c

@@ -1743,7 +1743,7 @@ static void eapol_sm_notify_pending(void *ctx)
 
 
 
 
 #ifdef CONFIG_WPS
 #ifdef CONFIG_WPS
-static int eapol_sm_wps_cred(void *ctx, struct wps_credential *cred)
+static int eapol_sm_wps_cred(void *ctx, const struct wps_credential *cred)
 {
 {
 	struct eapol_sm *sm = ctx;
 	struct eapol_sm *sm = ctx;
 	wpa_printf(MSG_DEBUG, "EAPOL: received new WPS credential");
 	wpa_printf(MSG_DEBUG, "EAPOL: received new WPS credential");

+ 1 - 1
src/eapol_supp/eapol_supp_sm.h

@@ -223,7 +223,7 @@ struct eapol_ctx {
 	 * new credentials. This can be left %NULL if no WPS functionality is
 	 * new credentials. This can be left %NULL if no WPS functionality is
 	 * enabled.
 	 * enabled.
 	 */
 	 */
-	int (*wps_cred)(void *ctx, struct wps_credential *cred);
+	int (*wps_cred)(void *ctx, const struct wps_credential *cred);
 
 
 	/**
 	/**
 	 * eap_param_needed - Notify that EAP parameter is needed
 	 * eap_param_needed - Notify that EAP parameter is needed

+ 0 - 3
src/wps/wps.c

@@ -58,9 +58,6 @@ struct wps_data * wps_init(const struct wps_config *cfg)
 		data->dev_password_len = 8;
 		data->dev_password_len = 8;
 	}
 	}
 
 
-	data->wps_cred_cb = cfg->wps_cred_cb;
-	data->cb_ctx = cfg->cb_ctx;
-
 	data->state = data->registrar ? RECV_M1 : SEND_M1;
 	data->state = data->registrar ? RECV_M1 : SEND_M1;
 
 
 	return data;
 	return data;

+ 0 - 3
src/wps/wps.h

@@ -47,9 +47,6 @@ struct wps_config {
 	size_t pin_len;
 	size_t pin_len;
 	const u8 *uuid; /* 128-bit Enrollee UUID (NULL for Registrar) */
 	const u8 *uuid; /* 128-bit Enrollee UUID (NULL for Registrar) */
 	int pbc;
 	int pbc;
-
-	int (*wps_cred_cb)(void *ctx, struct wps_credential *cred);
-	void *cb_ctx;
 };
 };
 
 
 struct wps_data * wps_init(const struct wps_config *cfg);
 struct wps_data * wps_init(const struct wps_config *cfg);

+ 2 - 2
src/wps/wps_enrollee.c

@@ -674,8 +674,8 @@ static int wps_process_cred_e(struct wps_data *wps, const u8 *cred,
 	    wps_process_cred(&attr, &wps->cred))
 	    wps_process_cred(&attr, &wps->cred))
 		return -1;
 		return -1;
 
 
-	if (wps->wps_cred_cb)
-		wps->wps_cred_cb(wps->cb_ctx, &wps->cred);
+	if (wps->wps->cred_cb)
+		wps->wps->cred_cb(wps->wps->cb_ctx, &wps->cred);
 
 
 	return 0;
 	return 0;
 }
 }

+ 0 - 3
src/wps/wps_i.h

@@ -67,9 +67,6 @@ struct wps_data {
 	int wps_pin_revealed;
 	int wps_pin_revealed;
 	struct wps_credential cred;
 	struct wps_credential cred;
 
 
-	int (*wps_cred_cb)(void *ctx, struct wps_credential *cred);
-	void *cb_ctx;
-
 	struct wps_device_data peer_dev;
 	struct wps_device_data peer_dev;
 };
 };
 
 

+ 2 - 2
src/wps/wps_registrar.c

@@ -1986,8 +1986,8 @@ static enum wps_process_res wps_process_wsc_done(struct wps_data *wps,
 	if (!wps->wps->ap) {
 	if (!wps->wps->ap) {
 		wpa_printf(MSG_DEBUG, "WPS: Update local configuration based "
 		wpa_printf(MSG_DEBUG, "WPS: Update local configuration based "
 			   "on the modified AP configuration");
 			   "on the modified AP configuration");
-		if (wps->wps_cred_cb)
-			wps->wps_cred_cb(wps->cb_ctx, &wps->cred);
+		if (wps->wps->cred_cb)
+			wps->wps->cred_cb(wps->wps->cb_ctx, &wps->cred);
 	}
 	}
 
 
 	if (wps->new_psk) {
 	if (wps->new_psk) {

+ 2 - 1
wpa_supplicant/wps_supplicant.c

@@ -41,7 +41,8 @@ int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
 }
 }
 
 
 
 
-static int wpa_supplicant_wps_cred(void *ctx, struct wps_credential *cred)
+static int wpa_supplicant_wps_cred(void *ctx,
+				   const struct wps_credential *cred)
 {
 {
 	struct wpa_supplicant *wpa_s = ctx;
 	struct wpa_supplicant *wpa_s = ctx;
 	struct wpa_ssid *ssid = wpa_s->current_ssid;
 	struct wpa_ssid *ssid = wpa_s->current_ssid;