diff --git a/src/scan.c b/src/scan.c index d251b04d..759f01a1 100644 --- a/src/scan.c +++ b/src/scan.c @@ -894,6 +894,16 @@ static bool scan_parse_bss_information_elements(struct scan_bss *bss, scan_parse_advertisement_protocol(bss, iter.data, iter.len); break; + case IE_TYPE_INTERWORKING: + /* + * No bits indicate if venue/HESSID is included, so the + * length is the only way to know. + * (IEEE 802.11-2016 - Figure 9-439) + */ + if (iter.len == 9) + memcpy(bss->hessid, iter.data + 3, 6); + else if (iter.len == 7) + memcpy(bss->hessid, iter.data + 1, 6); } } diff --git a/src/scan.h b/src/scan.h index 03089078..5577b204 100644 --- a/src/scan.h +++ b/src/scan.h @@ -62,6 +62,7 @@ struct scan_bss { uint8_t ht_ie[28]; uint8_t vht_ie[14]; uint64_t time_stamp; + uint8_t hessid[6]; bool mde_present : 1; bool cc_present : 1; bool cap_rm_neighbor_report : 1;