diff --git a/src/knownnetworks.c b/src/knownnetworks.c index fc810057..6f65d2b3 100644 --- a/src/knownnetworks.c +++ b/src/knownnetworks.c @@ -123,6 +123,17 @@ void __network_config_parse(const struct l_settings *settings, l_strfreev(modes); } + + if (l_settings_has_key(settings, NET_USE_DEFAULT_ECC_GROUP)) { + if (l_settings_get_bool(settings, + NET_USE_DEFAULT_ECC_GROUP, &b)) { + config->ecc_group = b ? KNOWN_NETWORK_ECC_GROUP_DEFAULT + : KNOWN_NETWORK_ECC_GROUP_MOST_SECURE; + } else + l_warn("[%s].%s is not a boolean value", + NET_USE_DEFAULT_ECC_GROUP); + } else + config->ecc_group = KNOWN_NETWORK_ECC_GROUP_AUTO; } void __network_info_init(struct network_info *info, diff --git a/src/knownnetworks.h b/src/knownnetworks.h index 741d42ed..c81bd9aa 100644 --- a/src/knownnetworks.h +++ b/src/knownnetworks.h @@ -27,6 +27,7 @@ #define NET_ADDRESS_OVERRIDE SETTINGS, "AddressOverride" #define NET_TRANSITION_DISABLE SETTINGS, "TransitionDisable" #define NET_TRANSITION_DISABLE_MODES SETTINGS, "DisabledTransitionModes" +#define NET_USE_DEFAULT_ECC_GROUP SETTINGS, "UseDefaultEccGroup" enum security; struct scan_freq_set; @@ -38,6 +39,12 @@ enum known_networks_event { KNOWN_NETWORKS_EVENT_UPDATED, }; +enum known_network_ecc_group { + KNOWN_NETWORK_ECC_GROUP_AUTO = 0, + KNOWN_NETWORK_ECC_GROUP_DEFAULT, + KNOWN_NETWORK_ECC_GROUP_MOST_SECURE, +}; + struct network_info_ops { struct l_settings *(*open)(struct network_info *info); int (*touch)(struct network_info *info); @@ -72,6 +79,7 @@ struct network_config { uint8_t sta_addr[6]; bool have_transition_disable : 1; uint8_t transition_disable; + enum known_network_ecc_group ecc_group; }; struct network_info {