summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-07-23 17:51:01 +0200
committerThomas Haller <thaller@redhat.com>2020-07-28 16:03:51 +0200
commit99f096577c387a432ede0a0462f312f28220a39d (patch)
tree8809e5c856fd981fc4c9958553f3b18bece87f17
parentd9547e845215a23163c25379de31a17b25db3b30 (diff)
downloadNetworkManager-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.c27
-rw-r--r--src/nm-l3-config-data.h30
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,