X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Fip6_fib.h;h=583a17f01b87d4382468da2af5ef5f73cf6bcd5b;hb=ae8098350cb7b96f7495fa4d4180238064256e14;hp=9789da4fa97af447648fb3aaf85569a492b982ad;hpb=630198f04916deb35c5b7774823ae1a5dd168a6c;p=vpp.git diff --git a/src/vnet/fib/ip6_fib.h b/src/vnet/fib/ip6_fib.h index 9789da4fa97..583a17f01b8 100644 --- a/src/vnet/fib/ip6_fib.h +++ b/src/vnet/fib/ip6_fib.h @@ -68,10 +68,10 @@ ip6_fib_table_fwding_lookup (ip6_main_t * im, u32 fib_index, const ip6_address_t * dst) { - const ip6_fib_table_instance_t *table; + ip6_fib_table_instance_t *table; + clib_bihash_kv_24_8_t kv, value; int i, len; int rv; - BVT(clib_bihash_kv) kv, value; u64 fib; table = &ip6_main.ip6_table[IP6_FIB_TABLE_FWDING]; @@ -92,7 +92,7 @@ ip6_fib_table_fwding_lookup (ip6_main_t * im, kv.key[1] &= mask->as_u64[1]; kv.key[2] = fib | dst_address_length; - rv = BV(clib_bihash_search_inline_2)(&table->ip6_hash, &kv, &value); + rv = clib_bihash_search_inline_2_24_8(&table->ip6_hash, &kv, &value); if (rv == 0) return value.value; } @@ -102,6 +102,16 @@ ip6_fib_table_fwding_lookup (ip6_main_t * im, return 0; } +/** + * @brief Walk all entries in a sub-tree of the FIB table + * N.B: This is NOT safe to deletes. If you need to delete walk the whole + * table and store elements in a vector, then delete the elements + */ +extern void ip6_fib_table_sub_tree_walk(u32 fib_index, + const fib_prefix_t *root, + fib_table_walk_fn_t fn, + void *ctx); + /** * @brief return the DPO that the LB stacks on. */ @@ -144,8 +154,13 @@ ip6_src_lookup_for_packet (ip6_main_t * im, * \returns A pointer to the retrieved or created fib. * */ -extern u32 ip6_fib_table_find_or_create_and_lock(u32 table_id); -extern u32 ip6_fib_table_create_and_lock(void); +extern u32 ip6_fib_table_find_or_create_and_lock(u32 table_id, + fib_source_t src); +extern u32 ip6_fib_table_create_and_lock(fib_source_t src, + fib_table_flags_t flags, + u8* desc); + +extern u8 *format_ip6_fib_table_memory(u8 * s, va_list * args); static inline ip6_fib_t * ip6_fib_get (fib_node_index_t index)