diff options
author | Thomas Haller <thaller@redhat.com> | 2020-07-30 18:34:50 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-08-05 12:47:55 +0200 |
commit | 60ad076094c79c44d456b26e9bad4781bdf71c72 (patch) | |
tree | 353fea949a0064ec638a12ae6eb3b9921a08f1cd | |
parent | 9798a90d539318e9b651a1ed0f1bb8ba847d7feb (diff) | |
download | NetworkManager-60ad076094c79c44d456b26e9bad4781bdf71c72.tar.gz |
l3cfg: add nm_l3_config_data_set_source()
It's useful to have a NML3ConfigData track the source.
Previously, NMIP4Config tracks the source per MTU. But the
source really belongs to the entire setting.
-rw-r--r-- | src/nm-l3-config-data.c | 20 | ||||
-rw-r--r-- | src/nm-l3-config-data.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/nm-l3-config-data.c b/src/nm-l3-config-data.c index 3391f77bd3..14fb774987 100644 --- a/src/nm-l3-config-data.c +++ b/src/nm-l3-config-data.c @@ -109,6 +109,8 @@ struct _NML3ConfigData { NML3ConfigDatFlags flags; + NMIPConfigSource source; + guint32 mtu; NMTernary metered:3; @@ -376,6 +378,7 @@ nm_l3_config_data_new (NMDedupMultiIndex *multi_idx, .metered = NM_TERNARY_DEFAULT, .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, }; _idx_type_init (&self->idx_addresses_4, NMP_OBJECT_TYPE_IP4_ADDRESS); @@ -1114,6 +1117,19 @@ nm_l3_config_data_set_mtu (NML3ConfigData *self, return TRUE; } +gboolean +nm_l3_config_data_set_source (NML3ConfigData *self, + NMIPConfigSource source) +{ + nm_assert (_NM_IS_L3_CONFIG_DATA (self, FALSE)); + + if (self->source == source) + return FALSE; + + self->source = source; + return TRUE; +} + /*****************************************************************************/ static int @@ -1197,6 +1213,8 @@ nm_l3_config_data_cmp (const NML3ConfigData *a, const NML3ConfigData *b) NM_CMP_DIRECT (a->mtu, b->mtu); NM_CMP_DIRECT_UNSAFE (a->metered, b->metered); + NM_CMP_FIELD (a, b, source); + /* these fields are not considered by cmp(): * * - multi_idx @@ -1914,6 +1932,8 @@ _init_merge (NML3ConfigData *self, self->mtu = src->mtu; self->flags |= NM_L3_CONFIG_DAT_FLAGS_HAS_MTU; } + + /* self->source does not get merged. */ } NML3ConfigData * diff --git a/src/nm-l3-config-data.h b/src/nm-l3-config-data.h index c7830c656f..1c00457736 100644 --- a/src/nm-l3-config-data.h +++ b/src/nm-l3-config-data.h @@ -235,6 +235,9 @@ nm_l3_config_data_unset_flags (NML3ConfigData *self, /*****************************************************************************/ +gboolean nm_l3_config_data_set_source (NML3ConfigData *self, + NMIPConfigSource source); + gboolean nm_l3_config_data_add_address_full (NML3ConfigData *self, int addr_family, const NMPObject *obj_new, |