From 53f8a272a63444b61b700690a2f438fa5066f37b Mon Sep 17 00:00:00 2001 From: Vladimir Ratnikov Date: Wed, 2 Mar 2022 10:31:42 +0000 Subject: linux-cp: lcp fib fixes Some possible side effects for multicast routes appears to be in lcp_router_table_add_or_lock. so ff00/8 route will be processed for ospf purposes the right way Ignore IPv6 kernel routes Skip adding auto routes into FIB Type: fix Signed-off-by: Vladimir Ratnikov Change-Id: I35f73d629a7fffca7f7d4547adc2549b72c2048f --- src/plugins/linux-cp/lcp_router.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins/linux-cp/lcp_router.c b/src/plugins/linux-cp/lcp_router.c index 598fb13e979..c70acfff1be 100644 --- a/src/plugins/linux-cp/lcp_router.c +++ b/src/plugins/linux-cp/lcp_router.c @@ -941,10 +941,12 @@ lcp_router_route_add (struct rtnl_route *rr) lcp_router_route_mk_prefix (rr, &pfx); entry_flags = lcp_router_route_mk_entry_flags (rtype, table_id, rproto); - /* link local IPv6 */ - if (FIB_PROTOCOL_IP6 == pfx.fp_proto && - (ip6_address_is_multicast (&pfx.fp_addr.ip6) || - ip6_address_is_link_local_unicast (&pfx.fp_addr.ip6))) + nlt = lcp_router_table_add_or_lock (table_id, pfx.fp_proto); + /* Skip any kernel routes and IPv6 LL or multicast routes */ + if (rproto == RTPROT_KERNEL || + (FIB_PROTOCOL_IP6 == pfx.fp_proto && + (ip6_address_is_multicast (&pfx.fp_addr.ip6) || + ip6_address_is_link_local_unicast (&pfx.fp_addr.ip6)))) { LCP_ROUTER_DBG ("route skip: %d:%U %U", rtnl_route_get_table (rr), format_fib_prefix, &pfx, format_fib_entry_flags, @@ -968,7 +970,6 @@ lcp_router_route_add (struct rtnl_route *rr) if (0 != vec_len (np.paths)) { - nlt = lcp_router_table_add_or_lock (table_id, pfx.fp_proto); if (rtype == RTN_MULTICAST) { /* it's not clear to me how linux expresses the RPF paramters -- cgit 1.2.3-korg