summary refs log tree commit diff
path: root/src/core/platform/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/platform/tests')
-rw-r--r--src/core/platform/tests/test-address.c26
-rw-r--r--src/core/platform/tests/test-cleanup.c12
-rw-r--r--src/core/platform/tests/test-common.c134
-rw-r--r--src/core/platform/tests/test-common.h88
-rw-r--r--src/core/platform/tests/test-link.c136
-rw-r--r--src/core/platform/tests/test-nmp-object.c52
-rw-r--r--src/core/platform/tests/test-platform-general.c42
-rw-r--r--src/core/platform/tests/test-route.c388
-rw-r--r--src/core/platform/tests/test-tc.c24
9 files changed, 493 insertions, 409 deletions
diff --git a/src/core/platform/tests/test-address.c b/src/core/platform/tests/test-address.c
index 4e1d1d6e..700891e8 100644
--- a/src/core/platform/tests/test-address.c
+++ b/src/core/platform/tests/test-address.c
@@ -20,12 +20,12 @@
 /*****************************************************************************/
 
 static void
-ip4_address_callback(NMPlatform *               platform,
+ip4_address_callback(NMPlatform                *platform,
                      NMPObjectType              obj_type,
                      int                        ifindex,
-                     NMPlatformIP4Address *     received,
+                     NMPlatformIP4Address      *received,
                      NMPlatformSignalChangeType change_type,
-                     SignalData *               data)
+                     SignalData                *data)
 {
     g_assert(received);
     g_assert_cmpint(received->ifindex, ==, ifindex);
@@ -45,12 +45,12 @@ ip4_address_callback(NMPlatform *               platform,
 }
 
 static void
-ip6_address_callback(NMPlatform *               platform,
+ip6_address_callback(NMPlatform                *platform,
                      NMPObjectType              obj_type,
                      int                        ifindex,
-                     NMPlatformIP6Address *     received,
+                     NMPlatformIP6Address      *received,
                      NMPlatformSignalChangeType change_type,
-                     SignalData *               data)
+                     SignalData                *data)
 {
     g_assert(received);
     g_assert_cmpint(received->ifindex, ==, ifindex);
@@ -87,7 +87,7 @@ test_ip4_address_general(void)
                                                      NM_PLATFORM_SIGNAL_REMOVED,
                                                      ip4_address_callback,
                                                      ifindex);
-    GArray *    addresses;
+    GArray     *addresses;
     NMPlatformIP4Address *address;
     in_addr_t             addr;
     guint32               lifetime  = 2000;
@@ -154,7 +154,7 @@ test_ip6_address_general(void)
                                                      NM_PLATFORM_SIGNAL_REMOVED,
                                                      ip6_address_callback,
                                                      ifindex);
-    GArray *    addresses;
+    GArray     *addresses;
     NMPlatformIP6Address *address;
     struct in6_addr       addr;
     guint32               lifetime  = 2000;
