mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-02-16 23:40:43 +01:00
network: add roaming consortium IE to network object
This is duplicated when the first scan_bss is added to a network object that contains the IE. Any future BSS's added will not re-add the IE. Its assumed that all BSS's under a network will contain the same roaming consortium OIs.
This commit is contained in:
parent
9dcb6946c5
commit
aeae6abcbb
@ -64,6 +64,7 @@ struct network {
|
|||||||
struct l_queue *blacklist; /* temporary blacklist for BSS's */
|
struct l_queue *blacklist; /* temporary blacklist for BSS's */
|
||||||
uint8_t hessid[6];
|
uint8_t hessid[6];
|
||||||
char **nai_realms;
|
char **nai_realms;
|
||||||
|
uint8_t *rc_ie;
|
||||||
bool update_psk:1; /* Whether PSK should be written to storage */
|
bool update_psk:1; /* Whether PSK should be written to storage */
|
||||||
bool ask_passphrase:1; /* Whether we should force-ask agent */
|
bool ask_passphrase:1; /* Whether we should force-ask agent */
|
||||||
int rank;
|
int rank;
|
||||||
@ -562,6 +563,11 @@ char **network_get_nai_realms(struct network *network)
|
|||||||
return network->nai_realms;
|
return network->nai_realms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint8_t *network_get_roaming_consortium(struct network *network)
|
||||||
|
{
|
||||||
|
return network->rc_ie;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool __bss_is_sae(const struct scan_bss *bss,
|
static inline bool __bss_is_sae(const struct scan_bss *bss,
|
||||||
const struct ie_rsn_info *rsn)
|
const struct ie_rsn_info *rsn)
|
||||||
{
|
{
|
||||||
@ -704,6 +710,9 @@ bool network_bss_add(struct network *network, struct scan_bss *bss)
|
|||||||
if (!util_mem_is_zero(bss->hessid, 6))
|
if (!util_mem_is_zero(bss->hessid, 6))
|
||||||
memcpy(network->hessid, bss->hessid, 6);
|
memcpy(network->hessid, bss->hessid, 6);
|
||||||
|
|
||||||
|
if (bss->rc_ie && !network->rc_ie)
|
||||||
|
network->rc_ie = l_memdup(bss->rc_ie, bss->rc_ie[1] + 2);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1363,6 +1372,9 @@ void network_remove(struct network *network, int reason)
|
|||||||
if (network->nai_realms)
|
if (network->nai_realms)
|
||||||
l_strv_free(network->nai_realms);
|
l_strv_free(network->nai_realms);
|
||||||
|
|
||||||
|
if (network->rc_ie)
|
||||||
|
l_free(network->rc_ie);
|
||||||
|
|
||||||
l_free(network);
|
l_free(network);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ void network_set_hessid(struct network *network, uint8_t *hessid);
|
|||||||
void network_set_nai_realms(struct network *network, char **realms);
|
void network_set_nai_realms(struct network *network, char **realms);
|
||||||
uint8_t *network_get_hessid(struct network *network);
|
uint8_t *network_get_hessid(struct network *network);
|
||||||
char **network_get_nai_realms(struct network *network);
|
char **network_get_nai_realms(struct network *network);
|
||||||
|
const uint8_t *network_get_roaming_consortium(struct network *network);
|
||||||
|
|
||||||
int network_autoconnect(struct network *network, struct scan_bss *bss);
|
int network_autoconnect(struct network *network, struct scan_bss *bss);
|
||||||
void network_connect_failed(struct network *network);
|
void network_connect_failed(struct network *network);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user