diff options
Diffstat (limited to 'src/network/networkd-route.c')
-rw-r--r-- | src/network/networkd-route.c | 70 |
1 files changed, 4 insertions, 66 deletions
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index c95737e7ab..b6da560afe 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -157,68 +157,6 @@ static void route_hash_func(const Route *route, struct siphash *state) { switch (route->family) { case AF_INET: case AF_INET6: - /* Equality of routes are given by the 4-touple - (dst_prefix,dst_prefixlen,tos,priority,table) */ - siphash24_compress(&route->dst, FAMILY_ADDRESS_SIZE(route->family), state); - siphash24_compress(&route->dst_prefixlen, sizeof(route->dst_prefixlen), state); - siphash24_compress(&route->tos, sizeof(route->tos), state); - siphash24_compress(&route->priority, sizeof(route->priority), state); - siphash24_compress(&route->table, sizeof(route->table), state); - - break; - default: - /* treat any other address family as AF_UNSPEC */ - break; - } -} - -static int route_compare_func(const Route *a, const Route *b) { - int r; - - r = CMP(a->family, b->family); - if (r != 0) - return r; - - switch (a->family) { - case AF_INET: - case AF_INET6: - r = CMP(a->dst_prefixlen, b->dst_prefixlen); - if (r != 0) - return r; - - r = CMP(a->tos, b->tos); - if (r != 0) - return r; - - r = CMP(a->priority, b->priority); - if (r != 0) - return r; - - r = CMP(a->table, b->table); - if (r != 0) - return r; - - r = memcmp(&a->dst, &b->dst, FAMILY_ADDRESS_SIZE(a->family)); - if (r != 0) - return r; - - return memcmp(&a->gw, &b->gw, FAMILY_ADDRESS_SIZE(a->family)); - default: - /* treat any other address family as AF_UNSPEC */ - return 0; - } -} - -DEFINE_PRIVATE_HASH_OPS(route_hash_ops, Route, route_hash_func, route_compare_func); - -static void route_full_hash_func(const Route *route, struct siphash *state) { - assert(route); - - siphash24_compress(&route->family, sizeof(route->family), state); - - switch (route->family) { - case AF_INET: - case AF_INET6: siphash24_compress(&route->gw, FAMILY_ADDRESS_SIZE(route->family), state); siphash24_compress(&route->dst, FAMILY_ADDRESS_SIZE(route->family), state); siphash24_compress(&route->dst_prefixlen, sizeof(route->dst_prefixlen), state); @@ -240,7 +178,7 @@ static void route_full_hash_func(const Route *route, struct siphash *state) { } } -static int route_full_compare_func(const Route *a, const Route *b) { +static int route_compare_func(const Route *a, const Route *b) { int r; r = CMP(a->family, b->family); @@ -302,10 +240,10 @@ static int route_full_compare_func(const Route *a, const Route *b) { } DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR( - route_full_hash_ops, + route_hash_ops, Route, - route_full_hash_func, - route_full_compare_func, + route_hash_func, + route_compare_func, route_free); bool route_equal(Route *r1, Route *r2) { |