keyfile: add support for addr-gen-mode property
This commit is contained in:
@@ -559,6 +559,27 @@ ip6_dns_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key)
|
|||||||
g_strfreev (list);
|
g_strfreev (list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ip6_addr_gen_mode_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key)
|
||||||
|
{
|
||||||
|
NMSettingIP6ConfigAddrGenMode addr_gen_mode = NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64;
|
||||||
|
const char *setting_name = nm_setting_get_name (setting);
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
s = nm_keyfile_plugin_kf_get_string (info->keyfile, setting_name, key, NULL);
|
||||||
|
if (s) {
|
||||||
|
if (!nm_utils_enum_from_str (nm_setting_ip6_config_addr_gen_mode_get_type (), s,
|
||||||
|
(int *) &addr_gen_mode, NULL)) {
|
||||||
|
handle_warn (info, key, NM_KEYFILE_WARN_SEVERITY_WARN,
|
||||||
|
_("invalid option '%s', use one of [%s]"),
|
||||||
|
s, "eui64,stable-privacy");
|
||||||
|
}
|
||||||
|
g_free (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_set (G_OBJECT (setting), key, (gint) addr_gen_mode, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mac_address_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key, gsize enforce_length)
|
mac_address_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key, gsize enforce_length)
|
||||||
{
|
{
|
||||||
@@ -1177,6 +1198,10 @@ static KeyParser key_parsers[] = {
|
|||||||
NM_SETTING_IP_CONFIG_DNS,
|
NM_SETTING_IP_CONFIG_DNS,
|
||||||
FALSE,
|
FALSE,
|
||||||
ip6_dns_parser },
|
ip6_dns_parser },
|
||||||
|
{ NM_SETTING_IP6_CONFIG_SETTING_NAME,
|
||||||
|
NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE,
|
||||||
|
FALSE,
|
||||||
|
ip6_addr_gen_mode_parser },
|
||||||
{ NM_SETTING_WIRED_SETTING_NAME,
|
{ NM_SETTING_WIRED_SETTING_NAME,
|
||||||
NM_SETTING_WIRED_MAC_ADDRESS,
|
NM_SETTING_WIRED_MAC_ADDRESS,
|
||||||
TRUE,
|
TRUE,
|
||||||
|
@@ -102,6 +102,24 @@ dns_writer (KeyfileWriterInfo *info,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ip6_addr_gen_mode_writer (KeyfileWriterInfo *info,
|
||||||
|
NMSetting *setting,
|
||||||
|
const char *key,
|
||||||
|
const GValue *value)
|
||||||
|
{
|
||||||
|
NMSettingIP6ConfigAddrGenMode addr_gen_mode;
|
||||||
|
const char *str;
|
||||||
|
|
||||||
|
addr_gen_mode = (NMSettingIP6ConfigAddrGenMode) g_value_get_int (value);
|
||||||
|
str = nm_utils_enum_to_str (nm_setting_ip6_config_addr_gen_mode_get_type (),
|
||||||
|
addr_gen_mode);
|
||||||
|
nm_keyfile_plugin_kf_set_string (info->keyfile,
|
||||||
|
nm_setting_get_name (setting),
|
||||||
|
key,
|
||||||
|
str);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_ip_values (GKeyFile *file,
|
write_ip_values (GKeyFile *file,
|
||||||
const char *setting_name,
|
const char *setting_name,
|
||||||
@@ -557,6 +575,9 @@ static KeyWriter key_writers[] = {
|
|||||||
{ NM_SETTING_IP6_CONFIG_SETTING_NAME,
|
{ NM_SETTING_IP6_CONFIG_SETTING_NAME,
|
||||||
NM_SETTING_IP_CONFIG_DNS,
|
NM_SETTING_IP_CONFIG_DNS,
|
||||||
dns_writer },
|
dns_writer },
|
||||||
|
{ NM_SETTING_IP6_CONFIG_SETTING_NAME,
|
||||||
|
NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE,
|
||||||
|
ip6_addr_gen_mode_writer },
|
||||||
{ NM_SETTING_WIRELESS_SETTING_NAME,
|
{ NM_SETTING_WIRELESS_SETTING_NAME,
|
||||||
NM_SETTING_WIRELESS_SSID,
|
NM_SETTING_WIRELESS_SSID,
|
||||||
ssid_writer },
|
ssid_writer },
|
||||||
|
Reference in New Issue
Block a user