Module Name: src
Committed By: christos
Date: Sat Sep 10 20:59:03 UTC 2011
Modified Files:
src/external/bsd/wpa/dist/hostapd: hostapd_cli.c
src/external/bsd/wpa/dist/src/ap: wpa_auth.c
Log Message:
merge 0.7.3
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/wpa/dist/hostapd/hostapd_cli.c
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/wpa/dist/src/ap/wpa_auth.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/wpa/dist/hostapd/hostapd_cli.c
diff -u src/external/bsd/wpa/dist/hostapd/hostapd_cli.c:1.2 src/external/bsd/wpa/dist/hostapd/hostapd_cli.c:1.3
--- src/external/bsd/wpa/dist/hostapd/hostapd_cli.c:1.2 Wed Aug 4 13:12:34 2010
+++ src/external/bsd/wpa/dist/hostapd/hostapd_cli.c Sat Sep 10 16:59:03 2011
@@ -94,6 +94,7 @@
#ifdef CONFIG_WPS_OOB
" wps_oob <type> <path> <method> use WPS with out-of-band (UFD)\n"
#endif /* CONFIG_WPS_OOB */
+" wps_ap_pin <cmd> [params..] enable/disable AP PIN\n"
#endif /* CONFIG_WPS */
" help show this usage help\n"
" interface [ifname] show interfaces/select interface\n"
@@ -405,6 +406,27 @@
return wpa_ctrl_command(ctrl, cmd);
}
#endif /* CONFIG_WPS_OOB */
+
+
+static int hostapd_cli_cmd_wps_ap_pin(struct wpa_ctrl *ctrl, int argc,
+ char *argv[])
+{
+ char buf[64];
+ if (argc < 1) {
+ printf("Invalid 'wps_ap_pin' command - at least one argument "
+ "is required.\n");
+ return -1;
+ }
+ if (argc > 2)
+ snprintf(buf, sizeof(buf), "WPS_AP_PIN %s %s %s",
+ argv[0], argv[1], argv[2]);
+ else if (argc > 1)
+ snprintf(buf, sizeof(buf), "WPS_AP_PIN %s %s",
+ argv[0], argv[1]);
+ else
+ snprintf(buf, sizeof(buf), "WPS_AP_PIN %s", argv[0]);
+ return wpa_ctrl_command(ctrl, buf);
+}
#endif /* CONFIG_WPS */
@@ -567,6 +589,7 @@
#ifdef CONFIG_WPS_OOB
{ "wps_oob", hostapd_cli_cmd_wps_oob },
#endif /* CONFIG_WPS_OOB */
+ { "wps_ap_pin", hostapd_cli_cmd_wps_ap_pin },
#endif /* CONFIG_WPS */
{ "help", hostapd_cli_cmd_help },
{ "interface", hostapd_cli_cmd_interface },
Index: src/external/bsd/wpa/dist/src/ap/wpa_auth.c
diff -u src/external/bsd/wpa/dist/src/ap/wpa_auth.c:1.2 src/external/bsd/wpa/dist/src/ap/wpa_auth.c:1.3
--- src/external/bsd/wpa/dist/src/ap/wpa_auth.c:1.2 Sun Feb 27 13:07:42 2011
+++ src/external/bsd/wpa/dist/src/ap/wpa_auth.c Sat Sep 10 16:59:03 2011
@@ -1274,6 +1274,24 @@
break;
case WPA_REAUTH:
case WPA_REAUTH_EAPOL:
+ if (!sm->started) {
+ /*
+ * When using WPS, we may end up here if the STA
+ * manages to re-associate without the previous STA
+ * entry getting removed. Consequently, we need to make
+ * sure that the WPA state machines gets initialized
+ * properly at this point.
+ */
+ wpa_printf(MSG_DEBUG, "WPA state machine had not been "
+ "started - initialize now");
+ sm->started = 1;
+ sm->Init = TRUE;
+ if (wpa_sm_step(sm) == 1)
+ return 1; /* should not really happen */
+ sm->Init = FALSE;
+ sm->AuthenticationRequest = TRUE;
+ break;
+ }
if (sm->GUpdateStationKeys) {
/*
* Reauthentication cancels the pending group key