fib: Add some path-list flags to its key
[vpp.git] / src / vnet / fib / fib_path_list.h
index 18835a6..4ed5713 100644 (file)
@@ -104,6 +104,13 @@ typedef enum fib_path_list_flags_t_ {
         _item <= FIB_PATH_LIST_ATTRIBUTE_LAST;         \
         _item++)
 
+/**
+ * The flags on a path-list that contribute to its key in the DB.
+ * So path-lists with these flags different are not conisdered the
+ * same.
+ */
+#define FIB_PATH_LIST_KEY_FLAGS (FIB_PATH_LIST_FLAG_NO_URPF)
+
 extern fib_node_index_t fib_path_list_create(fib_path_list_flags_t flags,
                                             const fib_route_path_t *paths);
 extern fib_node_index_t fib_path_list_create_special(dpo_proto_t nh_proto,
@@ -118,10 +125,10 @@ extern fib_node_index_t fib_path_list_copy_and_path_remove(
     fib_node_index_t pl_index,
     fib_path_list_flags_t flags,
     const fib_route_path_t *path);
-extern fib_node_index_t fib_path_list_path_add (
+extern fib_node_index_t* fib_path_list_paths_add (
     fib_node_index_t path_list_index,
     const fib_route_path_t *rpaths);
-extern fib_node_index_t fib_path_list_path_remove (
+extern fib_node_index_t* fib_path_list_paths_remove (
     fib_node_index_t path_list_index,
     const fib_route_path_t *rpaths);
 
@@ -183,6 +190,17 @@ extern void fib_path_list_walk(fib_node_index_t pl_index,
                               fib_path_list_walk_fn_t func,
                               void *ctx);
 
+typedef fib_path_list_walk_rc_t (*fib_path_list_walk_w_ext_fn_t)(
+    fib_node_index_t pl_index,
+    fib_node_index_t path_index,
+    const struct fib_path_ext_t_ *ext_list,
+    void *ctx);
+
+extern void fib_path_list_walk_w_ext(fib_node_index_t pl_index,
+                                     const fib_path_ext_list_t *ext_list,
+                                     fib_path_list_walk_w_ext_fn_t func,
+                                     void *ctx);
+
 extern void fib_path_list_module_init(void);
 
 extern void fib_path_list_module_init(void);