summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-09-15 15:55:44 +0200
committerThomas Haller <thaller@redhat.com>2020-09-15 16:06:32 +0200
commit81d7009956940292f8035c8007b539deefb7137d (patch)
treeb9e1a77cad02cfd8361d13ae580ef9ef3121760d
parentbe5f7ab7c936c3a0793b238aa22d8d909c517c74 (diff)
downloadNetworkManager-81d7009956940292f8035c8007b539deefb7137d.tar.gz
l3cfg: track ip6_privacy (use_tempaddr) in NML3ConfigData
NMDevice currently configures use_tempaddr sysctl itself. Later, NML3Cfg should do that, so we need to keep track of that as part of the configuration.
-rw-r--r--src/nm-l3-config-data.c32
-rw-r--r--src/nm-l3-config-data.h5
-rw-r--r--src/nm-l3cfg.c2
3 files changed, 39 insertions, 0 deletions
diff --git a/src/nm-l3-config-data.c b/src/nm-l3-config-data.c
index bff22c578f..f5f8d8d0f3 100644
--- a/src/nm-l3-config-data.c
+++ b/src/nm-l3-config-data.c
@@ -123,6 +123,8 @@ struct _NML3ConfigData {
NMTernary metered:3;
+ NMSettingIP6ConfigPrivacy ip6_privacy:4;
+
bool is_sealed:1;
bool has_routes_with_type_local_4_set:1;
@@ -406,6 +408,7 @@ nm_l3_config_data_new (NMDedupMultiIndex *multi_idx,
.route_table_sync_4 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE,
.route_table_sync_6 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE,
.source = NM_IP_CONFIG_SOURCE_UNKNOWN,
+ .ip6_privacy = NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN,
};
_idx_type_init (&self->idx_addresses_4, NMP_OBJECT_TYPE_IP4_ADDRESS);
@@ -1335,6 +1338,31 @@ nm_l3_config_data_set_source (NML3ConfigData *self,
return TRUE;
}
+NMSettingIP6ConfigPrivacy
+nm_l3_config_data_get_ip6_privacy (const NML3ConfigData *self)
+{
+ nm_assert (_NM_IS_L3_CONFIG_DATA (self, FALSE));
+
+ return self->ip6_privacy;
+}
+
+gboolean
+nm_l3_config_data_set_ip6_privacy (NML3ConfigData *self,
+ NMSettingIP6ConfigPrivacy ip6_privacy)
+{
+ nm_assert (_NM_IS_L3_CONFIG_DATA (self, FALSE));
+ nm_assert (NM_IN_SET (ip6_privacy, NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN,
+ NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED,
+ NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR,
+ NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR));
+
+ if (self->ip6_privacy == ip6_privacy)
+ return FALSE;
+ self->ip6_privacy = ip6_privacy;
+ nm_assert (self->ip6_privacy == ip6_privacy);
+ return TRUE;
+}
+
/*****************************************************************************/
NMDhcpLease *
@@ -1480,6 +1508,7 @@ nm_l3_config_data_cmp (const NML3ConfigData *a, const NML3ConfigData *b)
NM_CMP_DIRECT (a->llmnr, b->llmnr);
NM_CMP_DIRECT (a->mtu, b->mtu);
NM_CMP_DIRECT_UNSAFE (a->metered, b->metered);
+ NM_CMP_DIRECT_UNSAFE (a->ip6_privacy, b->ip6_privacy);
NM_CMP_FIELD (a, b, source);
@@ -2250,6 +2279,9 @@ nm_l3_config_data_merge (NML3ConfigData *self,
if (self->metered == NM_TERNARY_DEFAULT)
self->metered = src->metered;
+ if (self->ip6_privacy == NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN)
+ self->ip6_privacy = src->ip6_privacy;
+
if (self->mtu != 0u)
self->mtu = src->mtu;
diff --git a/src/nm-l3-config-data.h b/src/nm-l3-config-data.h
index 2a29fad0df..8ca1d08b04 100644
--- a/src/nm-l3-config-data.h
+++ b/src/nm-l3-config-data.h
@@ -486,6 +486,11 @@ gboolean nm_l3_config_data_set_dns_priority (NML3ConfigData *self,
int addr_family,
int dns_priority);
+NMSettingIP6ConfigPrivacy nm_l3_config_data_get_ip6_privacy (const NML3ConfigData *self);
+
+gboolean nm_l3_config_data_set_ip6_privacy (NML3ConfigData *self,
+ NMSettingIP6ConfigPrivacy ip6_privacy);
+
struct _NMDhcpLease *nm_l3_config_data_get_dhcp_lease (const NML3ConfigData *self,
int addr_family);
diff --git a/src/nm-l3cfg.c b/src/nm-l3cfg.c
index 6de3a95848..55ff83a3b7 100644
--- a/src/nm-l3cfg.c
+++ b/src/nm-l3cfg.c
@@ -2848,6 +2848,8 @@ _platform_commit (NML3Cfg *self,
}
}
+ /* FIXME(l3cfg): need to honor and set nm_l3_config_data_get_ip6_privacy(). */
+
nm_platform_ip_address_sync (self->priv.platform,
addr_family,
self->priv.ifindex,