aboutsummaryrefslogtreecommitdiffstats
path: root/hostapd/ctrl_iface.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2013-02-20 14:34:59 -0800
committerDmitry Shmidt <dimitrysh@google.com>2013-02-20 14:34:59 -0800
commitf86232838cf712377867cb42417c1613ab5dc425 (patch)
tree13e2cd840dd892b919248b57a8569abbb7c455d2 /hostapd/ctrl_iface.c
parent1e1c48d2b342d4945d600ddb650bd2925822d1bb (diff)
downloadandroid_external_wpa_supplicant_8-f86232838cf712377867cb42417c1613ab5dc425.tar.gz
android_external_wpa_supplicant_8-f86232838cf712377867cb42417c1613ab5dc425.tar.bz2
android_external_wpa_supplicant_8-f86232838cf712377867cb42417c1613ab5dc425.zip
Accumulative patch from commit b618a469c42120e984ab1c85ed6058504d1fca78
Author: Jouni Malinen <jouni@qca.qualcomm.com> Date: Sat Feb 16 19:54:09 2013 +0200 Interworking: Select highest priority cred if multiple matches Interworking: Select highest priority cred if multiple matches GAS server: Fix a regression in GAS server callback hostapd: Fix Max SP Length derivation from QoS Info nl80211: Configure STA Capabilities and Extended Capabilities Synchronize with wireless-testing.git include/uapi/linux/nl80211.h WPS: Fix build without CONFIG_WPS_NFC WPS: Add support for NFC handover select generation with wpa_supplicant WPS: Update NFC connection handover documentation WPS: Add support for config token generation with wpa_supplicant WPS: Allow password token to be written with nfcpy WPS: Use pre-configured NFC password token instead of overriding it TDLS: Pass peer's Capability and Ext Capability info during sta_add TDLS: Pass peer's HT Capability and QOS information during sta_add nl80211: Add debug prints for STA add/set operations TDLS: Fix add/set STA operation Synchronize with wireless-testing.git include/uapi/linux/nl80211.h WPS: Allow Device Password to be changed from M1 to M2 WPS: Fix wps_reg nfc-pw option TDLS: Tear down peers when disconnecting from the AP P2P: Do not use old scan result data for peer discovery Use more accurate timestamps for scan results P2P: Postpone P2P-DEVICE-FOUND if config_methods not known P2P: Do not allow peer update to clear config_methods WPS: Report NFC connection handover completion differently P2P: Avoid concurrent scans during all steps of group formation P2P: Cancel group formation timeout on group removal (on client) WPS: Change listen time to match nfcpy default (250 ms) WPS: Report only the carrier record from NFC to wpa_supplicant WPS: Fetch only the carrier record from wpa_supplicant for NFC WPS: Update nfcpy script to support AP mode NFC connection handover WPS: Add command for fetching carrier record for NFC handover WPS: Clean up debug prints with nfcpy WPS: Remove 0.5 sec extra wait from NFC handover with nfcpy WPS: Use alternating poll/listen for NFC peer discovery with nfcpy WPS: Configure logging to show nfcpy log message WPS: Add an example python script for NFC operations with hostapd hostapd: Do not change HT40 capability due to OBSS scan dbus: Add missing signal description for WPS (7) EAP peer: Add Session-Id derivation to more EAP methods EAP peer: Add Session-Id derivation EAP-IKEV2 server: Fix invalid memory freeing operation eap_proxy: Add a dummy implementation for compilation testing eap_proxy: Add mechanism for allowing EAP methods to be offloaded Android: Allow setgroups to be overridden from build configuration P2P: Send p2p_stop_find event on failure to start pending p2p_find P2P: Fix GO Probe Response IEs when Wi-Fi Display is enabled Capability matching for 60 GHz band nl80211: Add ctrl_iface message for AP mode connection rejection P2P: Allow local configuration to use 5 GHz band 40 MHz channels Fix BSS RANGE command for no exact id match cases Change-Id: Iac9284bba31db40911aecc3adf2843c9b1576db1 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'hostapd/ctrl_iface.c')
-rw-r--r--hostapd/ctrl_iface.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 93b740eb..f20721b8 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -352,6 +352,59 @@ static int hostapd_ctrl_iface_wps_nfc_token(struct hostapd_data *hapd,
return -1;
}
+
+
+static int hostapd_ctrl_iface_nfc_get_handover_sel(struct hostapd_data *hapd,
+ char *cmd, char *reply,
+ size_t max_len)
+{
+ struct wpabuf *buf;
+ int res;
+ char *pos;
+ int ndef;
+
+ pos = os_strchr(cmd, ' ');
+ if (pos == NULL)
+ return -1;
+ *pos++ = '\0';
+
+ if (os_strcmp(cmd, "WPS") == 0)
+ ndef = 0;
+ else if (os_strcmp(cmd, "NDEF") == 0)
+ ndef = 1;
+ else
+ return -1;
+
+ if (os_strcmp(pos, "WPS-CR") == 0)
+ buf = hostapd_wps_nfc_hs_cr(hapd, ndef);
+ else
+ buf = NULL;
+ if (buf == NULL)
+ return -1;
+
+ res = wpa_snprintf_hex_uppercase(reply, max_len, wpabuf_head(buf),
+ wpabuf_len(buf));
+ reply[res++] = '\n';
+ reply[res] = '\0';
+
+ wpabuf_free(buf);
+
+ return res;
+}
+
+
+static int hostapd_ctrl_iface_nfc_report_handover(struct hostapd_data *hapd,
+ char *cmd)
+{
+ /*
+ * Since NFC connection handover provided full WPS Credential, there is
+ * no need for additional operations within hostapd. Just report this in
+ * debug log.
+ */
+ wpa_printf(MSG_DEBUG, "NFC: Connection handover reported: %s", cmd);
+ return 0;
+}
+
#endif /* CONFIG_WPS_NFC */
@@ -913,6 +966,12 @@ static void hostapd_ctrl_iface_receive(int sock, void *eloop_ctx,
} else if (os_strncmp(buf, "WPS_NFC_TOKEN ", 14) == 0) {
reply_len = hostapd_ctrl_iface_wps_nfc_token(
hapd, buf + 14, reply, reply_size);
+ } else if (os_strncmp(buf, "NFC_GET_HANDOVER_SEL ", 21) == 0) {
+ reply_len = hostapd_ctrl_iface_nfc_get_handover_sel(
+ hapd, buf + 21, reply, reply_size);
+ } else if (os_strncmp(buf, "NFC_REPORT_HANDOVER ", 20) == 0) {
+ if (hostapd_ctrl_iface_nfc_report_handover(hapd, buf + 20))
+ reply_len = -1;
#endif /* CONFIG_WPS_NFC */
#endif /* CONFIG_WPS */
#ifdef CONFIG_WNM