summaryrefslogtreecommitdiff
path: root/src/platform/nmp-object.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/nmp-object.h')
-rw-r--r--src/platform/nmp-object.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h
index 18c9220ab8..6c0098bfce 100644
--- a/src/platform/nmp-object.h
+++ b/src/platform/nmp-object.h
@@ -339,6 +339,24 @@ NMP_OBJECT_GET_TYPE (const NMPObject *obj)
return obj ? obj->_class->obj_type : NMP_OBJECT_TYPE_UNKNOWN;
}
+#define NMP_OBJECT_CAST_IPX_ROUTE(obj) \
+ ({ \
+ typeof (*(obj)) *_obj = (obj); \
+ _nm_unused const NMPObject *_obj_type_check = _obj; \
+ \
+ nm_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (_obj), NMP_OBJECT_TYPE_IP4_ROUTE, NMP_OBJECT_TYPE_IP6_ROUTE)); \
+ &_obj->ipx_route; \
+ })
+
+#define NMP_OBJECT_CAST_IP_ROUTE(obj) \
+ ({ \
+ typeof (*(obj)) *_obj = (obj); \
+ _nm_unused const NMPObject *_obj_type_check = _obj; \
+ \
+ nm_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (_obj), NMP_OBJECT_TYPE_IP4_ROUTE, NMP_OBJECT_TYPE_IP6_ROUTE)); \
+ &_obj->ip_route; \
+ })
+
#define NMP_OBJECT_CAST_IP4_ROUTE(obj) \
({ \
typeof (*(obj)) *_obj = (obj); \
@@ -623,6 +641,21 @@ nm_platform_lookup_route_visible (NMPlatform *platform,
return nm_platform_lookup (platform, &lookup);
}
+static inline GPtrArray *
+nm_platform_lookup_route_visible_clone (NMPlatform *platform,
+ NMPObjectType obj_type,
+ int ifindex,
+ gboolean with_default,
+ gboolean with_non_default,
+ gboolean (*predicate) (const NMPObject *obj, gpointer user_data),
+ gpointer user_data)
+{
+ NMPLookup lookup;
+
+ nmp_lookup_init_route_visible (&lookup, obj_type, ifindex, with_default, with_non_default);
+ return nm_platform_lookup_clone (platform, &lookup, predicate, user_data);
+}
+
static inline const NMDedupMultiHeadEntry *
nm_platform_lookup_route_by_dest (NMPlatform *platform,
int addr_family,