]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: support multiple connected subnets on an interface
authorMark Stapp <mjs@voltanet.io>
Fri, 16 Oct 2020 20:46:33 +0000 (16:46 -0400)
committerMark Stapp <mjs@voltanet.io>
Fri, 16 Oct 2020 20:46:33 +0000 (16:46 -0400)
We support configuration of multiple addresses in the same
subnet on a single interface: make sure that zebra supports
multiple instances of the corresponding connected route.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
zebra/zebra_rib.c

index 0b1450c8f865094a3562ac2a2053b30950dda737..799cfa1b63626a0f612213b5d4a0158df3fa9a51 100644 (file)
@@ -1378,8 +1378,6 @@ static void zebra_rib_fixup_system(struct route_node *rn)
 static bool rib_compare_routes(const struct route_entry *re1,
                               const struct route_entry *re2)
 {
-       bool result = false;
-
        if (re1->type != re2->type)
                return false;
 
@@ -1393,17 +1391,14 @@ static bool rib_compare_routes(const struct route_entry *re1,
            re1->distance != re2->distance)
                return false;
 
-       /* Only connected routes need more checking, nexthop-by-nexthop */
+       /* We support multiple connected routes: this supports multiple
+        * v6 link-locals, and we also support multiple addresses in the same
+        * subnet on a single interface.
+        */
        if (re1->type != ZEBRA_ROUTE_CONNECT)
                return true;
 
-       /* Quick check if shared nhe */
-       if (re1->nhe == re2->nhe)
-               return true;
-
-       result = nexthop_group_equal_no_recurse(&re1->nhe->nhg, &re2->nhe->nhg);
-
-       return result;
+       return false;
 }
 
 /*