linux-cp: lcp fib fixes 19/35519/2
authorVladimir Ratnikov <vratnikov@netgate.com>
Wed, 2 Mar 2022 10:31:42 +0000 (10:31 +0000)
committerMatthew Smith <mgsmith@netgate.com>
Wed, 2 Mar 2022 22:24:17 +0000 (22:24 +0000)
 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 <vratnikov@netgate.com>
Change-Id: I35f73d629a7fffca7f7d4547adc2549b72c2048f

src/plugins/linux-cp/lcp_router.c

index 598fb13..c70acff 100644 (file)
@@ -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