memset(dstp, 0, (size_t)(addre - dstp));
}
-int
-rt_cmp_dest(const struct rt *rt1, const struct rt *rt2)
-{
- union sa_ss ma1 = { .sa.sa_family = AF_UNSPEC };
- union sa_ss ma2 = { .sa.sa_family = AF_UNSPEC };
-
- rt_maskedaddr(&ma1.sa, &rt1->rt_dest, &rt1->rt_netmask);
- rt_maskedaddr(&ma2.sa, &rt2->rt_dest, &rt2->rt_netmask);
- return sa_cmp(&ma1.sa, &ma2.sa);
-}
-
/*
* On some systems, host routes have no need for a netmask.
* However DHCP specifies host routes using an all-ones netmask.
return sa_cmp(&rt1->rt_netmask, &rt2->rt_netmask);
}
+int
+rt_cmp_dest(const struct rt *rt1, const struct rt *rt2)
+{
+ union sa_ss ma1 = { .sa.sa_family = AF_UNSPEC };
+ union sa_ss ma2 = { .sa.sa_family = AF_UNSPEC };
+ int c;
+
+ rt_maskedaddr(&ma1.sa, &rt1->rt_dest, &rt1->rt_netmask);
+ rt_maskedaddr(&ma2.sa, &rt2->rt_dest, &rt2->rt_netmask);
+ c = sa_cmp(&ma1.sa, &ma2.sa);
+ if (c != 0)
+ return c;
+
+ return rt_cmp_netmask(rt1, rt2);
+}
+
static int
rt_compare_os(__unused void *context, const void *node1, const void *node2)
{