mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-01-03 18:52:47 +01:00
network: remove hotspot specific settings loading
The hotspot module now uses network_info ops 'open'
This commit is contained in:
parent
8242b7e9f3
commit
7313d3bad7
@ -387,98 +387,6 @@ static void hs20_dir_watch_destroy(void *user_data)
|
|||||||
hs20_dir_watch = NULL;
|
hs20_dir_watch = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool match_hessid(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
const struct hs20_config *config = a;
|
|
||||||
const uint8_t *hessid = b;
|
|
||||||
|
|
||||||
if (!memcmp(config->hessid, hessid, 6))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool match_nai_realm(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
const struct hs20_config *config = a;
|
|
||||||
char **realms = (char **)b;
|
|
||||||
|
|
||||||
while (*realms) {
|
|
||||||
if (l_strv_contains(config->nai_realms, *realms))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
realms++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool match_rc(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
const struct hs20_config *config = a;
|
|
||||||
const uint8_t *rc_ie = b;
|
|
||||||
const uint8_t *rc1, *rc2, *rc3;
|
|
||||||
size_t rc1_len, rc2_len, rc3_len;
|
|
||||||
|
|
||||||
if (ie_parse_roaming_consortium_from_data(rc_ie, rc_ie[1] + 2, NULL,
|
|
||||||
&rc1, &rc1_len, &rc2, &rc2_len,
|
|
||||||
&rc3, &rc3_len) < 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* rc1 is guarenteed to be set if the above returns success */
|
|
||||||
if (rc1_len == config->rc_len && !memcmp(rc1, config->rc, rc1_len))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (rc2 && rc2_len == config->rc_len &&
|
|
||||||
!memcmp(rc2, config->rc, rc2_len))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (rc3 && rc1_len == config->rc_len &&
|
|
||||||
!memcmp(rc3, config->rc, rc3_len))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *hs20_find_settings_file(struct network *network)
|
|
||||||
{
|
|
||||||
struct hs20_config *config;
|
|
||||||
const uint8_t *hessid = network_get_hessid(network);
|
|
||||||
char **nai_realms = network_get_nai_realms(network);
|
|
||||||
const uint8_t *rc_ie = network_get_roaming_consortium(network);
|
|
||||||
|
|
||||||
if (!hessid || util_mem_is_zero(hessid, 6)) {
|
|
||||||
l_debug("Network has no HESSID, trying NAI realms");
|
|
||||||
goto try_nai_realms;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = l_queue_find(hs20_settings, match_hessid, hessid);
|
|
||||||
if (config)
|
|
||||||
return config->filename;
|
|
||||||
|
|
||||||
try_nai_realms:
|
|
||||||
if (!nai_realms) {
|
|
||||||
l_debug("Network has no NAI Realms, trying roaming consortium");
|
|
||||||
goto try_roaming_consortium;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = l_queue_find(hs20_settings, match_nai_realm, nai_realms);
|
|
||||||
if (config)
|
|
||||||
return config->filename;
|
|
||||||
|
|
||||||
try_roaming_consortium:
|
|
||||||
if (!rc_ie) {
|
|
||||||
l_debug("Network has no roaming consortium IE");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = l_queue_find(hs20_settings, match_rc, rc_ie);
|
|
||||||
if (config)
|
|
||||||
return config->filename;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint8_t *hs20_get_roaming_consortium(struct network *network,
|
const uint8_t *hs20_get_roaming_consortium(struct network *network,
|
||||||
size_t *len)
|
size_t *len)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,5 @@
|
|||||||
|
|
||||||
struct network;
|
struct network;
|
||||||
|
|
||||||
const char *hs20_find_settings_file(struct network *network);
|
|
||||||
|
|
||||||
const uint8_t *hs20_get_roaming_consortium(struct network *network,
|
const uint8_t *hs20_get_roaming_consortium(struct network *network,
|
||||||
size_t *len);
|
size_t *len);
|
||||||
|
@ -80,21 +80,7 @@ static bool network_settings_load(struct network *network)
|
|||||||
if (network->settings)
|
if (network->settings)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/*
|
if (network->info)
|
||||||
* If this network contains NAI realm info OR we have a Hotspot
|
|
||||||
* provisioning file containing the HESSID we know this is a Hotspot
|
|
||||||
* network.
|
|
||||||
*/
|
|
||||||
if (network->is_hs20 && (network->nai_realms || network->rc_ie ||
|
|
||||||
!util_mem_is_zero(network->hessid, 6))) {
|
|
||||||
network->settings = l_settings_new();
|
|
||||||
|
|
||||||
if (!l_settings_load_from_file(network->settings,
|
|
||||||
hs20_find_settings_file(network))) {
|
|
||||||
l_settings_free(network->settings);
|
|
||||||
network->settings = NULL;
|
|
||||||
}
|
|
||||||
} else if (network->info)
|
|
||||||
network->settings = network_info_open_settings(network->info);
|
network->settings = network_info_open_settings(network->info);
|
||||||
|
|
||||||
return network->settings != NULL;
|
return network->settings != NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user