summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2015-10-26 18:21:18 +0100
committerLubomir Rintel <lkundrak@v3.sk>2015-11-02 20:27:36 +0100
commite9dfdfe9fe586f3fcfaebbf8d6a786b6f6bec03a (patch)
tree0cb37794b4532129f13dc529c4adf92a7a818366
parente603c86926ce48a7dd53b892fe85d506e6322378 (diff)
downloadNetworkManager-lr/stable-privacy-rfc7217.tar.gz
libnm-core: default to ip6.addr-gen-mode=stable-privacylr/stable-privacy-rfc7217
Take a missing value in keyfile/ifcfg-rh as EUI-64 to keep the compatibility with the old conneciton. Nevertheless, the new connections should default to the RFC7217 addresses.
-rw-r--r--libnm-core/nm-keyfile-reader.c15
-rw-r--r--libnm-core/nm-keyfile-writer.c3
-rw-r--r--libnm-core/nm-setting-ip6-config.c4
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c5
4 files changed, 17 insertions, 10 deletions
diff --git a/libnm-core/nm-keyfile-reader.c b/libnm-core/nm-keyfile-reader.c
index d38d37232b..43e2618435 100644
--- a/libnm-core/nm-keyfile-reader.c
+++ b/libnm-core/nm-keyfile-reader.c
@@ -562,20 +562,21 @@ 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;
+ NMSettingIP6ConfigAddrGenMode addr_gen_mode;
const char *setting_name = nm_setting_get_name (setting);
- char *s;
+ gs_free char *s = NULL;
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)) {
+ (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");
+ _("invalid option '%s', use one of [%s]"),
+ s, "eui64,stable-privacy");
+ return;
}
- g_free (s);
- }
+ } else
+ addr_gen_mode = NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64;
g_object_set (G_OBJECT (setting), key, (gint) addr_gen_mode, NULL);
}
diff --git a/libnm-core/nm-keyfile-writer.c b/libnm-core/nm-keyfile-writer.c
index c62138b484..5afee4302d 100644
--- a/libnm-core/nm-keyfile-writer.c
+++ b/libnm-core/nm-keyfile-writer.c
@@ -608,7 +608,8 @@ static KeyWriter key_writers[] = {
static gboolean
can_omit_default_value (NMSetting *setting, const char *property)
{
- if (NM_IS_SETTING_VLAN (setting) && !strcmp (property, NM_SETTING_VLAN_FLAGS))
+ if ( (NM_IS_SETTING_VLAN (setting) && !strcmp (property, NM_SETTING_VLAN_FLAGS))
+ || (NM_IS_SETTING_IP6_CONFIG (setting) && !strcmp (property, NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE)))
return FALSE;
return TRUE;
diff --git a/libnm-core/nm-setting-ip6-config.c b/libnm-core/nm-setting-ip6-config.c
index 104c922cea..bc516d6e70 100644
--- a/libnm-core/nm-setting-ip6-config.c
+++ b/libnm-core/nm-setting-ip6-config.c
@@ -115,7 +115,7 @@ NMSettingIP6ConfigAddrGenMode
nm_setting_ip6_config_get_addr_gen_mode (NMSettingIP6Config *setting)
{
g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting),
- NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64);
+ NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY);
return NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting)->addr_gen_mode;
}
@@ -618,7 +618,7 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *ip6_class)
(object_class, PROP_ADDR_GEN_MODE,
g_param_spec_int (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, "", "",
G_MININT, G_MAXINT,
- NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64,
+ NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS));
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 518b90a897..6ca9b92b09 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -1509,6 +1509,11 @@ make_ip6_setting (shvarFile *ifcfg,
else
PARSE_WARNING ("Invalid IPV6_ADDR_GEN_MODE");
g_free (tmp);
+ } else {
+ g_object_set (s_ip6,
+ NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE,
+ NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64,
+ NULL);
}
/* DNS servers