]> 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 21:37:09 +0000 (17:37 -0400)
committerMark Stapp <mjs@voltanet.io>
Fri, 16 Oct 2020 21:37:09 +0000 (17:37 -0400)
[7.5 version]
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 f56f585e9a1885cd2f651713c19c889b1fe2fc69..10b5f3c174a3b64deec79d237a8561b75df466bd 100644 (file)
@@ -1355,8 +1355,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;
 
@@ -1370,17 +1368,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;
 }
 
 /*