diff options
Diffstat (limited to 'src/nm-ip4-config.c')
| -rw-r--r-- | src/nm-ip4-config.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index ae637aee..0feb7b2c 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 { @@ -1202,7 +1203,8 @@ nm_ip4_config_merge (NMIP4Config *dst, nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, src, &r_src) { if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT (r_src)) { - if (NM_FLAGS_HAS (merge_flags, NM_IP_CONFIG_MERGE_NO_DEFAULT_ROUTES)) + if ( NM_FLAGS_HAS (merge_flags, NM_IP_CONFIG_MERGE_NO_DEFAULT_ROUTES) + && !NM_FLAGS_HAS (src_priv->config_flags, NM_IP_CONFIG_FLAGS_IGNORE_MERGE_NO_DEFAULT_ROUTES)) continue; if (default_route_metric_penalty) { NMPlatformIP4Route r = *r_src; @@ -2659,6 +2661,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) { |