_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,
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);
{
FIB_PATH_LIST_FWD_FLAG_NONE = 0,
FIB_PATH_LIST_FWD_FLAG_COLLAPSE = (1 << 0),
+ FIB_PATH_LIST_FWD_FLAG_STICKY = (1 << 1),
} fib_path_list_fwd_flags_t;
extern void fib_path_list_contribute_forwarding(fib_node_index_t path_list_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);