@@ -258,10 +258,10 @@ static void
 test_ip6_address_general_2(void)
 {
     const int       ifindex         = DEVICE_IFINDEX;
-    SignalData *    address_added   = add_signal(NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
+    SignalData     *address_added   = add_signal(NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
                                            NM_PLATFORM_SIGNAL_ADDED,
                                            ip6_address_callback);
-    SignalData *    address_removed = add_signal(NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
+    SignalData     *address_removed = add_signal(NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
                                              NM_PLATFORM_SIGNAL_REMOVED,
                                              ip6_address_callback);
     struct in6_addr addr;
@@ -307,10 +307,10 @@ static void
 test_ip4_address_peer(void)
 {
     const int                   ifindex         = DEVICE_IFINDEX;
-    SignalData *                address_added   = add_signal(NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED,
+    SignalData                 *address_added   = add_signal(NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED,
                                            NM_PLATFORM_SIGNAL_ADDED,
                                            ip4_address_callback);
-    SignalData *                address_removed = add_signal(NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED,
+    SignalData                 *address_removed = add_signal(NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED,
                                              NM_PLATFORM_SIGNAL_REMOVED,
                                              ip4_address_callback);
     in_addr_t                   addr, addr_peer, addr_peer2;
@@ -387,7 +387,7 @@ test_ip4_address_peer_zero(void)
     const char *label     = NULL;
     in_addr_t   peers[3], r_peers[3];
     int         i;
-    GArray *    addrs;
+    GArray     *addrs;
 
     g_assert(ifindex > 0);
 
diff --git a/src/core/platform/tests/test-cleanup.c b/src/core/platform/tests/test-cleanup.c
index e13bb8c8..2198e921 100644
--- a/src/core/platform/tests/test-cleanup.c
+++ b/src/core/platform/tests/test-cleanup.c
@@ -10,15 +10,15 @@
 static void
 test_cleanup_internal(void)
 {
-    SignalData *    link_added = add_signal_ifname(NM_PLATFORM_SIGNAL_LINK_CHANGED,
+    SignalData     *link_added = add_signal_ifname(NM_PLATFORM_SIGNAL_LINK_CHANGED,
                                                NM_PLATFORM_SIGNAL_ADDED,
                                                link_callback,
                                                DEVICE_NAME);
     int             ifindex;
-    GArray *        addresses4;
-    GArray *        addresses6;
-    GPtrArray *     routes4;
-    GPtrArray *     routes6;
+    GArray         *addresses4;
+    GArray         *addresses6;
+    GPtrArray      *routes4;
+    GPtrArray      *routes6;
     in_addr_t       addr4;
     in_addr_t       network4;
     int             plen4 = 24;
@@ -55,7 +55,7 @@ test_cleanup_internal(void)
 
     /* wait for kernel to add the IPv6 link local address... it takes a bit. */
     NMTST_WAIT_ASSERT(300, {
-        gs_unref_array GArray *     addrs = NULL;
+        gs_unref_array GArray      *addrs = NULL;
         const NMPlatformIP6Address *a;
 
         if (nmtst_wait_iteration > 0) {
diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c
index 4f56a3a7..9053d351 100644
--- a/src/core/platform/tests/test-common.c
+++ b/src/core/platform/tests/test-common.c
@@ -94,7 +94,7 @@ nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family,
     const int                  IS_IPv4 = NM_IS_IPv4(addr_family);
     const NMPlatformIPAddress *found   = NULL;
     NMDedupMultiIter           iter;
-    const NMPObject *          obj;
+    const NMPObject           *obj;
     NMPLookup                  lookup;
 
     g_assert(NM_IS_PLATFORM(self));
@@ -102,7 +102,11 @@ nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family,
     nm_assert_addr_family(addr_family);
     nm_assert(addr);
 
-    nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex);
+    if (ifindex > 0)
+        nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex);
+    else
+        nmp_lookup_init_obj_type(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4));
+
     nm_platform_iter_obj_for_each (&iter, self, &lookup, &obj) {
         const NMPlatformIPAddress *a = NMP_OBJECT_CAST_IP_ADDRESS(obj);
 
@@ -132,9 +136,9 @@ typedef struct {
 } IPAddressesAssertData;
 
 void
-_nmtstp_platform_ip_addresses_assert(const char *       filename,
+_nmtstp_platform_ip_addresses_assert(const char        *filename,
                                      int                lineno,
-                                     NMPlatform *       self,
+                                     NMPlatform        *self,
                                      int                ifindex,
                                      gboolean           force_exact_4,
                                      gboolean           force_exact_6,
@@ -176,8 +180,8 @@ _nmtstp_platform_ip_addresses_assert(const char *       filename,
     }
 
     for (IS_IPv4 = 1; IS_IPv4 >= 0; IS_IPv4--) {
-        const int         addr_family           = IS_IPv4 ? AF_INET : AF_INET6;
-        gs_unref_ptrarray GPtrArray *plat_addrs = NULL;
+        const int                    addr_family = IS_IPv4 ? AF_INET : AF_INET6;
+        gs_unref_ptrarray GPtrArray *plat_addrs  = NULL;
         NMPLookup                    lookup;
         guint                        j;
 
@@ -282,7 +286,7 @@ nmtstp_platform_ip4_route_delete(NMPlatform *platform,
 }
 
 gboolean
-nmtstp_platform_ip6_route_delete(NMPlatform *    platform,
+nmtstp_platform_ip6_route_delete(NMPlatform     *platform,
                                  int             ifindex,
                                  struct in6_addr network,
                                  guint8          plen,
@@ -311,11 +315,11 @@ nmtstp_platform_ip6_route_delete(NMPlatform *    platform,
 /*****************************************************************************/
 
 SignalData *
-add_signal_full(const char *               name,
+add_signal_full(const char                *name,
                 NMPlatformSignalChangeType change_type,
                 GCallback                  callback,
                 int                        ifindex,
-                const char *               ifname)
+                const char                *ifname)
 {
     SignalData *data = g_new0(SignalData, 1);
 
@@ -448,18 +452,18 @@ _free_signal(const char *file, int line, const char *func, SignalData *data)
 }
 
 void
-link_callback(NMPlatform *    platform,
+link_callback(NMPlatform     *platform,
               int             obj_type_i,
               int             ifindex,
               NMPlatformLink *received,
               int             change_type_i,
-              SignalData *    data)
+              SignalData     *data)
 {
     const NMPObjectType              obj_type    = obj_type_i;
     const NMPlatformSignalChangeType change_type = change_type_i;
     NMPLookup                        lookup;
     NMDedupMultiIter                 iter;
-    const NMPlatformLink *           cached;
+    const NMPlatformLink            *cached;
 
     g_assert_cmpint(obj_type, ==, NMP_OBJECT_TYPE_LINK);
     g_assert(received);
@@ -522,11 +526,11 @@ _ip4_route_get(NMPlatform *platform,
                int         plen,
                guint32     metric,
                guint8      tos,
-               guint *     out_c_exists)
+               guint      *out_c_exists)
 {
     NMDedupMultiIter          iter;
     NMPLookup                 lookup;
-    const NMPObject *         o = NULL;
+    const NMPObject          *o = NULL;
     guint                     c;
     const NMPlatformIP4Route *r = NULL;
 
@@ -606,18 +610,18 @@ nmtstp_ip4_route_get(NMPlatform *platform,
 /*****************************************************************************/
 
 static const NMPlatformIP6Route *
-_ip6_route_get(NMPlatform *           platform,
+_ip6_route_get(NMPlatform            *platform,
                int                    ifindex,
                const struct in6_addr *network,
                guint                  plen,
                guint32                metric,
                const struct in6_addr *src,
                guint8                 src_plen,
-               guint *                out_c_exists)
+               guint                 *out_c_exists)
 {
     NMDedupMultiIter          iter;
     NMPLookup                 lookup;
-    const NMPObject *         o = NULL;
+    const NMPObject          *o = NULL;
     guint                     c;
     const NMPlatformIP6Route *r = NULL;
 
@@ -639,12 +643,12 @@ _ip6_route_get(NMPlatform *           platform,
 }
 
 const NMPlatformIP6Route *
-_nmtstp_assert_ip6_route_exists(const char *           file,
+_nmtstp_assert_ip6_route_exists(const char            *file,
                                 guint                  line,
-                                const char *           func,
-                                NMPlatform *           platform,
+                                const char            *func,
+                                NMPlatform            *platform,
                                 int                    c_exists,
-                                const char *           ifname,
+                                const char            *ifname,
                                 const struct in6_addr *network,
                                 guint                  plen,
                                 guint32                metric,
@@ -687,7 +691,7 @@ _nmtstp_assert_ip6_route_exists(const char *           file,
 }
 
 const NMPlatformIP6Route *
-nmtstp_ip6_route_get(NMPlatform *           platform,
+nmtstp_ip6_route_get(NMPlatform            *platform,
                      int                    ifindex,
                      const struct in6_addr *network,
                      guint                  plen,
@@ -727,7 +731,7 @@ typedef struct {
 } WaitForSignalData;
 
 static void
-_wait_for_signal_cb(NMPlatform *    platform,
+_wait_for_signal_cb(NMPlatform     *platform,
                     int             obj_type_i,
                     int             ifindex,
                     NMPlatformLink *plink,
@@ -1016,7 +1020,7 @@ nmtstp_ip_address_assert_lifetime(const NMPlatformIPAddress *addr,
 /*****************************************************************************/
 
 static void
-_ip_address_add(NMPlatform *    platform,
+_ip_address_add(NMPlatform     *platform,
                 gboolean        external_command,
                 gboolean        is_v4,
                 int             ifindex,
@@ -1026,7 +1030,7 @@ _ip_address_add(NMPlatform *    platform,
                 guint32         lifetime,
                 guint32         preferred,
                 guint32         flags,
-                const char *    label)
+                const char     *label)
 {
     gint64 end_time;
 
@@ -1035,7 +1039,7 @@ _ip_address_add(NMPlatform *    platform,
     _init_platform(&platform, external_command);
 
     if (external_command) {
-        const char *  ifname;
+        const char   *ifname;
         gs_free char *s_valid     = NULL;
         gs_free char *s_preferred = NULL;
         gs_free char *s_label     = NULL;
@@ -1193,7 +1197,7 @@ nmtstp_ip4_address_add(NMPlatform *platform,
 }
 
 void
-nmtstp_ip6_address_add(NMPlatform *    platform,
+nmtstp_ip6_address_add(NMPlatform     *platform,
                        gboolean        external_command,
                        int             ifindex,
                        struct in6_addr address,
@@ -1217,7 +1221,7 @@ nmtstp_ip6_address_add(NMPlatform *    platform,
 }
 
 void
-nmtstp_ip4_route_add(NMPlatform *     platform,
+nmtstp_ip4_route_add(NMPlatform      *platform,
                      int              ifindex,
                      NMIPConfigSource source,
                      in_addr_t        network,
@@ -1243,7 +1247,7 @@ nmtstp_ip4_route_add(NMPlatform *     platform,
 }
 
 void
-nmtstp_ip6_route_add(NMPlatform *     platform,
+nmtstp_ip6_route_add(NMPlatform      *platform,
                      int              ifindex,
                      NMIPConfigSource source,
                      struct in6_addr  network,
@@ -1271,7 +1275,7 @@ nmtstp_ip6_route_add(NMPlatform *     platform,
 /*****************************************************************************/
 
 static void
-_ip_address_del(NMPlatform *    platform,
+_ip_address_del(NMPlatform     *platform,
                 gboolean        external_command,
                 gboolean        is_v4,
                 int             ifindex,
@@ -1388,7 +1392,7 @@ nmtstp_ip4_address_del(NMPlatform *platform,
 }
 
 void
-nmtstp_ip6_address_del(NMPlatform *    platform,
+nmtstp_ip6_address_del(NMPlatform     *platform,
                        gboolean        external_command,
                        int             ifindex,
                        struct in6_addr address,
@@ -1427,7 +1431,7 @@ nmtstp_ip6_address_del(NMPlatform *    platform,
 const NMPlatformLnkBridge *
 nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested,
                                           const NMPlatformLnkBridge *kernel,
-                                          NMPlatformLnkBridge *      dst)
+                                          NMPlatformLnkBridge       *dst)
 {
     g_assert(requested);
     g_assert(dst);
@@ -1458,12 +1462,12 @@ nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested,
 }
 
 const NMPlatformLink *
-nmtstp_link_bridge_add(NMPlatform *               platform,
+nmtstp_link_bridge_add(NMPlatform                *platform,
                        gboolean                   external_command,
-                       const char *               name,
+                       const char                *name,
                        const NMPlatformLnkBridge *lnk)
 {
-    const NMPlatformLink *     pllink = NULL;
+    const NMPlatformLink      *pllink = NULL;
     const NMPlatformLnkBridge *ll     = NULL;
     NMPlatformLnkBridge        lnk_normalized;
     int                        r = 0;
@@ -1686,9 +1690,9 @@ nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const cha
 }
 
 const NMPlatformLink *
-nmtstp_link_gre_add(NMPlatform *            platform,
+nmtstp_link_gre_add(NMPlatform             *platform,
                     gboolean                external_command,
-                    const char *            name,
+                    const char             *name,
                     const NMPlatformLnkGre *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -1706,7 +1710,7 @@ nmtstp_link_gre_add(NMPlatform *            platform,
 
     if (external_command) {
         gs_free char *dev = NULL;
-        char *        obj, *type;
+        char         *obj, *type;
 
         if (lnk->parent_ifindex)
             dev =
@@ -1737,9 +1741,9 @@ nmtstp_link_gre_add(NMPlatform *            platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_ip6tnl_add(NMPlatform *               platform,
+nmtstp_link_ip6tnl_add(NMPlatform                *platform,
                        gboolean                   external_command,
-                       const char *               name,
+                       const char                *name,
                        const NMPlatformLnkIp6Tnl *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -1760,7 +1764,7 @@ nmtstp_link_ip6tnl_add(NMPlatform *               platform,
 
     if (external_command) {
         gs_free char *dev = NULL;
-        const char *  mode;
+        const char   *mode;
 
         if (lnk->parent_ifindex)
             dev =
@@ -1803,9 +1807,9 @@ nmtstp_link_ip6tnl_add(NMPlatform *               platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_ip6gre_add(NMPlatform *               platform,
+nmtstp_link_ip6gre_add(NMPlatform                *platform,
                        gboolean                   external_command,
-                       const char *               name,
+                       const char                *name,
                        const NMPlatformLnkIp6Tnl *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -1862,9 +1866,9 @@ nmtstp_link_ip6gre_add(NMPlatform *               platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_ipip_add(NMPlatform *             platform,
+nmtstp_link_ipip_add(NMPlatform              *platform,
                      gboolean                 external_command,
-                     const char *             name,
+                     const char              *name,
                      const NMPlatformLnkIpIp *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -1905,9 +1909,9 @@ nmtstp_link_ipip_add(NMPlatform *             platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_macvlan_add(NMPlatform *                platform,
+nmtstp_link_macvlan_add(NMPlatform                 *platform,
                         gboolean                    external_command,
-                        const char *                name,
+                        const char                 *name,
                         int                         parent,
                         const NMPlatformLnkMacvlan *lnk)
 {
@@ -1925,7 +1929,7 @@ nmtstp_link_macvlan_add(NMPlatform *                platform,
 
     if (external_command) {
         const char *dev;
-        char *      modes[] = {
+        char       *modes[] = {
             [MACVLAN_MODE_BRIDGE]   = "bridge",
             [MACVLAN_MODE_VEPA]     = "vepa",
             [MACVLAN_MODE_PRIVATE]  = "private",
@@ -1954,9 +1958,9 @@ nmtstp_link_macvlan_add(NMPlatform *                platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_sit_add(NMPlatform *            platform,
+nmtstp_link_sit_add(NMPlatform             *platform,
                     gboolean                external_command,
-                    const char *            name,
+                    const char             *name,
                     const NMPlatformLnkSit *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -2001,11 +2005,11 @@ nmtstp_link_sit_add(NMPlatform *            platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_tun_add(NMPlatform *            platform,
+nmtstp_link_tun_add(NMPlatform             *platform,
                     gboolean                external_command,
-                    const char *            name,
+                    const char             *name,
                     const NMPlatformLnkTun *lnk,
-                    int *                   out_fd)
+                    int                    *out_fd)
 {
     const NMPlatformLink *pllink = NULL;
     int                   err;
@@ -2066,11 +2070,11 @@ nmtstp_link_tun_add(NMPlatform *            platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_vrf_add(NMPlatform *            platform,
+nmtstp_link_vrf_add(NMPlatform             *platform,
                     gboolean                external_command,
-                    const char *            name,
+                    const char             *name,
                     const NMPlatformLnkVrf *lnk,
-                    gboolean *              out_not_supported)
+                    gboolean               *out_not_supported)
 {
     const NMPlatformLink *pllink = NULL;
     int                   r      = 0;
@@ -2103,9 +2107,9 @@ nmtstp_link_vrf_add(NMPlatform *            platform,
 }
 
 const NMPlatformLink *
-nmtstp_link_vxlan_add(NMPlatform *              platform,
+nmtstp_link_vxlan_add(NMPlatform               *platform,
                       gboolean                  external_command,
-                      const char *              name,
+                      const char               *name,
                       const NMPlatformLnkVxlan *lnk)
 {
     const NMPlatformLink *pllink = NULL;
@@ -2228,7 +2232,7 @@ nmtstp_link_delete(NMPlatform *platform,
     gint64                end_time;
     const NMPlatformLink *pllink;
     gboolean              success;
-    gs_free char *        name_copy = NULL;
+    gs_free char         *name_copy = NULL;
 
     external_command = nmtstp_run_command_check_external(external_command);
 
@@ -2653,9 +2657,9 @@ main(int argc, char **argv)
 struct _NMTstpAcdDefender {
     int        ifindex;
     in_addr_t  ip_addr;
-    NAcd *     nacd;
+    NAcd      *nacd;
     NAcdProbe *probe;
-    GSource *  source;
+    GSource   *source;
     gint8      announce_started;
 };
 
@@ -2713,11 +2717,11 @@ _l3_acd_nacd_event(int fd, GIOCondition condition, gpointer user_data)
 NMTstpAcdDefender *
 nmtstp_acd_defender_new(int ifindex, in_addr_t ip_addr, const NMEtherAddr *mac_addr)
 {
-    NMTstpAcdDefender *                                defender;
-    nm_auto(n_acd_config_freep) NAcdConfig *           config       = NULL;
-    nm_auto(n_acd_unrefp) NAcd *                       nacd         = NULL;
+    NMTstpAcdDefender                                 *defender;
+    nm_auto(n_acd_config_freep) NAcdConfig            *config       = NULL;
+    nm_auto(n_acd_unrefp) NAcd                        *nacd         = NULL;
     nm_auto(n_acd_probe_config_freep) NAcdProbeConfig *probe_config = NULL;
-    NAcdProbe *                                        probe        = NULL;
+    NAcdProbe                                         *probe        = NULL;
     int                                                fd;
     int                                                r;
     char                                               sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
diff --git a/src/core/platform/tests/test-common.h b/src/core/platform/tests/test-common.h
index fc4149f0..77f2c50d 100644
--- a/src/core/platform/tests/test-common.h
+++ b/src/core/platform/tests/test-common.h
@@ -90,19 +90,19 @@ void nmtstp_netns_select_random(NMPlatform **platforms, gsize n_platforms, NMPNe
 
 typedef struct {
     gulong                     handler_id;
-    const char *               name;
+    const char                *name;
     NMPlatformSignalChangeType change_type;
     int                        received_count;
-    GMainLoop *                loop;
+    GMainLoop                 *loop;
     int                        ifindex;
-    const char *               ifname;
+    const char                *ifname;
 } SignalData;
 
-SignalData *add_signal_full(const char *               name,
+SignalData *add_signal_full(const char                *name,
                             NMPlatformSignalChangeType change_type,
                             GCallback                  callback,
                             int                        ifindex,
-                            const char *               ifname);
+                            const char                *ifname);
 #define add_signal(name, change_type, callback) \
     add_signal_full(name, change_type, G_CALLBACK(callback), 0, NULL)
 #define add_signal_ifindex(name, change_type, callback, ifindex) \
@@ -124,12 +124,12 @@ void _free_signal(const char *file, int line, const char *func, SignalData *data
 #define ensure_no_signal(data)      _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data)
 #define free_signal(data)           _free_signal(__FILE__, __LINE__, G_STRFUNC, data)
 
-void link_callback(NMPlatform *    platform,
+void link_callback(NMPlatform     *platform,
                    int             obj_type_i,
                    int             ifindex,
                    NMPlatformLink *received,
                    int             change_type_i,
-                   SignalData *    data);
+                   SignalData     *data);
 
 /*****************************************************************************/
 
@@ -210,12 +210,12 @@ const NMPlatformIP4Route *nmtstp_ip4_route_get(NMPlatform *platform,
                                                guint32     metric,
                                                guint8      tos);
 
-const NMPlatformIP6Route *_nmtstp_assert_ip6_route_exists(const char *           file,
+const NMPlatformIP6Route *_nmtstp_assert_ip6_route_exists(const char            *file,
                                                           guint                  line,
-                                                          const char *           func,
-                                                          NMPlatform *           platform,
+                                                          const char            *func,
+                                                          NMPlatform            *platform,
                                                           int                    c_exists,
-                                                          const char *           ifname,
+                                                          const char            *ifname,
                                                           const struct in6_addr *network,
                                                           guint                  plen,
                                                           guint32                metric,
@@ -241,7 +241,7 @@ const NMPlatformIP6Route *_nmtstp_assert_ip6_route_exists(const char *
                                     src,         \
                                     src_plen)
 
-const NMPlatformIP6Route *nmtstp_ip6_route_get(NMPlatform *           platform,
+const NMPlatformIP6Route *nmtstp_ip6_route_get(NMPlatform            *platform,
                                                int                    ifindex,
                                                const struct in6_addr *network,
                                                guint                  plen,
@@ -270,7 +270,7 @@ void nmtstp_ip4_address_add(NMPlatform *platform,
                             guint32     preferred,
                             guint32     flags,
                             const char *label);
-void nmtstp_ip6_address_add(NMPlatform *    platform,
+void nmtstp_ip6_address_add(NMPlatform     *platform,
                             gboolean        external_command,
                             int             ifindex,
                             struct in6_addr address,
@@ -285,13 +285,13 @@ void nmtstp_ip4_address_del(NMPlatform *platform,
                             in_addr_t   address,
                             int         plen,
                             in_addr_t   peer_address);
-void nmtstp_ip6_address_del(NMPlatform *    platform,
+void nmtstp_ip6_address_del(NMPlatform     *platform,
                             gboolean        external_command,
                             int             ifindex,
                             struct in6_addr address,
                             int             plen);
 
-void nmtstp_ip4_route_add(NMPlatform *     platform,
+void nmtstp_ip4_route_add(NMPlatform      *platform,
                           int              ifindex,
                           NMIPConfigSource source,
                           in_addr_t        network,
@@ -301,7 +301,7 @@ void nmtstp_ip4_route_add(NMPlatform *     platform,
                           guint32          metric,
                           guint32          mss);
 
-void nmtstp_ip6_route_add(NMPlatform *     platform,
+void nmtstp_ip6_route_add(NMPlatform      *platform,
                           int              ifindex,
                           NMIPConfigSource source,
                           struct in6_addr  network,
@@ -357,9 +357,9 @@ nmtstp_platform_ip6_address_find(NMPlatform *self, int ifindex, const struct in6
         nmtstp_platform_ip_address_find(self, ifindex, AF_INET6, addr);
 }
 
-void _nmtstp_platform_ip_addresses_assert(const char *       filename,
+void _nmtstp_platform_ip_addresses_assert(const char        *filename,
                                           int                lineno,
-                                          NMPlatform *       self,
+                                          NMPlatform        *self,
                                           int                ifindex,
                                           gboolean           force_exact_4,
                                           gboolean           force_exact_6,
@@ -417,7 +417,7 @@ nmtstp_platform_routing_rules_get_count(NMPlatform *platform, int addr_family)
 {
     const NMDedupMultiHeadEntry *head_entry;
     NMDedupMultiIter             iter;
-    const NMPObject *            obj;
+    const NMPObject             *obj;
     NMPLookup                    lookup;
     guint                        n;
 
@@ -440,7 +440,7 @@ gboolean nmtstp_platform_ip4_route_delete(NMPlatform *platform,
                                           in_addr_t   network,
                                           guint8      plen,
                                           guint32     metric);
-gboolean nmtstp_platform_ip6_route_delete(NMPlatform *    platform,
+gboolean nmtstp_platform_ip6_route_delete(NMPlatform     *platform,
                                           int             ifindex,
                                           struct in6_addr network,
                                           guint8          plen,
@@ -458,11 +458,11 @@ nmtstp_link_set_updown(NMPlatform *platform, gboolean external_command, int ifin
 const NMPlatformLnkBridge *
 nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested,
                                           const NMPlatformLnkBridge *kernel,
-                                          NMPlatformLnkBridge *      dst);
+                                          NMPlatformLnkBridge       *dst);
 
-const NMPlatformLink *nmtstp_link_bridge_add(NMPlatform *               platform,
+const NMPlatformLink *nmtstp_link_bridge_add(NMPlatform                *platform,
                                              gboolean                   external_command,
-                                             const char *               name,
+                                             const char                *name,
                                              const NMPlatformLnkBridge *lnk);
 const NMPlatformLink *nmtstp_link_veth_add(NMPlatform *platform,
                                            gboolean    external_command,
@@ -470,44 +470,44 @@ const NMPlatformLink *nmtstp_link_veth_add(NMPlatform *platform,
                                            const char *peer);
 const NMPlatformLink *
 nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const char *name);
-const NMPlatformLink *nmtstp_link_gre_add(NMPlatform *            platform,
+const NMPlatformLink *nmtstp_link_gre_add(NMPlatform             *platform,
                                           gboolean                external_command,
-                                          const char *            name,
+                                          const char             *name,
                                           const NMPlatformLnkGre *lnk);
-const NMPlatformLink *nmtstp_link_ip6tnl_add(NMPlatform *               platform,
+const NMPlatformLink *nmtstp_link_ip6tnl_add(NMPlatform                *platform,
                                              gboolean                   external_command,
-                                             const char *               name,
+                                             const char                *name,
                                              const NMPlatformLnkIp6Tnl *lnk);
-const NMPlatformLink *nmtstp_link_ip6gre_add(NMPlatform *               platform,
+const NMPlatformLink *nmtstp_link_ip6gre_add(NMPlatform                *platform,
                                              gboolean                   external_command,
-                                             const char *               name,
+                                             const char                *name,
                                              const NMPlatformLnkIp6Tnl *lnk);
-const NMPlatformLink *nmtstp_link_ipip_add(NMPlatform *             platform,
+const NMPlatformLink *nmtstp_link_ipip_add(NMPlatform              *platform,
                                            gboolean                 external_command,
-                                           const char *             name,
+                                           const char              *name,
                                            const NMPlatformLnkIpIp *lnk);
-const NMPlatformLink *nmtstp_link_macvlan_add(NMPlatform *                platform,
+const NMPlatformLink *nmtstp_link_macvlan_add(NMPlatform                 *platform,
                                               gboolean                    external_command,
-                                              const char *                name,
+                                              const char                 *name,
                                               int                         parent,
                                               const NMPlatformLnkMacvlan *lnk);
-const NMPlatformLink *nmtstp_link_sit_add(NMPlatform *            platform,
+const NMPlatformLink *nmtstp_link_sit_add(NMPlatform             *platform,
                                           gboolean                external_command,
-                                          const char *            name,
+                                          const char             *name,
                                           const NMPlatformLnkSit *lnk);
-const NMPlatformLink *nmtstp_link_tun_add(NMPlatform *            platform,
+const NMPlatformLink *nmtstp_link_tun_add(NMPlatform             *platform,
                                           gboolean                external_command,
-                                          const char *            name,
+                                          const char             *name,
                                           const NMPlatformLnkTun *lnk,
-                                          int *                   out_fd);
-const NMPlatformLink *nmtstp_link_vrf_add(NMPlatform *            platform,
+                                          int                    *out_fd);
+const NMPlatformLink *nmtstp_link_vrf_add(NMPlatform             *platform,
                                           gboolean                external_command,
-                                          const char *            name,
+                                          const char             *name,
                                           const NMPlatformLnkVrf *lnk,
-                                          gboolean *              out_not_supported);
-const NMPlatformLink *nmtstp_link_vxlan_add(NMPlatform *              platform,
+                                          gboolean               *out_not_supported);
+const NMPlatformLink *nmtstp_link_vxlan_add(NMPlatform               *platform,
                                             gboolean                  external_command,
-                                            const char *              name,
+                                            const char               *name,
                                             const NMPlatformLnkVxlan *lnk);
 
 void nmtstp_link_delete(NMPlatform *platform,
@@ -524,7 +524,7 @@ extern int NMTSTP_ENV1_EX;
 static inline void
 _nmtstp_env1_wrapper_setup(const NmtstTestData *test_data)
 {
-    int *    p_ifindex;
+    int     *p_ifindex;
     gpointer p_ifup;
 
     nmtst_test_data_unpack(test_data, &p_ifindex, NULL, NULL, NULL, &p_ifup);
diff --git a/src/core/platform/tests/test-link.c b/src/core/platform/tests/test-link.c
index 24e3fd99..48b321d2 100644
--- a/src/core/platform/tests/test-link.c
+++ b/src/core/platform/tests/test-link.c
@@ -169,12 +169,12 @@ software_add(NMLinkType link_type, const char *name)
 }
 
 static void
-test_link_changed_signal_cb(NMPlatform *              platform,
+test_link_changed_signal_cb(NMPlatform               *platform,
                             int                       obj_type_i,
                             int                       ifindex,
                             const NMPlatformIP4Route *route,
                             int                       change_type_i,
-                            gboolean *                p_test_link_changed_signal_arg)
+                            gboolean                 *p_test_link_changed_signal_arg)
 {
     const NMPObjectType              obj_type    = obj_type_i;
     const NMPlatformSignalChangeType change_type = change_type_i;
@@ -211,7 +211,7 @@ test_slave(int master, int type, SignalData *master_changed)
                                                link_callback,
                                                SLAVE_NAME);
     SignalData *link_changed, *link_removed;
-    char *      value;
+    char       *value;
     NMLinkType  link_type = nm_platform_link_get_type(NM_PLATFORM_GET, master);
     gboolean    test_link_changed_signal_arg1;
     gboolean    test_link_changed_signal_arg2;
@@ -422,7 +422,7 @@ test_software(NMLinkType link_type, const char *link_typename)
                                       link_callback,
                                       ifindex);
     if (link_type == NM_LINK_TYPE_VLAN) {
-        const NMPlatformLink *   plink;
+        const NMPlatformLink    *plink;
         const NMPlatformLnkVlan *plnk;
 
         plnk = nm_platform_link_get_lnk_vlan(NM_PLATFORM_GET, ifindex, &plink);
@@ -754,7 +754,7 @@ test_external(void)
 {
     const NMPlatformLink *pllink;
     NMPLinkAddress        hw_perm_addr;
-    SignalData *          link_added, *link_changed, *link_removed;
+    SignalData           *link_added, *link_changed, *link_removed;
     int                   ifindex;
 
     link_added = add_signal_ifname(NM_PLATFORM_SIGNAL_LINK_CHANGED,
@@ -1157,10 +1157,10 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode)
          "wmjW2wDT2EzFkyaGui7YWNLTRu8Q4eD/GVKM2utZkEs="},
     };
     gs_unref_ptrarray GPtrArray *allowed_ips_keep_alive = NULL;
-    gs_unref_array GArray *peers                        = NULL;
-    NMPlatformLnkWireGuard lnk_wireguard;
-    int                    r;
-    guint                  i;
+    gs_unref_array GArray       *peers                  = NULL;
+    NMPlatformLnkWireGuard       lnk_wireguard;
+    int                          r;
+    guint                        i;
 
     allowed_ips_keep_alive = g_ptr_array_new_with_free_func(g_free);
 
@@ -1270,8 +1270,8 @@ test_software_detect(gconstpointer user_data)
 {
     const TestAddSoftwareDetectData *test_data = user_data;
     int                              ifindex, ifindex_parent;
-    const NMPlatformLink *           plink;
-    const NMPObject *                lnk;
+    const NMPlatformLink            *plink;
+    const NMPObject                 *lnk;
     int                              r;
     guint                            i_step;
     const gboolean                   ext        = test_data->external_command;
@@ -1991,7 +1991,7 @@ static void
 test_software_detect_add(const char *testpath, NMLinkType link_type, int test_mode)
 {
     TestAddSoftwareDetectData *test_data;
-    char *                     path;
+    char                      *path;
 
     test_data                   = g_new0(TestAddSoftwareDetectData, 1);
     test_data->link_type        = link_type;
@@ -2026,8 +2026,8 @@ test_software_detect_add(const char *testpath, NMLinkType link_type, int test_mo
 static void
 _assert_xgress_qos_mappings_impl(int ifindex, gboolean is_ingress_map, int n_entries, int n, ...)
 {
-    const NMPlatformLink *  plink;
-    const NMPObject *       lnk;
+    const NMPlatformLink   *plink;
+    const NMPObject        *lnk;
     guint                   n_map;
     const NMVlanQosMapping *map;
     va_list                 ap;
@@ -2460,10 +2460,10 @@ test_vlan_set_xgress(void)
 static void
 test_create_many_links_do(guint n_devices)
 {
-    gint64                time, start_time = nm_utils_get_monotonic_timestamp_nsec();
-    guint                 i;
-    char                  name[64];
-    const NMPlatformLink *pllink;
+    gint64                 time, start_time = nm_utils_get_monotonic_timestamp_nsec();
+    guint                  i;
+    char                   name[64];
+    const NMPlatformLink  *pllink;
     gs_unref_array GArray *ifindexes = g_array_sized_new(FALSE, FALSE, sizeof(int), n_devices);
     const int              EX        = ((int) (nmtst_get_rand_uint32() % 4)) - 1;
 
@@ -2540,12 +2540,12 @@ test_create_many_links(gconstpointer user_data)
 static void
 test_nl_bugs_veth(void)
 {
-    const char *          IFACE_VETH0 = "nm-test-veth0";
-    const char *          IFACE_VETH1 = "nm-test-veth1";
-    int                   ifindex_veth0, ifindex_veth1;
-    int                   i;
-    const NMPlatformLink *pllink_veth0, *pllink_veth1;
-    gs_free_error GError * error     = NULL;
+    const char            *IFACE_VETH0 = "nm-test-veth0";
+    const char            *IFACE_VETH1 = "nm-test-veth1";
+    int                    ifindex_veth0, ifindex_veth1;
+    int                    i;
+    const NMPlatformLink  *pllink_veth0, *pllink_veth1;
+    gs_free_error GError  *error     = NULL;
     NMTstpNamespaceHandle *ns_handle = NULL;
     NMPLinkAddress         hw_perm_addr;
 
@@ -2612,8 +2612,8 @@ out:
 static void
 test_nl_bugs_spuroius_newlink(void)
 {
-    const char *          IFACE_BOND0  = "nm-test-bond0";
-    const char *          IFACE_DUMMY0 = "nm-test-dummy0";
+    const char           *IFACE_BOND0  = "nm-test-bond0";
+    const char           *IFACE_DUMMY0 = "nm-test-dummy0";
     int                   ifindex_bond0, ifindex_dummy0;
     const NMPlatformLink *pllink;
     NMPLinkAddress        hw_perm_addr;
@@ -2668,8 +2668,8 @@ again:
 static void
 test_nl_bugs_spuroius_dellink(void)
 {
-    const char *          IFACE_BRIDGE0 = "nm-test-bridge0";
-    const char *          IFACE_DUMMY0  = "nm-test-dummy0";
+    const char           *IFACE_BRIDGE0 = "nm-test-bridge0";
+    const char           *IFACE_DUMMY0  = "nm-test-dummy0";
     int                   ifindex_bridge0, ifindex_dummy0;
     const NMPlatformLink *pllink;
     NMPLinkAddress        hw_perm_addr;
@@ -2745,7 +2745,7 @@ _test_netns_teardown(gpointer fixture, gconstpointer test_data)
 static NMPlatform *
 _test_netns_create_platform(void)
 {
-    NMPNetns *  netns;
+    NMPNetns   *netns;
     NMPlatform *platform;
 
     netns = nmp_netns_new();
@@ -2763,9 +2763,9 @@ _test_netns_create_platform(void)
 static gboolean
 _test_netns_check_skip(void)
 {
-    static int      support       = -1;
-    static int      support_errsv = 0;
-    NMPNetns *      netns;
+    static int                support       = -1;
+    static int                support_errsv = 0;
+    NMPNetns                 *netns;
     gs_unref_object NMPNetns *netns2 = NULL;
 
     netns = nmp_netns_get_current();
@@ -2828,7 +2828,7 @@ test_netns_general(gpointer fixture, gconstpointer test_data)
 {
     gs_unref_object NMPlatform *platform_1 = NULL;
     gs_unref_object NMPlatform *platform_2 = NULL;
-    NMPNetns *                  netns_tmp;
+    NMPNetns                   *netns_tmp;
     char                        sbuf[100];
     int                         i, j, k;
     gboolean                    ethtool_support;
@@ -2959,7 +2959,7 @@ test_netns_general(gpointer fixture, gconstpointer test_data)
 static void
 test_netns_set_netns(gpointer fixture, gconstpointer test_data)
 {
-    NMPlatform *    platforms[3];
+    NMPlatform                 *platforms[3];
     gs_unref_object NMPlatform *platform_0 = NULL;
     gs_unref_object NMPlatform *platform_1 = NULL;
     gs_unref_object NMPlatform *platform_2 = NULL;
@@ -2997,8 +2997,8 @@ static char *
 _get_current_namespace_id(int ns_type)
 {
     const char *p;
-    GError *    error = NULL;
-    char *      id;
+    GError     *error = NULL;
+    char       *id;
 
     switch (ns_type) {
     case CLONE_NEWNET:
@@ -3020,7 +3020,7 @@ _get_current_namespace_id(int ns_type)
 static char *
 _get_sysctl_value(const char *path)
 {
-    char *        data          = NULL;
+    char                 *data  = NULL;
     gs_free_error GError *error = NULL;
 
     if (!g_file_get_contents(path, &data, NULL, &error)) {
@@ -3037,10 +3037,10 @@ _get_sysctl_value(const char *path)
 static void
 test_netns_push(gpointer fixture, gconstpointer test_data)
 {
-    gs_unref_object NMPlatform *platform_0    = NULL;
-    gs_unref_object NMPlatform *platform_1    = NULL;
-    gs_unref_object NMPlatform *platform_2    = NULL;
-    nm_auto_pop_netns NMPNetns *netns_pop     = NULL;
+    gs_unref_object NMPlatform  *platform_0   = NULL;
+    gs_unref_object NMPlatform  *platform_1   = NULL;
+    gs_unref_object NMPlatform  *platform_2   = NULL;
+    nm_auto_pop_netns NMPNetns  *netns_pop    = NULL;
     gs_unref_ptrarray GPtrArray *device_names = g_ptr_array_new_with_free_func(g_free);
     int                          i, j;
     const int ns_types_list[] = {CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWNET | CLONE_NEWNS};
@@ -3080,7 +3080,7 @@ test_netns_push(gpointer fixture, gconstpointer test_data)
 
     for (i = 0; i < G_N_ELEMENTS(pl); i++) {
         nm_auto_pop_netns NMPNetns *netns_free = NULL;
-        char *                      tmp;
+        char                       *tmp;
 
         g_assert(nm_platform_netns_push(pl[i].platform, &netns_free));
 
@@ -3207,8 +3207,8 @@ test_netns_bind_to_path(gpointer fixture, gconstpointer test_data)
     gs_unref_object NMPlatform *platform_1 = NULL;
     gs_unref_object NMPlatform *platform_2 = NULL;
     nm_auto_pop_netns NMPNetns *netns_pop  = NULL;
-    NMPlatform *                platforms[3];
-    NMPNetns *                  netns;
+    NMPlatform                 *platforms[3];
+    NMPNetns                   *netns;
     int                         i;
 
     if (_test_netns_check_skip())
@@ -3270,7 +3270,7 @@ test_sysctl_rename(void)
     nm_auto_close int     dirfd                         = -1;
     int                   i;
     char                  ifname_buf[IFNAMSIZ];
-    char *                s;
+    char                 *s;
     const NMPlatformLink *pllink;
 
     ifindex[0] = nmtstp_link_dummy_add(PL, -1, IFNAME[0])->ifindex;
@@ -3362,19 +3362,19 @@ test_sysctl_rename(void)
 static void
 test_sysctl_netns_switch(void)
 {
-    const char *const IFNAME = "nm-dummy-0";
-    int               ifindex, ifindex_tmp;
-    nm_auto_close int dirfd = -1;
-    char              ifname_buf[IFNAMSIZ];
-    char *            s;
+    const char *const           IFNAME = "nm-dummy-0";
+    int                         ifindex, ifindex_tmp;
+    nm_auto_close int           dirfd = -1;
+    char                        ifname_buf[IFNAMSIZ];
+    char                       *s;
     gs_unref_object NMPlatform *platform_0  = NULL;
     gs_unref_object NMPlatform *platform_1  = NULL;
     gs_unref_object NMPlatform *platform_2  = NULL;
     nm_auto_pop_netns NMPNetns *netns_pop_1 = NULL;
     nm_auto_pop_netns NMPNetns *netns_pop_2 = NULL;
     nm_auto_pop_netns NMPNetns *netns_pop_3 = NULL;
-    NMPlatform *                PL;
-    NMPlatform *                platforms[3];
+    NMPlatform                 *PL;
+    NMPlatform                 *platforms[3];
 
     if (_test_netns_check_skip())
         return;
@@ -3432,7 +3432,7 @@ test_sysctl_netns_switch(void)
     {
         gint64 i64;
         int    errsv;
-        char * v;
+        char  *v;
 
         errno = ESRCH;
         v     = nm_platform_sysctl_get(
@@ -3501,7 +3501,7 @@ test_sysctl_netns_switch(void)
 }
 
 typedef struct {
-    GMainLoop * loop;
+    GMainLoop  *loop;
     const char *path;
     gboolean    expected_success;
     gint32      expected_value;
@@ -3528,10 +3528,10 @@ sysctl_set_async_cb(GError *error, gpointer user_data)
 static void
 test_sysctl_set_async(void)
 {
-    NMPlatform *const PL     = NM_PLATFORM_GET;
-    const char *const IFNAME = "nm-dummy-0";
-    const char *const PATH   = "/proc/sys/net/ipv4/conf/nm-dummy-0/rp_filter";
-    GMainLoop *       loop;
+    NMPlatform *const             PL     = NM_PLATFORM_GET;
+    const char *const             IFNAME = "nm-dummy-0";
+    const char *const             PATH   = "/proc/sys/net/ipv4/conf/nm-dummy-0/rp_filter";
+    GMainLoop                    *loop;
     gs_unref_object GCancellable *cancellable = NULL;
     gboolean                      proc_writable;
     SetAsyncData                  data;
@@ -3583,10 +3583,10 @@ test_sysctl_set_async(void)
 static void
 test_sysctl_set_async_fail(void)
 {
-    NMPlatform *const PL     = NM_PLATFORM_GET;
-    const char *const IFNAME = "nm-dummy-0";
-    const char *const PATH   = "/proc/sys/net/ipv4/conf/nm-dummy-0/does-not-exist";
-    GMainLoop *       loop;
+    NMPlatform *const             PL     = NM_PLATFORM_GET;
+    const char *const             IFNAME = "nm-dummy-0";
+    const char *const             PATH   = "/proc/sys/net/ipv4/conf/nm-dummy-0/does-not-exist";
+    GMainLoop                    *loop;
     gs_unref_object GCancellable *cancellable = NULL;
     SetAsyncData                  data;
     int                           ifindex;
@@ -3620,10 +3620,10 @@ test_sysctl_set_async_fail(void)
 static gpointer
 _test_netns_mt_thread(gpointer data)
 {
-    NMPNetns *      netns1           = data;
+    NMPNetns                 *netns1 = data;
     gs_unref_object NMPNetns *netns2 = NULL;
-    NMPNetns *                netns_bottom;
-    NMPNetns *                initial;
+    NMPNetns                 *netns_bottom;
+    NMPNetns                 *initial;
 
     netns_bottom = nmp_netns_get_initial();
     g_assert(netns_bottom);
@@ -3654,8 +3654,8 @@ static void
 test_netns_mt(void)
 {
     gs_unref_object NMPNetns *netns1 = NULL;
-    NMPNetns *                initial_from_other_thread;
-    GThread *                 th;
+    NMPNetns                 *initial_from_other_thread;
+    GThread                  *th;
 
     if (_test_netns_check_skip())
         return;
@@ -3732,7 +3732,7 @@ test_ethtool_features_get(void)
 
     for (i_run = 0; i_run < 5; i_run++) {
         NMEthtoolFeatureStates *features;
-        NMOptionBool *          requested;
+        NMOptionBool           *requested;
         gboolean                do_set = TRUE;
 
         requested = g_new(NMOptionBool, _NM_ETHTOOL_ID_FEATURE_NUM);
diff --git a/src/core/platform/tests/test-nmp-object.c b/src/core/platform/tests/test-nmp-object.c
index 6d2236ec..ddd5aa93 100644
--- a/src/core/platform/tests/test-nmp-object.c
+++ b/src/core/platform/tests/test-nmp-object.c
@@ -30,14 +30,14 @@ test_obj_base(void)
         GTypeClass k;
         NMPClass   c;
     } l                        = {};
-    static const GObject *   g = &x.g;
+    static const GObject    *g = &x.g;
     static const GTypeClass *k = &l.k;
-    static const NMPObject * o = &x.k;
-    static const NMPClass *  c = &l.c;
+    static const NMPObject  *o = &x.k;
+    static const NMPClass   *c = &l.c;
 
-    NMObjBaseInst * obj;
+    NMObjBaseInst                *obj;
     gs_unref_object GCancellable *obj_cancellable = g_cancellable_new();
-    nm_auto_nmpobj NMPObject *obj_link            = nmp_object_new_link(10);
+    nm_auto_nmpobj NMPObject     *obj_link        = nmp_object_new_link(10);
 
     g_assert(&g->g_type_instance == (void *) &o->_class);
     g_assert(&g->g_type_instance.g_class == (void *) &o->_class);
@@ -88,9 +88,9 @@ _nmp_object_equal(const NMPObject *a, const NMPObject *b)
 /*****************************************************************************/
 
 static void
-_assert_cache_multi_lookup_contains(const NMPCache *             cache,
+_assert_cache_multi_lookup_contains(const NMPCache              *cache,
                                     const NMDedupMultiHeadEntry *head_entry,
-                                    const NMPObject *            obj,
+                                    const NMPObject             *obj,
                                     gboolean                     visible_only,
                                     gboolean                     contains)
 {
@@ -126,7 +126,7 @@ _assert_cache_multi_lookup_contains(const NMPCache *             cache,
 }
 
 static void
-_assert_cache_multi_lookup_contains_link(const NMPCache * cache,
+_assert_cache_multi_lookup_contains_link(const NMPCache  *cache,
                                          gboolean         visible_only,
                                          const NMPObject *obj,
                                          gboolean         contains)
@@ -144,7 +144,7 @@ _assert_cache_multi_lookup_contains_link(const NMPCache * cache,
 /*****************************************************************************/
 
 static void
-ops_post_check(NMPCache *       cache,
+ops_post_check(NMPCache        *cache,
                NMPCacheOpsType  ops_type,
                const NMPObject *obj_old,
                const NMPObject *obj_new,
@@ -199,16 +199,16 @@ ops_post_check(NMPCache *       cache,
 }
 
 static void
-_nmp_cache_update_netlink(NMPCache *        cache,
-                          NMPObject *       obj,
+_nmp_cache_update_netlink(NMPCache         *cache,
+                          NMPObject        *obj,
                           const NMPObject **out_obj_old,
                           const NMPObject **out_obj_new,
                           NMPCacheOpsType   expected_ops_type)
 {
-    NMPCacheOpsType  ops_type;
-    const NMPObject *obj_prev;
-    const NMPObject *obj_old;
-    const NMPObject *obj_new;
+    NMPCacheOpsType           ops_type;
+    const NMPObject          *obj_prev;
+    const NMPObject          *obj_old;
+    const NMPObject          *obj_new;
     nm_auto_nmpobj NMPObject *obj_new_expected = NULL;
 
     g_assert(cache);
@@ -253,13 +253,13 @@ static const NMPlatformLink pl_link_3 = {
 static void
 test_cache_link(void)
 {
-    NMPCache *                      cache;
-    NMPObject *                     objm1;
-    const NMPObject *               obj_old, *obj_new;
-    NMPObject                       objs1;
-    struct udev_device *            udev_device_2 = g_list_nth_data(global.udev_devices, 0);
-    struct udev_device *            udev_device_3 = g_list_nth_data(global.udev_devices, 0);
-    NMPCacheOpsType                 ops_type;
+    NMPCache           *cache;
+    NMPObject          *objm1;
+    const NMPObject    *obj_old, *obj_new;
+    NMPObject           objs1;
+    struct udev_device *udev_device_2 = g_list_nth_data(global.udev_devices, 0);
+    struct udev_device *udev_device_3 = g_list_nth_data(global.udev_devices, 0);
+    NMPCacheOpsType     ops_type;
     nm_auto_unref_dedup_multi_index NMDedupMultiIndex *multi_idx = NULL;
     gboolean                                           use_udev  = nmtst_get_rand_uint32() % 2;
 
@@ -512,11 +512,11 @@ static const NMPlatformQdisc pl_qdisc_2 = {
 static void
 test_cache_qdisc(void)
 {
-    NMPCache *                      cache;
+    NMPCache                                          *cache;
     nm_auto_unref_dedup_multi_index NMDedupMultiIndex *multi_idx = NULL;
     NMPLookup                                          lookup;
-    const NMDedupMultiHeadEntry *                      head_entry;
-    nm_auto_nmpobj NMPObject *obj1a =
+    const NMDedupMultiHeadEntry                       *head_entry;
+    nm_auto_nmpobj NMPObject                          *obj1a =
         nmp_object_new(NMP_OBJECT_TYPE_QDISC, (NMPlatformObject *) &pl_qdisc_1a);
     nm_auto_nmpobj NMPObject *obj1b =
         nmp_object_new(NMP_OBJECT_TYPE_QDISC, (NMPlatformObject *) &pl_qdisc_1b);
@@ -571,7 +571,7 @@ main(int argc, char **argv)
 
     udev_client = nm_udev_client_new(NM_MAKE_STRV("net"), NULL, NULL);
     {
-        struct udev_enumerate * enumerator;
+        struct udev_enumerate  *enumerator;
         struct udev_list_entry *devices, *l;
 
         enumerator = nm_udev_client_enumerate_new(udev_client);
diff --git a/src/core/platform/tests/test-platform-general.c b/src/core/platform/tests/test-platform-general.c
index 8ffd92b5..9629326a 100644
--- a/src/core/platform/tests/test-platform-general.c
+++ b/src/core/platform/tests/test-platform-general.c
@@ -39,8 +39,8 @@ test_init_linux_platform(void)
 static void
 test_link_get_all(void)
 {
-    gs_unref_object NMPlatform *platform = NULL;
-    gs_unref_ptrarray GPtrArray *links   = NULL;
+    gs_unref_object NMPlatform  *platform = NULL;
+    gs_unref_ptrarray GPtrArray *links    = NULL;
 
     platform = nm_linux_platform_new(TRUE, NM_PLATFORM_NETNS_SUPPORT_DEFAULT, TRUE);
 
@@ -548,11 +548,11 @@ test_platform_ip_address_pretty_sort_cmp(gconstpointer test_data)
     const guint N_ADDRESSES      = 100;
     const gsize ELM_SIZE =
         addr_family == AF_INET ? sizeof(NMPlatformIP4Address) : sizeof(NMPlatformIP6Address);
-    const gboolean DO_REGENERATE = FALSE;
-    const gboolean PRINT_RESULT  = DO_REGENERATE;
-    const gboolean CHECK_RESULT  = !DO_REGENERATE;
-    gs_free guint8 *addresses    = NULL;
-    gs_free guint64 *rand_map    = NULL;
+    const gboolean   DO_REGENERATE = FALSE;
+    const gboolean   PRINT_RESULT  = DO_REGENERATE;
+    const gboolean   CHECK_RESULT  = !DO_REGENERATE;
+    gs_free guint8  *addresses     = NULL;
+    gs_free guint64 *rand_map      = NULL;
     gsize            i, j;
 
 #if !defined(__amd64__)
@@ -586,7 +586,7 @@ test_platform_ip_address_pretty_sort_cmp(gconstpointer test_data)
     for (i = 0; i < N_ADDRESSES; i++) {
         NMPlatformIPXAddress *a = (gpointer) (&addresses[i * ELM_SIZE]);
         guint64               r = rand_map[i];
-        struct in6_addr *     a6;
+        struct in6_addr      *a6;
 
 #define CONSUME_BITS(r, nbits)                        \
     ({                                                \
@@ -748,6 +748,31 @@ test_platform_ip_address_pretty_sort_cmp(gconstpointer test_data)
 
 /*****************************************************************************/
 
+static void
+test_route_type_is_nodev(void)
+{
+    int i;
+
+    for (i = -1; i <= 257; i++) {
+        gboolean is_nodev;
+
+        switch ((guint8) i) {
+        case RTN_BLACKHOLE:
+        case RTN_UNREACHABLE:
+        case RTN_PROHIBIT:
+            is_nodev = TRUE;
+            break;
+        default:
+            is_nodev = FALSE;
+            break;
+        }
+
+        g_assert_cmpint(is_nodev, ==, nm_platform_route_type_is_nodev(i));
+    }
+}
+
+/*****************************************************************************/
+
 NMTST_DEFINE();
 
 int
@@ -767,6 +792,7 @@ main(int argc, char **argv)
     g_test_add_data_func("/general/platform_ip_address_pretty_sort_cmp/6/2",
                          GINT_TO_POINTER(2),
                          test_platform_ip_address_pretty_sort_cmp);
+    g_test_add_func("/general/test_route_type_is_nodev", test_route_type_is_nodev);
 
     return g_test_run();
 }
diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c
index 4b1db7fa..cf0236e0 100644
--- a/src/core/platform/tests/test-route.c
+++ b/src/core/platform/tests/test-route.c
@@ -10,7 +10,7 @@
 
 #include "nm-core-utils.h"
 #include "libnm-platform/nm-platform-utils.h"
-#include "libnm-platform/nmp-rules-manager.h"
+#include "libnm-platform/nmp-route-manager.h"
 
 #include "test-common.h"
 
@@ -51,7 +51,7 @@ _wait_for_ipv4_addr_device_route(NMPlatform *platform,
 }
 
 static void
-_wait_for_ipv6_addr_non_tentative(NMPlatform *           platform,
+_wait_for_ipv6_addr_non_tentative(NMPlatform            *platform,
                                   gint64                 timeout_msec,
                                   int                    ifindex,
                                   guint                  addr_n,
@@ -83,17 +83,17 @@ _wait_for_ipv6_addr_non_tentative(NMPlatform *           platform,
 }
 
 static void
-ip4_route_callback(NMPlatform *              platform,
+ip4_route_callback(NMPlatform               *platform,
                    int                       obj_type_i,
                    int                       ifindex,
                    const NMPlatformIP4Route *received,
                    int                       change_type_i,
-                   SignalData *              data)
+                   SignalData               *data)
 {
     const NMPObjectType              obj_type    = obj_type_i;
     const NMPlatformSignalChangeType change_type = change_type_i;
     NMPObject                        o_id;
-    nm_auto_nmpobj NMPObject *o_id_p = nmp_object_new(NMP_OBJECT_TYPE_IP4_ROUTE, NULL);
+    nm_auto_nmpobj NMPObject        *o_id_p = nmp_object_new(NMP_OBJECT_TYPE_IP4_ROUTE, NULL);
 
     g_assert_cmpint(obj_type, ==, NMP_OBJECT_TYPE_IP4_ROUTE);
     g_assert(received);
@@ -119,17 +119,17 @@ ip4_route_callback(NMPlatform *              platform,
 }
 
 static void
-ip6_route_callback(NMPlatform *              platform,
+ip6_route_callback(NMPlatform               *platform,
                    int                       obj_type_i,
                    int                       ifindex,
                    const NMPlatformIP6Route *received,
                    int                       change_type_i,
-                   SignalData *              data)
+                   SignalData               *data)
 {
     const NMPObjectType              obj_type    = obj_type_i;
     const NMPlatformSignalChangeType change_type = change_type_i;
     NMPObject                        o_id;
-    nm_auto_nmpobj NMPObject *o_id_p = nmp_object_new(NMP_OBJECT_TYPE_IP6_ROUTE, NULL);
+    nm_auto_nmpobj NMPObject        *o_id_p = nmp_object_new(NMP_OBJECT_TYPE_IP6_ROUTE, NULL);
 
     g_assert_cmpint(obj_type, ==, NMP_OBJECT_TYPE_IP6_ROUTE);
     g_assert(received);
@@ -244,16 +244,16 @@ static void
 test_ip4_route(void)
 {
     int                ifindex       = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
-    SignalData *       route_added   = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
+    SignalData        *route_added   = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
                                          NM_PLATFORM_SIGNAL_ADDED,
                                          ip4_route_callback);
-    SignalData *       route_changed = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
+    SignalData        *route_changed = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
                                            NM_PLATFORM_SIGNAL_CHANGED,
                                            ip4_route_callback);
-    SignalData *       route_removed = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
+    SignalData        *route_removed = add_signal(NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
                                            NM_PLATFORM_SIGNAL_REMOVED,
                                            ip4_route_callback);
-    GPtrArray *        routes;
+    GPtrArray         *routes;
     NMPlatformIP4Route rts[3];
     in_addr_t          network;
     guint8             plen = 24;
@@ -332,33 +332,30 @@ test_ip4_route(void)
     /* Test route listing */
     routes = nmtstp_ip4_route_get_all(NM_PLATFORM_GET, ifindex);
     memset(rts, 0, sizeof(rts));
-    rts[0].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[0].network     = gateway;
-    rts[0].plen        = 32;
-    rts[0].ifindex     = ifindex;
-    rts[0].gateway     = INADDR_ANY;
-    rts[0].metric      = metric;
-    rts[0].mss         = mss;
-    rts[0].is_external = TRUE;
-    rts[0].scope_inv   = nm_platform_route_scope_inv(RT_SCOPE_LINK);
-    rts[1].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[1].network     = network;
-    rts[1].plen        = plen;
-    rts[1].ifindex     = ifindex;
-    rts[1].gateway     = gateway;
-    rts[1].metric      = metric;
-    rts[1].mss         = mss;
-    rts[1].scope_inv   = nm_platform_route_scope_inv(RT_SCOPE_UNIVERSE);
-    rts[1].is_external = TRUE;
-    rts[2].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[2].network     = 0;
-    rts[2].plen        = 0;
-    rts[2].ifindex     = ifindex;
-    rts[2].gateway     = gateway;
-    rts[2].metric      = metric;
-    rts[2].mss         = mss;
-    rts[2].scope_inv   = nm_platform_route_scope_inv(RT_SCOPE_UNIVERSE);
-    rts[2].is_external = TRUE;
+    rts[0].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[0].network   = gateway;
+    rts[0].plen      = 32;
+    rts[0].ifindex   = ifindex;
+    rts[0].gateway   = INADDR_ANY;
+    rts[0].metric    = metric;
+    rts[0].mss       = mss;
+    rts[0].scope_inv = nm_platform_route_scope_inv(RT_SCOPE_LINK);
+    rts[1].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[1].network   = network;
+    rts[1].plen      = plen;
+    rts[1].ifindex   = ifindex;
+    rts[1].gateway   = gateway;
+    rts[1].metric    = metric;
+    rts[1].mss       = mss;
+    rts[1].scope_inv = nm_platform_route_scope_inv(RT_SCOPE_UNIVERSE);
+    rts[2].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[2].network   = 0;
+    rts[2].plen      = 0;
+    rts[2].ifindex   = ifindex;
+    rts[2].gateway   = gateway;
+    rts[2].metric    = metric;
+    rts[2].mss       = mss;
+    rts[2].scope_inv = nm_platform_route_scope_inv(RT_SCOPE_UNIVERSE);
     g_assert_cmpint(routes->len, ==, 3);
     nmtst_platform_ip4_routes_equal_aptr((const NMPObject *const *) routes->pdata,
                                          rts,
@@ -391,16 +388,16 @@ static void
 test_ip6_route(void)
 {
     int                ifindex       = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
-    SignalData *       route_added   = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
+    SignalData        *route_added   = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
                                          NM_PLATFORM_SIGNAL_ADDED,
                                          ip6_route_callback);
-    SignalData *       route_changed = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
+    SignalData        *route_changed = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
                                            NM_PLATFORM_SIGNAL_CHANGED,
                                            ip6_route_callback);
-    SignalData *       route_removed = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
+    SignalData        *route_removed = add_signal(NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
                                            NM_PLATFORM_SIGNAL_REMOVED,
                                            ip6_route_callback);
-    GPtrArray *        routes;
+    GPtrArray         *routes;
     NMPlatformIP6Route rts[3];
     struct in6_addr    network;
     guint8             plen = 64;
@@ -492,33 +489,30 @@ test_ip6_route(void)
     /* Test route listing */
     routes = nmtstp_ip6_route_get_all(NM_PLATFORM_GET, ifindex);
     memset(rts, 0, sizeof(rts));
-    rts[0].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[0].network     = gateway;
-    rts[0].plen        = 128;
-    rts[0].ifindex     = ifindex;
-    rts[0].gateway     = in6addr_any;
-    rts[0].pref_src    = in6addr_any;
-    rts[0].metric      = metric;
-    rts[0].mss         = mss;
-    rts[0].is_external = TRUE;
-    rts[1].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[1].network     = network;
-    rts[1].plen        = plen;
-    rts[1].ifindex     = ifindex;
-    rts[1].gateway     = gateway;
-    rts[1].pref_src    = pref_src;
-    rts[1].metric      = metric;
-    rts[1].mss         = mss;
-    rts[1].is_external = TRUE;
-    rts[2].rt_source   = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
-    rts[2].network     = in6addr_any;
-    rts[2].plen        = 0;
-    rts[2].ifindex     = ifindex;
-    rts[2].gateway     = gateway;
-    rts[2].pref_src    = in6addr_any;
-    rts[2].metric      = metric;
-    rts[2].mss         = mss;
-    rts[2].is_external = TRUE;
+    rts[0].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[0].network   = gateway;
+    rts[0].plen      = 128;
+    rts[0].ifindex   = ifindex;
+    rts[0].gateway   = in6addr_any;
+    rts[0].pref_src  = in6addr_any;
+    rts[0].metric    = metric;
+    rts[0].mss       = mss;
+    rts[1].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[1].network   = network;
+    rts[1].plen      = plen;
+    rts[1].ifindex   = ifindex;
+    rts[1].gateway   = gateway;
+    rts[1].pref_src  = pref_src;
+    rts[1].metric    = metric;
+    rts[1].mss       = mss;
+    rts[2].rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER);
+    rts[2].network   = in6addr_any;
+    rts[2].plen      = 0;
+    rts[2].ifindex   = ifindex;
+    rts[2].gateway   = gateway;
+    rts[2].pref_src  = in6addr_any;
+    rts[2].metric    = metric;
+    rts[2].mss       = mss;
     g_assert_cmpint(routes->len, ==, 3);
     nmtst_platform_ip6_routes_equal_aptr((const NMPObject *const *) routes->pdata,
                                          rts,
@@ -552,9 +546,9 @@ test_ip6_route(void)
 static void
 test_ip4_route_get(void)
 {
-    int            ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
-    in_addr_t      a;
-    int            result;
+    int                       ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
+    in_addr_t                 a;
+    int                       result;
     nm_auto_nmpobj NMPObject *route = NULL;
     const NMPlatformIP4Route *r;
 
@@ -626,8 +620,8 @@ test_ip4_zero_gateway(void)
 static void
 test_ip4_route_options(gconstpointer test_data)
 {
-    const int         TEST_IDX = GPOINTER_TO_INT(test_data);
-    const int         IFINDEX  = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
+    const int TEST_IDX = GPOINTER_TO_INT(test_data);
+    const int IFINDEX  = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     gs_unref_ptrarray GPtrArray *routes = NULL;
 #define RTS_MAX 3
     NMPlatformIP4Route   rts_add[RTS_MAX] = {};
@@ -656,13 +650,13 @@ test_ip4_route_options(gconstpointer test_data)
         break;
     case 2:
         addr[addr_n++]   = ((NMPlatformIP4Address){
-            .ifindex      = IFINDEX,
-            .address      = nmtst_inet4_from_string("172.16.1.5"),
-            .peer_address = nmtst_inet4_from_string("172.16.1.5"),
-            .plen         = 24,
-            .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
-            .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
-            .n_ifa_flags  = 0,
+              .ifindex      = IFINDEX,
+              .address      = nmtst_inet4_from_string("172.16.1.5"),
+              .peer_address = nmtst_inet4_from_string("172.16.1.5"),
+              .plen         = 24,
+              .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
+              .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
+              .n_ifa_flags  = 0,
         });
         rts_add[rts_n++] = ((NMPlatformIP4Route){
             .ifindex   = IFINDEX,
@@ -715,7 +709,6 @@ test_ip4_route_options(gconstpointer test_data)
     for (i = 0; i < rts_n; i++) {
         rts_cmp[i] = rts_add[i];
         nm_platform_ip_route_normalize(AF_INET, NM_PLATFORM_IP_ROUTE_CAST(&rts_cmp[i]));
-        rts_cmp[i].is_external = TRUE;
     }
 
     routes = nmtstp_ip4_route_get_all(NM_PLATFORM_GET, IFINDEX);
@@ -738,9 +731,9 @@ test_ip4_route_options(gconstpointer test_data)
 static void
 test_ip6_route_get(void)
 {
-    int                    ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
-    const struct in6_addr *a;
-    int                    result;
+    int                       ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
+    const struct in6_addr    *a;
+    int                       result;
     nm_auto_nmpobj NMPObject *route = NULL;
     const NMPlatformIP6Route *r;
 
@@ -783,8 +776,8 @@ test_ip6_route_get(void)
 static void
 test_ip6_route_options(gconstpointer test_data)
 {
-    const int         TEST_IDX = GPOINTER_TO_INT(test_data);
-    const int         IFINDEX  = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
+    const int TEST_IDX = GPOINTER_TO_INT(test_data);
+    const int IFINDEX  = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     gs_unref_ptrarray GPtrArray *routes = NULL;
 #define RTS_MAX 3
     NMPlatformIP6Route   rts_add[RTS_MAX]             = {};
@@ -814,13 +807,13 @@ test_ip6_route_options(gconstpointer test_data)
         break;
     case 2:
         addr[addr_n++]   = ((NMPlatformIP6Address){
-            .ifindex      = IFINDEX,
-            .address      = *nmtst_inet6_from_string("2000::2"),
-            .plen         = 128,
-            .peer_address = in6addr_any,
-            .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
-            .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
-            .n_ifa_flags  = 0,
+              .ifindex      = IFINDEX,
+              .address      = *nmtst_inet6_from_string("2000::2"),
+              .plen         = 128,
+              .peer_address = in6addr_any,
+              .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
+              .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
+              .n_ifa_flags  = 0,
         });
         rts_add[rts_n++] = ((NMPlatformIP6Route){
             .ifindex   = IFINDEX,
@@ -834,13 +827,13 @@ test_ip6_route_options(gconstpointer test_data)
         break;
     case 3:
         addr[addr_n++]   = ((NMPlatformIP6Address){
-            .ifindex      = IFINDEX,
-            .address      = *nmtst_inet6_from_string("2001:db8:8086::5"),
-            .plen         = 128,
-            .peer_address = in6addr_any,
-            .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
-            .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
-            .n_ifa_flags  = 0,
+              .ifindex      = IFINDEX,
+              .address      = *nmtst_inet6_from_string("2001:db8:8086::5"),
+              .plen         = 128,
+              .peer_address = in6addr_any,
+              .lifetime     = NM_PLATFORM_LIFETIME_PERMANENT,
+              .preferred    = NM_PLATFORM_LIFETIME_PERMANENT,
+              .n_ifa_flags  = 0,
         });
         rts_add[rts_n++] = ((NMPlatformIP6Route){
             .ifindex   = IFINDEX,
@@ -887,7 +880,6 @@ test_ip6_route_options(gconstpointer test_data)
     for (i = 0; i < rts_n; i++) {
         rts_cmp[i] = rts_add[i];
         nm_platform_ip_route_normalize(AF_INET6, NM_PLATFORM_IP_ROUTE_CAST(&rts_cmp[i]));
-        rts_cmp[i].is_external = TRUE;
     }
 
     routes = nmtstp_ip6_route_get_all(NM_PLATFORM_GET, IFINDEX);
@@ -923,7 +915,7 @@ test_ip(gconstpointer test_data)
     char                  ifname[IFNAMSIZ];
     char                  ifname2[IFNAMSIZ];
     char                  s1[NM_UTILS_INET_ADDRSTRLEN];
-    NMPlatform *          platform = NM_PLATFORM_GET;
+    NMPlatform           *platform = NM_PLATFORM_GET;
     const int             EX_      = -1;
     struct {
         int ifindex;
@@ -965,7 +957,7 @@ test_ip(gconstpointer test_data)
     order_len = 0;
     for (try = 0; try < 5 * G_N_ELEMENTS(order_idx); try++) {
         NMPObject                    o;
-        NMPlatformIP4Route *         r;
+        NMPlatformIP4Route          *r;
         guint                        idx;
         const NMDedupMultiHeadEntry *head_entry;
         NMPLookup                    lookup;
@@ -1052,8 +1044,8 @@ _rule_find_by_priority(NMPlatform *platform, guint32 priority)
 {
     const NMDedupMultiHeadEntry *head_entry;
     NMDedupMultiIter             iter;
-    const NMPObject *            o;
-    const NMPObject *            obj = NULL;
+    const NMPObject             *o;
+    const NMPObject             *obj = NULL;
     NMPLookup                    lookup;
 
     nmp_lookup_init_obj_type(&lookup, NMP_OBJECT_TYPE_ROUTING_RULE);
@@ -1128,9 +1120,9 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family              = AF_INET,
-            .priority                 = PROBE_PRORITY,
-            .suppress_ifgroup_inverse = ~((guint32) 1245),
+                 .addr_family              = AF_INET,
+                 .priority                 = PROBE_PRORITY,
+                 .suppress_ifgroup_inverse = ~((guint32) 1245),
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1143,9 +1135,9 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family                = AF_INET,
-            .priority                   = PROBE_PRORITY,
-            .suppress_prefixlen_inverse = ~((guint32) 1245),
+                 .addr_family                = AF_INET,
+                 .priority                   = PROBE_PRORITY,
+                 .suppress_prefixlen_inverse = ~((guint32) 1245),
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1158,9 +1150,9 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family = AF_INET,
-            .priority    = PROBE_PRORITY,
-            .l3mdev      = TRUE,
+                 .addr_family = AF_INET,
+                 .priority    = PROBE_PRORITY,
+                 .l3mdev      = TRUE,
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1172,14 +1164,14 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family = AF_INET,
-            .priority    = PROBE_PRORITY,
-            .uid_range =
+                 .addr_family = AF_INET,
+                 .priority    = PROBE_PRORITY,
+                 .uid_range =
                 {
-                    .start = 0,
-                    .end   = 0,
+                         .start = 0,
+                         .end   = 0,
                 },
-            .uid_range_has = TRUE,
+                 .uid_range_has = TRUE,
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1191,9 +1183,9 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family = AF_INET,
-            .priority    = PROBE_PRORITY,
-            .protocol    = 30,
+                 .addr_family = AF_INET,
+                 .priority    = PROBE_PRORITY,
+                 .protocol    = 30,
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1205,9 +1197,9 @@ _rule_check_kernel_support(NMPlatform *platform, int attribute)
     {
         nm_auto_nmpobj const NMPObject *obj = NULL;
         const NMPlatformRoutingRule     rr  = {
-            .addr_family = AF_INET,
-            .priority    = PROBE_PRORITY,
-            .ip_proto    = 30,
+                 .addr_family = AF_INET,
+                 .priority    = PROBE_PRORITY,
+                 .ip_proto    = 30,
         };
 
         obj = _rule_check_kernel_support_one(platform, &rr);
@@ -1277,7 +1269,7 @@ _rr_rand_choose_u32(guint32 p)
 static const NMPObject *
 _rule_create_random(NMPlatform *platform)
 {
-    NMPObject *            obj;
+    NMPObject             *obj;
     NMPlatformRoutingRule *rr;
     guint32                p;
     int                    addr_size;
@@ -1320,7 +1312,7 @@ _rule_create_random(NMPlatform *platform)
 
     for (i = 0; i < 2; i++) {
         NMIPAddr *p_addr = i ? &rr->src : &rr->dst;
-        guint8 *  p_len  = i ? &rr->src_len : &rr->dst_len;
+        guint8   *p_len  = i ? &rr->src_len : &rr->dst_len;
 
         p = nmtst_get_rand_uint32();
         if ((p % 1000u) < 100) {
@@ -1543,11 +1535,11 @@ _rule_fuzzy_equal(const NMPObject *obj, const NMPObject *obj_comp, int op_type)
 static void
 test_rule(gconstpointer test_data)
 {
-    const int         TEST_IDX                = GPOINTER_TO_INT(test_data);
-    const gboolean    TEST_SYNC               = (TEST_IDX == 4);
+    const int                    TEST_IDX     = GPOINTER_TO_INT(test_data);
+    const gboolean               TEST_SYNC    = (TEST_IDX == 4);
     gs_unref_ptrarray GPtrArray *objs         = NULL;
     gs_unref_ptrarray GPtrArray *objs_initial = NULL;
-    NMPlatform *                 platform     = NM_PLATFORM_GET;
+    NMPlatform                  *platform     = NM_PLATFORM_GET;
     guint                        i, j, n;
     int                          r;
     gboolean                     had_an_issue_exist = FALSE;
@@ -1563,7 +1555,7 @@ test_rule(gconstpointer test_data)
 
     for (i = 6; i > 0; i--) {
         gs_unref_ptrarray GPtrArray *objs_extern = NULL;
-        const NMPObject *            obj;
+        const NMPObject             *obj;
 
         objs_extern = nmtstp_platform_routing_rules_get_all(platform, AF_UNSPEC);
 
@@ -1645,8 +1637,8 @@ again:
 
     if (TEST_SYNC) {
         gs_unref_hashtable GHashTable *unique_priorities = g_hash_table_new(NULL, NULL);
-        nm_auto_unref_rules_manager NMPRulesManager *rules_manager =
-            nmp_rules_manager_new(platform);
+        nm_auto_unref_route_manager NMPRouteManager *route_manager =
+            nmp_route_manager_new(platform);
         gs_unref_ptrarray GPtrArray *objs_sync  = NULL;
         gconstpointer                USER_TAG_1 = &platform;
         gconstpointer                USER_TAG_2 = &unique_priorities;
@@ -1668,29 +1660,29 @@ again:
         }
 
         for (i = 0; i < objs_sync->len; i++) {
-            nmp_rules_manager_track(rules_manager,
-                                    NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                    1,
-                                    USER_TAG_1,
-                                    NULL);
+            nmp_route_manager_track_rule(route_manager,
+                                         NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                         1,
+                                         USER_TAG_1,
+                                         NULL);
             if (nmtst_get_rand_bool()) {
                 /* this has no effect, because a negative priority (of same absolute value)
                  * has lower priority than the positive priority above. */
-                nmp_rules_manager_track(rules_manager,
-                                        NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                        -1,
-                                        USER_TAG_2,
-                                        NULL);
+                nmp_route_manager_track_rule(route_manager,
+                                             NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                             -1,
+                                             USER_TAG_2,
+                                             NULL);
             }
             if (nmtst_get_rand_uint32() % objs_sync->len == 0) {
-                nmp_rules_manager_sync(rules_manager, FALSE);
+                nmp_route_manager_sync(route_manager, NMP_OBJECT_TYPE_ROUTING_RULE, FALSE);
                 g_assert_cmpint(nmtstp_platform_routing_rules_get_count(platform, AF_UNSPEC),
                                 ==,
                                 i + 1);
             }
         }
 
-        nmp_rules_manager_sync(rules_manager, FALSE);
+        nmp_route_manager_sync(route_manager, NMP_OBJECT_TYPE_ROUTING_RULE, FALSE);
         g_assert_cmpint(nmtstp_platform_routing_rules_get_count(platform, AF_UNSPEC),
                         ==,
                         objs_sync->len);
@@ -1698,37 +1690,37 @@ again:
         for (i = 0; i < objs_sync->len; i++) {
             switch (nmtst_get_rand_uint32() % 3) {
             case 0:
-                nmp_rules_manager_untrack(rules_manager,
-                                          NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                          USER_TAG_1);
-                nmp_rules_manager_untrack(rules_manager,
-                                          NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                          USER_TAG_1);
+                nmp_route_manager_untrack_rule(route_manager,
+                                               NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                               USER_TAG_1);
+                nmp_route_manager_untrack_rule(route_manager,
+                                               NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                               USER_TAG_1);
                 break;
             case 1:
-                nmp_rules_manager_track(rules_manager,
-                                        NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                        -1,
-                                        USER_TAG_1,
-                                        NULL);
+                nmp_route_manager_track_rule(route_manager,
+                                             NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                             -1,
+                                             USER_TAG_1,
+                                             NULL);
                 break;
             case 2:
-                nmp_rules_manager_track(rules_manager,
-                                        NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
-                                        -2,
-                                        USER_TAG_2,
-                                        NULL);
+                nmp_route_manager_track_rule(route_manager,
+                                             NMP_OBJECT_CAST_ROUTING_RULE(objs_sync->pdata[i]),
+                                             -2,
+                                             USER_TAG_2,
+                                             NULL);
                 break;
             }
             if (nmtst_get_rand_uint32() % objs_sync->len == 0) {
-                nmp_rules_manager_sync(rules_manager, FALSE);
+                nmp_route_manager_sync(route_manager, NMP_OBJECT_TYPE_ROUTING_RULE, FALSE);
                 g_assert_cmpint(nmtstp_platform_routing_rules_get_count(platform, AF_UNSPEC),
                                 ==,
                                 objs_sync->len - i - 1);
             }
         }
 
-        nmp_rules_manager_sync(rules_manager, FALSE);
+        nmp_route_manager_sync(route_manager, NMP_OBJECT_TYPE_ROUTING_RULE, FALSE);
 
     } else {
         for (i = 0; i < objs->len;) {
@@ -1767,7 +1759,7 @@ again:
                 NMPLookup                    lookup;
                 const NMDedupMultiHeadEntry *head_entry;
                 NMDedupMultiIter             iter;
-                const NMPObject *            o;
+                const NMPObject             *o;
 
                 g_print(">>> failing... errno=%d, rule=%s\n",
                         r,
@@ -1894,6 +1886,64 @@ again:
 
 /*****************************************************************************/
 
+static void
+test_blackhole(gconstpointer test_data)
+{
+    int                          TEST_IDX    = GPOINTER_TO_INT(test_data);
+    const int                    addr_family = (TEST_IDX == 1) ? AF_INET : AF_INET6;
+    const int                    IS_IPv4     = NM_IS_IPv4(addr_family);
+    const NMDedupMultiHeadEntry *head_entry;
+    NMDedupMultiIter             iter;
+    const NMPObject             *obj;
+    NMPObject                    obj_stack;
+    NMPlatformIPXRoute           rr = {};
+    int                          r  = -1;
+    int                          i;
+
+    if (IS_IPv4) {
+        rr.r4 = (const NMPlatformIP4Route){
+            .type_coerced = nmtst_rand_select(RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT),
+        };
+    } else {
+        rr.r6 = (const NMPlatformIP6Route){
+            .type_coerced = nmtst_rand_select(RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT),
+            .metric       = 1000,
+        };
+    }
+
+    nm_platform_ip_route_normalize(addr_family, &rr.rx);
+
+    if (IS_IPv4)
+        r = nm_platform_ip4_route_add(NM_PLATFORM_GET, NMP_NLM_FLAG_APPEND, &rr.r4);
+    else
+        r = nm_platform_ip6_route_add(NM_PLATFORM_GET, NMP_NLM_FLAG_APPEND, &rr.r6);
+
+    g_assert_cmpint(r, ==, 0);
+
+    nmp_object_stackinit(&obj_stack, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4), &rr);
+
+    obj = nm_platform_lookup_obj(NM_PLATFORM_GET, NMP_CACHE_ID_TYPE_OBJECT_TYPE, &obj_stack);
+
+    _LOGT(">>> adding %s",
+          nmp_object_to_string(&obj_stack, NMP_OBJECT_TO_STRING_ALL, g_alloca(1000), 1000));
+    _LOGT(">>> found  %s",
+          nmp_object_to_string(obj, NMP_OBJECT_TO_STRING_ALL, g_alloca(1000), 1000));
+
+    g_assert(obj);
+
+    head_entry = nm_platform_lookup_object(NM_PLATFORM_GET, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4), 0);
+    g_assert(head_entry);
+    g_assert_cmpint(head_entry->len, ==, 1);
+    i = 0;
+    nm_dedup_multi_iter_for_each (&iter, head_entry) {
+        i++;
+        g_assert(iter.current->obj == obj);
+    }
+    g_assert_cmpint(i, ==, 1);
+}
+
+/*****************************************************************************/
+
 NMTstpSetupFunc const _nmtstp_setup_platform_func = SETUP;
 
 void
@@ -1931,4 +1981,8 @@ _nmtstp_setup_tests(void)
         add_test_func_data("/route/rule/3", test_rule, GINT_TO_POINTER(3));
         add_test_func_data("/route/rule/4", test_rule, GINT_TO_POINTER(4));
     }
+    if (nmtstp_is_root_test()) {
+        add_test_func_data("/route/blackhole/1", test_blackhole, GINT_TO_POINTER(1));
+        add_test_func_data("/route/blackhole/2", test_blackhole, GINT_TO_POINTER(2));
+    }
 }
diff --git a/src/core/platform/tests/test-tc.c b/src/core/platform/tests/test-tc.c
index ee7b861e..db23a932 100644
--- a/src/core/platform/tests/test-tc.c
+++ b/src/core/platform/tests/test-tc.c
@@ -39,11 +39,11 @@ qdiscs_lookup(int ifindex)
 static void
 test_qdisc1(void)
 {
-    int               ifindex;
+    int                          ifindex;
     gs_unref_ptrarray GPtrArray *known = NULL;
     gs_unref_ptrarray GPtrArray *plat  = NULL;
-    NMPObject *                  obj;
-    NMPlatformQdisc *            qdisc;
+    NMPObject                   *obj;
+    NMPlatformQdisc             *qdisc;
 
     ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     g_assert_cmpint(ifindex, >, 0);
@@ -76,11 +76,11 @@ test_qdisc1(void)
 static void
 test_qdisc_fq_codel(void)
 {
-    int               ifindex;
+    int                          ifindex;
     gs_unref_ptrarray GPtrArray *known = NULL;
     gs_unref_ptrarray GPtrArray *plat  = NULL;
-    NMPObject *                  obj;
-    NMPlatformQdisc *            qdisc;
+    NMPObject                   *obj;
+    NMPlatformQdisc             *qdisc;
 
     ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     g_assert_cmpint(ifindex, >, 0);
@@ -115,11 +115,11 @@ test_qdisc_fq_codel(void)
 static void
 test_qdisc_sfq(void)
 {
-    int               ifindex;
+    int                          ifindex;
     gs_unref_ptrarray GPtrArray *known = NULL;
     gs_unref_ptrarray GPtrArray *plat  = NULL;
-    NMPObject *                  obj;
-    NMPlatformQdisc *            qdisc;
+    NMPObject                   *obj;
+    NMPlatformQdisc             *qdisc;
 
     ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     g_assert_cmpint(ifindex, >, 0);
@@ -154,11 +154,11 @@ test_qdisc_sfq(void)
 static void
 test_qdisc_tbf(void)
 {
-    int               ifindex;
+    int                          ifindex;
     gs_unref_ptrarray GPtrArray *known = NULL;
     gs_unref_ptrarray GPtrArray *plat  = NULL;
-    NMPObject *                  obj;
-    NMPlatformQdisc *            qdisc;
+    NMPObject                   *obj;
+    NMPlatformQdisc             *qdisc;
 
     ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME);
     g_assert_cmpint(ifindex, >, 0);