From 2f9b66d3ab7aeb541eaa13113e7ff6971268b780 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 30 Mar 2013 11:49:05 +0200 Subject: [PATCH] Extend ROAM command to handle multiple SSIDs per BSS Select the BSS entry based on BSSID,SSID pairs instead of just BSSID to avoid selecting an unexpected SSID for the ROAM command. Signed-hostap: Jouni Malinen --- wpa_supplicant/ctrl_iface.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 5bcf748da..3f1111b45 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -3513,7 +3513,13 @@ static int wpa_supplicant_ctrl_iface_roam(struct wpa_supplicant *wpa_s, wpa_printf(MSG_DEBUG, "CTRL_IFACE ROAM " MACSTR, MAC2STR(bssid)); - bss = wpa_bss_get_bssid(wpa_s, bssid); + if (!ssid) { + wpa_printf(MSG_DEBUG, "CTRL_IFACE ROAM: No network " + "configuration known for the target AP"); + return -1; + } + + bss = wpa_bss_get(wpa_s, bssid, ssid->ssid, ssid->ssid_len); if (!bss) { wpa_printf(MSG_DEBUG, "CTRL_IFACE ROAM: Target AP not found " "from BSS table"); @@ -3525,12 +3531,6 @@ static int wpa_supplicant_ctrl_iface_roam(struct wpa_supplicant *wpa_s, * allow roaming to other networks */ - if (!ssid) { - wpa_printf(MSG_DEBUG, "CTRL_IFACE ROAM: No network " - "configuration known for the target AP"); - return -1; - } - wpa_s->reassociate = 1; wpa_supplicant_connect(wpa_s, bss, ssid);