From 66edaf209fcfa618f42c0e6d21873a31de86b412 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Fri, 9 Jul 2021 13:03:52 +0000 Subject: fib: Set the GLEAN flag on attached export routes so that the SAS works correctly. Type: fix Signed-off-by: Neale Ranns Change-Id: I4bc2eb394a8f9d01c5a12de2ce963c22209d5439 --- src/vnet/fib/fib_types.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/vnet/fib/fib_types.c') diff --git a/src/vnet/fib/fib_types.c b/src/vnet/fib/fib_types.c index e2b8df79e63..eab5ca22571 100644 --- a/src/vnet/fib/fib_types.c +++ b/src/vnet/fib/fib_types.c @@ -752,3 +752,36 @@ unformat_fib_route_path (unformat_input_t * input, va_list * args) return (1); } + +/* + * Return true if the path is attached + */ +int +fib_route_path_is_attached (const fib_route_path_t *rpath) +{ + /* + * DVR paths are not attached, since we are not playing the + * L3 game with these + */ + if (rpath->frp_flags & (FIB_ROUTE_PATH_DVR | + FIB_ROUTE_PATH_UDP_ENCAP)) + { + return (0); + } + + /* + * - All zeros next-hop + * - a valid interface + */ + if (ip46_address_is_zero(&rpath->frp_addr) && + (~0 != rpath->frp_sw_if_index)) + { + return (!0); + } + else if (rpath->frp_flags & FIB_ROUTE_PATH_ATTACHED || + rpath->frp_flags & FIB_ROUTE_PATH_GLEAN) + { + return (!0); + } + return (0); +} -- cgit 1.2.3-korg