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,
|
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]);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue