diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-10-26 18:00:03 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-11-02 20:27:00 +0100 |
commit | f70c8f3d29afccb526ba890ab9778636166f4b63 (patch) | |
tree | d4100ab4fcf81ff0e1b8c8d2efa5222eff6609de | |
parent | 60811b4809e8cddd4ff3808d7d0c803c11801113 (diff) | |
download | NetworkManager-f70c8f3d29afccb526ba890ab9778636166f4b63.tar.gz |
keyfile: add support for addr-gen-mode property
-rw-r--r-- | libnm-core/nm-keyfile-reader.c | 25 | ||||
-rw-r--r-- | libnm-core/nm-keyfile-writer.c | 21 |
2 files changed, 46 insertions, 0 deletions
diff --git a/libnm-core/nm-keyfile-reader.c b/libnm-core/nm-keyfile-reader.c index c639fc27bc..d38d37232b 100644 --- a/libnm-core/nm-keyfile-reader.c +++ b/libnm-core/nm-keyfile-reader.c @@ -560,6 +560,27 @@ ip6_dns_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key) } 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 mac_address_parser (KeyfileReaderInfo *info, NMSetting *setting, const char *key, gsize enforce_length) { const char *setting_name = nm_setting_get_name (setting); @@ -1177,6 +1198,10 @@ static KeyParser key_parsers[] = { NM_SETTING_IP_CONFIG_DNS, FALSE, 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_MAC_ADDRESS, TRUE, diff --git a/libnm-core/nm-keyfile-writer.c b/libnm-core/nm-keyfile-writer.c index ccf516ea12..c62138b484 100644 --- a/libnm-core/nm-keyfile-writer.c +++ b/libnm-core/nm-keyfile-writer.c @@ -103,6 +103,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 write_ip_values (GKeyFile *file, const char *setting_name, GPtrArray *array, @@ -557,6 +575,9 @@ static KeyWriter key_writers[] = { { NM_SETTING_IP6_CONFIG_SETTING_NAME, NM_SETTING_IP_CONFIG_DNS, 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_SSID, ssid_writer }, |