fib: Set the GLEAN flag on attached export routes so that the SAS works
[vpp.git] / src / vnet / fib / fib_types.c
index e2b8df7..eab5ca2 100644 (file)
@@ -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);
+}