RNR: Add bss_parameters to the neighbor_db
Add a new field to include BSS Parameter subfield in the neighbor database as described in IEEE Std 802.11ax-2021, Figure 9-632a (BSS Parameters subfield format). This field holds information related to multiple BSSID, access point co-location, and 20 TU probe response active/inactive state. Signed-off-by: John Crispin <john@phrozen.org> Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
This commit is contained in:
parent
9d0948ecc9
commit
1b8eb39757
4 changed files with 22 additions and 4 deletions
|
@ -3191,6 +3191,7 @@ static int hostapd_ctrl_iface_set_neighbor(struct hostapd_data *hapd, char *buf)
|
||||||
u8 bssid[ETH_ALEN];
|
u8 bssid[ETH_ALEN];
|
||||||
struct wpabuf *nr, *lci = NULL, *civic = NULL;
|
struct wpabuf *nr, *lci = NULL, *civic = NULL;
|
||||||
int stationary = 0;
|
int stationary = 0;
|
||||||
|
int bss_parameters = 0;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -3275,9 +3276,22 @@ static int hostapd_ctrl_iface_set_neighbor(struct hostapd_data *hapd, char *buf)
|
||||||
if (os_strstr(buf, "stat"))
|
if (os_strstr(buf, "stat"))
|
||||||
stationary = 1;
|
stationary = 1;
|
||||||
|
|
||||||
|
tmp = os_strstr(buf, "bss_parameter=");
|
||||||
|
if (tmp) {
|
||||||
|
bss_parameters = atoi(tmp + 14);
|
||||||
|
if (bss_parameters < 0 || bss_parameters > 0xff) {
|
||||||
|
wpa_printf(MSG_ERROR,
|
||||||
|
"CTRL: SET_NEIGHBOR: Bad bss_parameters subelement");
|
||||||
|
wpabuf_free(nr);
|
||||||
|
wpabuf_free(lci);
|
||||||
|
wpabuf_free(civic);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set:
|
set:
|
||||||
ret = hostapd_neighbor_set(hapd, bssid, &ssid, nr, lci, civic,
|
ret = hostapd_neighbor_set(hapd, bssid, &ssid, nr, lci, civic,
|
||||||
stationary);
|
stationary, bss_parameters);
|
||||||
|
|
||||||
wpabuf_free(nr);
|
wpabuf_free(nr);
|
||||||
wpabuf_free(lci);
|
wpabuf_free(lci);
|
||||||
|
|
|
@ -139,6 +139,7 @@ struct hostapd_neighbor_entry {
|
||||||
struct os_time lci_date;
|
struct os_time lci_date;
|
||||||
int stationary;
|
int stationary;
|
||||||
u32 short_ssid;
|
u32 short_ssid;
|
||||||
|
u8 bss_parameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hostapd_sae_commit_queue {
|
struct hostapd_sae_commit_queue {
|
||||||
|
|
|
@ -121,7 +121,8 @@ hostapd_neighbor_add(struct hostapd_data *hapd)
|
||||||
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
||||||
const struct wpa_ssid_value *ssid,
|
const struct wpa_ssid_value *ssid,
|
||||||
const struct wpabuf *nr, const struct wpabuf *lci,
|
const struct wpabuf *nr, const struct wpabuf *lci,
|
||||||
const struct wpabuf *civic, int stationary)
|
const struct wpabuf *civic, int stationary,
|
||||||
|
u8 bss_parameters)
|
||||||
{
|
{
|
||||||
struct hostapd_neighbor_entry *entry;
|
struct hostapd_neighbor_entry *entry;
|
||||||
|
|
||||||
|
@ -154,6 +155,7 @@ int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
||||||
}
|
}
|
||||||
|
|
||||||
entry->stationary = stationary;
|
entry->stationary = stationary;
|
||||||
|
entry->bss_parameters = bss_parameters;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -313,7 +315,7 @@ void hostapd_neighbor_set_own_report(struct hostapd_data *hapd)
|
||||||
wpabuf_put_u8(nr, center_freq2_idx);
|
wpabuf_put_u8(nr, center_freq2_idx);
|
||||||
|
|
||||||
hostapd_neighbor_set(hapd, hapd->own_addr, &ssid, nr, hapd->iconf->lci,
|
hostapd_neighbor_set(hapd, hapd->own_addr, &ssid, nr, hapd->iconf->lci,
|
||||||
hapd->iconf->civic, hapd->iconf->stationary_ap);
|
hapd->iconf->civic, hapd->iconf->stationary_ap, 0);
|
||||||
|
|
||||||
wpabuf_free(nr);
|
wpabuf_free(nr);
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
|
|
|
@ -17,7 +17,8 @@ int hostapd_neighbor_show(struct hostapd_data *hapd, char *buf, size_t buflen);
|
||||||
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
||||||
const struct wpa_ssid_value *ssid,
|
const struct wpa_ssid_value *ssid,
|
||||||
const struct wpabuf *nr, const struct wpabuf *lci,
|
const struct wpabuf *nr, const struct wpabuf *lci,
|
||||||
const struct wpabuf *civic, int stationary);
|
const struct wpabuf *civic, int stationary,
|
||||||
|
u8 bss_parameters);
|
||||||
void hostapd_neighbor_set_own_report(struct hostapd_data *hapd);
|
void hostapd_neighbor_set_own_report(struct hostapd_data *hapd);
|
||||||
int hostapd_neighbor_remove(struct hostapd_data *hapd, const u8 *bssid,
|
int hostapd_neighbor_remove(struct hostapd_data *hapd, const u8 *bssid,
|
||||||
const struct wpa_ssid_value *ssid);
|
const struct wpa_ssid_value *ssid);
|
||||||
|
|
Loading…
Reference in a new issue