diff options
author | Thomas Haller <thaller@redhat.com> | 2020-09-15 15:55:44 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-09-15 16:06:32 +0200 |
commit | 81d7009956940292f8035c8007b539deefb7137d (patch) | |
tree | b9e1a77cad02cfd8361d13ae580ef9ef3121760d | |
parent | be5f7ab7c936c3a0793b238aa22d8d909c517c74 (diff) | |
download | NetworkManager-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.c | 32 | ||||
-rw-r--r-- | src/nm-l3-config-data.h | 5 | ||||
-rw-r--r-- | src/nm-l3cfg.c | 2 |
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, |