summaryrefslogtreecommitdiff
path: root/src/nm-ip4-config.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-ip4-config.h')
-rw-r--r--src/nm-ip4-config.h72
1 files changed, 54 insertions, 18 deletions
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index ec525526d2..1c5222df43 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -160,7 +160,7 @@ int nm_ip4_config_get_ifindex (const NMIP4Config *self);
NMDedupMultiIndex *nm_ip4_config_get_multi_idx (const NMIP4Config *self);
-NMIP4Config *nm_ip4_config_capture (NMDedupMultiIndex *multi_idx, NMPlatform *platform, int ifindex, gboolean capture_resolv_conf);
+NMIP4Config *nm_ip4_config_capture (NMDedupMultiIndex *multi_idx, NMPlatform *platform, int ifindex);
void nm_ip4_config_add_dependent_routes (NMIP4Config *self,
guint32 route_table,
@@ -397,6 +397,26 @@ nm_ip_config_add_address (NMIPConfig *self, const NMPlatformIPAddress *address)
_NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_add_address, nm_ip6_config_add_address, (gconstpointer) address);
}
+static inline void
+nm_ip_config_reset_addresses (NMIPConfig *self)
+{
+ _NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_reset_addresses, nm_ip6_config_reset_addresses);
+}
+
+static inline void
+nm_ip_config_add_route (NMIPConfig *self,
+ const NMPlatformIPRoute *new,
+ const NMPObject **out_obj_new)
+{
+ _NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_add_route, nm_ip6_config_add_route, (gpointer) new, out_obj_new);
+}
+
+static inline void
+nm_ip_config_reset_routes (NMIPConfig *self)
+{
+ _NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_reset_routes, nm_ip6_config_reset_routes);
+}
+
static inline int
nm_ip_config_get_dns_priority (const NMIPConfig *self)
{
@@ -404,6 +424,12 @@ nm_ip_config_get_dns_priority (const NMIPConfig *self)
}
static inline void
+nm_ip_config_set_dns_priority (NMIPConfig *self, gint priority)
+{
+ _NM_IP_CONFIG_DISPATCH_VOID (self, nm_ip4_config_set_dns_priority, nm_ip6_config_set_dns_priority, priority);
+}
+
+static inline void
nm_ip_config_add_nameserver (NMIPConfig *self, const NMIPAddr *ns)
{
_NM_IP_CONFIG_DISPATCH_VOID (self, _nm_ip4_config_add_nameserver, nm_ip6_config_add_nameserver, (gconstpointer) ns);
@@ -475,18 +501,17 @@ nm_ip_config_get_dns_option (const NMIPConfig *self, guint i)
_NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_dns_option, nm_ip6_config_get_dns_option, i);
}
-#define _NM_IP_CONFIG_DISPATCH_SET_OP(dst, src, v4_func, v6_func, ...) \
+#define _NM_IP_CONFIG_DISPATCH_SET_OP(_return, dst, src, v4_func, v6_func, ...) \
G_STMT_START { \
gpointer _dst = (dst); \
gconstpointer _src = (src); \
- int family = nm_ip_config_get_addr_family (_dst); \
\
- nm_assert (family == nm_ip_config_get_addr_family (_src)); \
- if (family == AF_INET) { \
- v4_func ((NMIP4Config *) _dst, (const NMIP4Config *) _src, ##__VA_ARGS__); \
+ if (NM_IS_IP4_CONFIG (_dst)) { \
+ nm_assert (NM_IS_IP4_CONFIG (_src)); \
+ _return v4_func ((NMIP4Config *) _dst, (const NMIP4Config *) _src, ##__VA_ARGS__); \
} else { \
- nm_assert (family == AF_INET6); \
- v6_func ((NMIP6Config *) _dst, (const NMIP6Config *) _src, ##__VA_ARGS__); \
+ nm_assert (NM_IS_IP6_CONFIG (_src)); \
+ _return v6_func ((NMIP6Config *) _dst, (const NMIP6Config *) _src, ##__VA_ARGS__); \
} \
} G_STMT_END
@@ -495,7 +520,7 @@ nm_ip_config_intersect (NMIPConfig *dst,
const NMIPConfig *src,
guint32 default_route_metric_penalty)
{
- _NM_IP_CONFIG_DISPATCH_SET_OP (dst, src,
+ _NM_IP_CONFIG_DISPATCH_SET_OP (, dst, src,
nm_ip4_config_intersect,
nm_ip6_config_intersect,
default_route_metric_penalty);
@@ -506,7 +531,7 @@ nm_ip_config_subtract (NMIPConfig *dst,
const NMIPConfig *src,
guint32 default_route_metric_penalty)
{
- _NM_IP_CONFIG_DISPATCH_SET_OP (dst, src,
+ _NM_IP_CONFIG_DISPATCH_SET_OP (, dst, src,
nm_ip4_config_subtract,
nm_ip6_config_subtract,
default_route_metric_penalty);
@@ -518,30 +543,41 @@ nm_ip_config_merge (NMIPConfig *dst,
NMIPConfigMergeFlags merge_flags,
guint32 default_route_metric_penalty)
{
- _NM_IP_CONFIG_DISPATCH_SET_OP (dst, src,
+ _NM_IP_CONFIG_DISPATCH_SET_OP (, dst, src,
nm_ip4_config_merge,
nm_ip6_config_merge,
merge_flags,
default_route_metric_penalty);
}
+static inline gboolean
+nm_ip_config_replace (NMIPConfig *dst,
+ const NMIPConfig *src,
+ gboolean *relevant_changes)
+{
+ _NM_IP_CONFIG_DISPATCH_SET_OP (return, dst, src,
+ nm_ip4_config_replace,
+ nm_ip6_config_replace,
+ relevant_changes);
+}
+
static inline NMIPConfig *
nm_ip_config_intersect_alloc (const NMIPConfig *a,
const NMIPConfig *b,
guint32 default_route_metric_penalty)
{
- int family;
-
- family = nm_ip_config_get_addr_family (a);
- nm_assert (family == nm_ip_config_get_addr_family (b));
-
- if (family == AF_INET)
+ if (NM_IS_IP4_CONFIG (a)) {
+ nm_assert (NM_IS_IP4_CONFIG (b));
return (NMIPConfig *) nm_ip4_config_intersect_alloc ((const NMIP4Config *) a,
(const NMIP4Config *) b,
default_route_metric_penalty);
- else
+ } else {
+ nm_assert (NM_IS_IP6_CONFIG (a));
+ nm_assert (NM_IS_IP6_CONFIG (b));
return (NMIPConfig *) nm_ip6_config_intersect_alloc ((const NMIP6Config *) a,
(const NMIP6Config *) b,
default_route_metric_penalty);
+ }
}
+
#endif /* __NETWORKMANAGER_IP4_CONFIG_H__ */