diff options
author | Thomas Haller <thaller@redhat.com> | 2020-07-23 17:51:01 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-07-28 16:03:51 +0200 |
commit | 99f096577c387a432ede0a0462f312f28220a39d (patch) | |
tree | 8809e5c856fd981fc4c9958553f3b18bece87f17 | |
parent | d9547e845215a23163c25379de31a17b25db3b30 (diff) | |
download | NetworkManager-99f096577c387a432ede0a0462f312f28220a39d.tar.gz |
l3cfg: add flags for NML3ConfigData
Add a flags parameter. That is useful to bundle multiple simple boolean
properties, without need to implement individual accessors.
-rw-r--r-- | src/nm-l3-config-data.c | 27 | ||||
-rw-r--r-- | src/nm-l3-config-data.h | 30 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/nm-l3-config-data.c b/src/nm-l3-config-data.c index 5f66602444..23d2dd0fae 100644 --- a/src/nm-l3-config-data.c +++ b/src/nm-l3-config-data.c @@ -95,6 +95,8 @@ struct _NML3ConfigData { int ref_count; + NML3ConfigDatFlags flags; + bool is_sealed:1; }; @@ -272,6 +274,7 @@ nm_l3_config_data_new (NMDedupMultiIndex *multi_idx, .multi_idx = nm_dedup_multi_index_ref (multi_idx), .mdns = NM_SETTING_CONNECTION_MDNS_DEFAULT, .llmnr = NM_SETTING_CONNECTION_LLMNR_DEFAULT, + .flags = NM_L3_CONFIG_DAT_FLAGS_NONE, }; _idx_type_init (&self->idx_addresses_4, NMP_OBJECT_TYPE_IP4_ADDRESS); @@ -392,6 +395,8 @@ nm_l3_config_data_lookup_objs (const NML3ConfigData *self, NMPObjectType obj_typ return nm_dedup_multi_index_lookup_head (self->multi_idx, &idx->parent, NULL); } +/*****************************************************************************/ + int nm_l3_config_data_get_ifindex (const NML3ConfigData *self) { @@ -402,6 +407,28 @@ nm_l3_config_data_get_ifindex (const NML3ConfigData *self) /*****************************************************************************/ +NML3ConfigDatFlags +nm_l3_config_data_get_flags (const NML3ConfigData *self) +{ + nm_assert (NM_IS_L3_CONFIG_DATA (self, TRUE)); + + return self->flags; +} + +void +nm_l3_config_data_set_flags_full (NML3ConfigData *self, + NML3ConfigDatFlags flags, + NML3ConfigDatFlags mask) +{ + nm_assert (NM_IS_L3_CONFIG_DATA (self, FALSE)); + nm_assert (!NM_FLAGS_ANY (flags, ~mask)); + + self->flags = (self->flags & ~mask) + | (flags & mask); +} + +/*****************************************************************************/ + static gboolean _l3_config_data_add_obj (NMDedupMultiIndex *multi_idx, DedupMultiIdxType *idx_type, diff --git a/src/nm-l3-config-data.h b/src/nm-l3-config-data.h index bafba1aec3..5b81b57e19 100644 --- a/src/nm-l3-config-data.h +++ b/src/nm-l3-config-data.h @@ -8,6 +8,14 @@ #include "nm-setting-ip6-config.h" #include "platform/nm-platform.h" +typedef enum { + NM_L3_CONFIG_DAT_FLAGS_NONE = 0, + + /* if set, then the merge flag NM_L3_CONFIG_MERGE_FLAGS_NO_DEFAULT_ROUTES gets + * ignored during merge. */ + NM_L3_CONFIG_DAT_FLAGS_IGNORE_MERGE_NO_DEFAULT_ROUTES = (1ull << 0), +} NML3ConfigDatFlags; + typedef struct _NML3ConfigData NML3ConfigData; NML3ConfigData *nm_l3_config_data_new (NMDedupMultiIndex *multi_idx, @@ -98,6 +106,28 @@ int nm_l3_config_data_get_ifindex (const NML3ConfigData *self); /*****************************************************************************/ +NML3ConfigDatFlags nm_l3_config_data_get_flags (const NML3ConfigData *self); + +void nm_l3_config_data_set_flags_full (NML3ConfigData *self, + NML3ConfigDatFlags flags, + NML3ConfigDatFlags mask); + +static inline void +nm_l3_config_data_set_flags (NML3ConfigData *self, + NML3ConfigDatFlags flags) +{ + nm_l3_config_data_set_flags_full (self, flags, flags); +} + +static inline void +nm_l3_config_data_unset_flags (NML3ConfigData *self, + NML3ConfigDatFlags flags) +{ + nm_l3_config_data_set_flags_full (self, NM_L3_CONFIG_DAT_FLAGS_NONE, flags); +} + +/*****************************************************************************/ + gboolean nm_l3_config_data_add_address (NML3ConfigData *self, int addr_family, const NMPObject *obj_new, |