From d95079361b21a7c41dced8932b56f65d21f5ccd2 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 4 Apr 2013 16:43:12 +0300 Subject: [PATCH] WPS NFC: Add support for wpa_supplicant AP/GO mode to use handover New functionality is needed for this with the update NFC connection handover design that depends on the AP side using the public key hash from the handover request. Signed-hostap: Jouni Malinen --- wpa_supplicant/ap.c | 13 +++++++++++++ wpa_supplicant/ap.h | 4 ++++ wpa_supplicant/ctrl_iface.c | 3 +++ 3 files changed, 20 insertions(+) diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c index 5f693897d..0f8024949 100644 --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c @@ -946,6 +946,19 @@ struct wpabuf * wpas_ap_wps_nfc_handover_sel(struct wpa_supplicant *wpa_s, return hostapd_wps_nfc_hs_cr(hapd, ndef); } + +int wpas_ap_wps_nfc_report_handover(struct wpa_supplicant *wpa_s, + const struct wpabuf *req, + const struct wpabuf *sel) +{ + struct hostapd_data *hapd; + + if (wpa_s->ap_iface == NULL) + return -1; + hapd = wpa_s->ap_iface->bss[0]; + return hostapd_wps_nfc_report_handover(hapd, req, sel); +} + #endif /* CONFIG_WPS_NFC */ #endif /* CONFIG_WPS */ diff --git a/wpa_supplicant/ap.h b/wpa_supplicant/ap.h index c3828980d..9138717fd 100644 --- a/wpa_supplicant/ap.h +++ b/wpa_supplicant/ap.h @@ -69,4 +69,8 @@ wpas_ap_wps_nfc_handover_sel(struct wpa_supplicant *wpa_s, } #endif /* CONFIG_AP */ +int wpas_ap_wps_nfc_report_handover(struct wpa_supplicant *wpa_s, + const struct wpabuf *req, + const struct wpabuf *sel); + #endif /* AP_H */ diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index ee3d14d80..2ec89a9b5 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -1125,6 +1125,9 @@ static int wpas_ctrl_nfc_report_handover(struct wpa_supplicant *wpa_s, if (os_strcmp(role, "INIT") == 0 && os_strcmp(type, "WPS") == 0) { ret = wpas_wps_nfc_report_handover(wpa_s, req, sel); + } else if (os_strcmp(role, "RESP") == 0 && os_strcmp(type, "WPS") == 0) + { + ret = wpas_ap_wps_nfc_report_handover(wpa_s, req, sel); } else { wpa_printf(MSG_DEBUG, "NFC: Unsupported connection handover " "reported: role=%s type=%s", role, type);