diff options
author | Thomas Haller <thaller@redhat.com> | 2020-04-22 10:35:16 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-04-22 10:52:59 +0200 |
commit | e8b86f8445cd621c21ccf87833f4c49c74c325d9 (patch) | |
tree | 648b11492b42e8b7a9dd9e868e64f1eb6150807f | |
parent | b2a5b179fd131161925a7f2bea1c6b0a973b1a8e (diff) | |
download | NetworkManager-e8b86f8445cd621c21ccf87833f4c49c74c325d9.tar.gz |
core: add NMIPConfigFlags for NMIPConfig flags
This will be useful to set future options on the NMIPConfig.
Yes, the code duplication of NMIP[46]Config is horrible. Needs
to be unified in the future.
-rw-r--r-- | src/nm-ip4-config.c | 23 | ||||
-rw-r--r-- | src/nm-ip4-config.h | 19 | ||||
-rw-r--r-- | src/nm-ip6-config.c | 23 | ||||
-rw-r--r-- | src/nm-ip6-config.h | 5 |
4 files changed, 70 insertions, 0 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index ae637aeedc..8c16d0bfae 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -303,6 +303,7 @@ typedef struct { NMIPConfigDedupMultiIdxType idx_ip4_routes_; NMDedupMultiIdxType idx_ip4_routes; }; + NMIPConfigFlags config_flags; } NMIP4ConfigPrivate; struct _NMIP4Config { @@ -2659,6 +2660,28 @@ nm_ip4_config_llmnr_set (NMIP4Config *self, /*****************************************************************************/ +NMIPConfigFlags +nm_ip4_config_get_config_flags (const NMIP4Config *self) +{ + return NM_IP4_CONFIG_GET_PRIVATE (self)->config_flags; +} + +void +nm_ip4_config_set_config_flags (NMIP4Config *self, NMIPConfigFlags flags, NMIPConfigFlags mask) +{ + NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (self); + + if (mask == 0) { + /* for convenience, accept 0 mask to set any flags. */ + mask = flags; + } + + nm_assert (!NM_FLAGS_ANY (flags, ~mask)); + priv->config_flags = (flags & mask) | (priv->config_flags & ~mask); +} + +/*****************************************************************************/ + void nm_ip4_config_set_dns_priority (NMIP4Config *self, int priority) { diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index 01a42e5464..b2845da3bb 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -15,6 +15,10 @@ /*****************************************************************************/ +typedef enum _NMIPConfigFlags { + NM_IP_CONFIG_FLAG_NONE = 0, +} NMIPConfigFlags; + typedef struct { NMDedupMultiIdxType parent; NMPObjectType obj_type; @@ -196,6 +200,9 @@ NMSettingConnectionLlmnr nm_ip4_config_llmnr_get (const NMIP4Config *self); void nm_ip4_config_llmnr_set (NMIP4Config *self, NMSettingConnectionLlmnr llmnr); +void nm_ip4_config_set_config_flags (NMIP4Config *self, NMIPConfigFlags flags, NMIPConfigFlags mask); +NMIPConfigFlags nm_ip4_config_get_config_flags (const NMIP4Config *self); + const NMDedupMultiHeadEntry *nm_ip4_config_lookup_addresses (const NMIP4Config *self); void nm_ip4_config_reset_addresses (NMIP4Config *self); void nm_ip4_config_add_address (NMIP4Config *self, const NMPlatformIP4Address *address); @@ -513,6 +520,18 @@ nm_ip_config_best_default_route_get (const NMIPConfig *self) _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_best_default_route_get, nm_ip6_config_best_default_route_get); } +static inline NMIPConfigFlags +nm_ip_config_get_config_flags (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_config_flags, nm_ip6_config_get_config_flags); +} + +static inline void +nm_ip_config_set_config_flags (NMIPConfig *self, NMIPConfigFlags flags, NMIPConfigFlags mask) +{ + _NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_set_config_flags, nm_ip6_config_set_config_flags, flags, mask); +} + #define _NM_IP_CONFIG_DISPATCH_SET_OP(_return, dst, src, v4_func, v6_func, ...) \ G_STMT_START { \ gpointer _dst = (dst); \ diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 5acb3932d0..3f2c465bda 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -63,6 +63,7 @@ typedef struct { NMIPConfigDedupMultiIdxType idx_ip6_routes_; NMDedupMultiIdxType idx_ip6_routes; }; + NMIPConfigFlags config_flags; bool ipv6_disabled; } NMIP6ConfigPrivate; @@ -2296,6 +2297,28 @@ nm_ip6_config_get_dns_option (const NMIP6Config *self, guint i) /*****************************************************************************/ +NMIPConfigFlags +nm_ip6_config_get_config_flags (const NMIP6Config *self) +{ + return NM_IP6_CONFIG_GET_PRIVATE (self)->config_flags; +} + +void +nm_ip6_config_set_config_flags (NMIP6Config *self, NMIPConfigFlags flags, NMIPConfigFlags mask) +{ + NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (self); + + if (mask == 0) { + /* for convenience, accept 0 mask to set any flags. */ + mask = flags; + } + + nm_assert (!NM_FLAGS_ANY (flags, ~mask)); + priv->config_flags = (flags & mask) | (priv->config_flags & ~mask); +} + +/*****************************************************************************/ + void nm_ip6_config_set_dns_priority (NMIP6Config *self, int priority) { diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h index a9fa8f14a0..36e8518a86 100644 --- a/src/nm-ip6-config.h +++ b/src/nm-ip6-config.h @@ -128,6 +128,11 @@ gboolean nm_ip6_config_replace (NMIP6Config *dst, const NMIP6Config *src, gboole const NMPObject *nm_ip6_config_best_default_route_get (const NMIP6Config *self); const NMPObject *_nm_ip6_config_best_default_route_find (const NMIP6Config *self); +enum _NMIPConfigFlags; + +void nm_ip6_config_set_config_flags (NMIP6Config *self, enum _NMIPConfigFlags flags, enum _NMIPConfigFlags mask); +enum _NMIPConfigFlags nm_ip6_config_get_config_flags (const NMIP6Config *self); + const NMDedupMultiHeadEntry *nm_ip6_config_lookup_addresses (const NMIP6Config *self); void nm_ip6_config_reset_addresses (NMIP6Config *self); void nm_ip6_config_add_address (NMIP6Config *self, const NMPlatformIP6Address *address); |