summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2020-10-16 17:37:09 -0400
committerMark Stapp <mjs@voltanet.io>2020-10-16 17:37:09 -0400
commitc0a046bf88a109a31a7fc29f958206f94738b9df (patch)
treeec5d3c7278ce9c5af265835b2ec4d7f5978aaacb
parent0b27ab270f422cc03e7a5e2b5d132c71ff5c7c07 (diff)
zebra: support multiple connected subnets on an interface
[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>
-rw-r--r--zebra/zebra_rib.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index f56f585e9a..10b5f3c174 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -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;
}
/*