P2P: Show P2P info in ctrl_iface scan results
This commit is contained in:
parent
d23bd8940f
commit
0c6b310e83
2 changed files with 33 additions and 2 deletions
|
@ -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,
|
||||
struct wpa_scan_res *res)
|
||||
{
|
||||
const u8 *ssid;
|
||||
const u8 *ssid, *p2p;
|
||||
struct wpa_bss *bss;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
* (to save memory) */
|
||||
bss = wpa_bss_get(wpa_s, res->bssid, ssid + 2, ssid[1]);
|
||||
|
|
|
@ -904,7 +904,13 @@ static int wpa_supplicant_ctrl_iface_scan_result(
|
|||
{
|
||||
char *pos, *end;
|
||||
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;
|
||||
end = buf + buflen;
|
||||
|
@ -939,6 +945,12 @@ static int wpa_supplicant_ctrl_iface_scan_result(
|
|||
return pos - buf;
|
||||
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",
|
||||
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;
|
||||
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");
|
||||
if (ret < 0 || ret >= end - pos)
|
||||
|
@ -1714,6 +1732,14 @@ static int wpa_supplicant_ctrl_iface_bss(struct wpa_supplicant *wpa_s,
|
|||
pos += ret;
|
||||
#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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue