P2P: Show P2P info in ctrl_iface scan results

This commit is contained in:
Jouni Malinen 2010-07-18 14:30:25 -07:00 committed by Jouni Malinen
parent d23bd8940f
commit 0c6b310e83
2 changed files with 33 additions and 2 deletions

View file

@ -325,7 +325,7 @@ void wpa_bss_update_start(struct wpa_supplicant *wpa_s)
void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s, void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s,
struct wpa_scan_res *res) struct wpa_scan_res *res)
{ {
const u8 *ssid; const u8 *ssid, *p2p;
struct wpa_bss *bss; struct wpa_bss *bss;
ssid = wpa_scan_get_ie(res, WLAN_EID_SSID); ssid = wpa_scan_get_ie(res, WLAN_EID_SSID);
@ -340,6 +340,11 @@ void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s,
return; return;
} }
p2p = wpa_scan_get_vendor_ie(res, P2P_IE_VENDOR_TYPE);
if (p2p && ssid[1] == P2P_WILDCARD_SSID_LEN &&
os_memcmp(ssid + 2, P2P_WILDCARD_SSID, P2P_WILDCARD_SSID_LEN) == 0)
return; /* Skip P2P listen discovery results here */
/* TODO: add option for ignoring BSSes we are not interested in /* TODO: add option for ignoring BSSes we are not interested in
* (to save memory) */ * (to save memory) */
bss = wpa_bss_get(wpa_s, res->bssid, ssid + 2, ssid[1]); bss = wpa_bss_get(wpa_s, res->bssid, ssid + 2, ssid[1]);

View file

@ -904,7 +904,13 @@ static int wpa_supplicant_ctrl_iface_scan_result(
{ {
char *pos, *end; char *pos, *end;
int ret; int ret;
const u8 *ie, *ie2; const u8 *ie, *ie2, *p2p;
p2p = wpa_bss_get_vendor_ie(bss, P2P_IE_VENDOR_TYPE);
if (p2p && bss->ssid_len == P2P_WILDCARD_SSID_LEN &&
os_memcmp(bss->ssid, P2P_WILDCARD_SSID, P2P_WILDCARD_SSID_LEN) ==
0)
return 0; /* Do not show P2P listen discovery results here */
pos = buf; pos = buf;
end = buf + buflen; end = buf + buflen;
@ -939,6 +945,12 @@ static int wpa_supplicant_ctrl_iface_scan_result(
return pos - buf; return pos - buf;
pos += ret; pos += ret;
} }
if (p2p) {
ret = os_snprintf(pos, end - pos, "[P2P]");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
}
ret = os_snprintf(pos, end - pos, "\t%s", ret = os_snprintf(pos, end - pos, "\t%s",
wpa_ssid_txt(bss->ssid, bss->ssid_len)); wpa_ssid_txt(bss->ssid, bss->ssid_len));
@ -1658,6 +1670,12 @@ static int wpa_supplicant_ctrl_iface_bss(struct wpa_supplicant *wpa_s,
return pos - buf; return pos - buf;
pos += ret; pos += ret;
} }
if (wpa_bss_get_vendor_ie(bss, P2P_IE_VENDOR_TYPE)) {
ret = os_snprintf(pos, end - pos, "[P2P]");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
}
ret = os_snprintf(pos, end - pos, "\n"); ret = os_snprintf(pos, end - pos, "\n");
if (ret < 0 || ret >= end - pos) if (ret < 0 || ret >= end - pos)
@ -1714,6 +1732,14 @@ static int wpa_supplicant_ctrl_iface_bss(struct wpa_supplicant *wpa_s,
pos += ret; pos += ret;
#endif /* CONFIG_WPS */ #endif /* CONFIG_WPS */
#ifdef CONFIG_P2P
ie = (const u8 *) (bss + 1);
ret = wpas_p2p_scan_result_text(ie, bss->ie_len, pos, end);
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
#endif /* CONFIG_P2P */
return pos - buf; return pos - buf;
} }