25 #ifndef __IP6_MFIB_H__ 26 #define __IP6_MFIB_H__ 39 #define IP6_MFIB_DEFAULT_HASH_NUM_BUCKETS (64 * 1024) 40 #define IP6_MFIB_DEFAULT_HASH_MEMORY_SIZE (32<<20) 63 const ip6_address_t *
src,
64 const ip6_address_t *grp,
67 const ip6_address_t *
src,
68 const ip6_address_t *grp);
70 const ip6_address_t *grp,
71 const ip6_address_t *
src,
74 const ip6_address_t *
src,
75 const ip6_address_t *grp,
79 const ip6_address_t *grp,
80 const ip6_address_t *
src,
84 const ip6_address_t *grp,
85 const ip6_address_t *
src,
142 const ip6_address_t *
src,
143 const ip6_address_t *grp);
fib_node_index_t ip6_mfib_table_get_less_specific(const ip6_mfib_t *mfib, const ip6_address_t *src, const ip6_address_t *grp, u32 len)
void ip6_mfib_table_entry_insert(ip6_mfib_t *fib, const ip6_address_t *grp, const ip6_address_t *src, u32 len, fib_node_index_t fib_entry_index)
void ip6_mfib_table_entry_remove(ip6_mfib_t *fib, const ip6_address_t *grp, const ip6_address_t *src, u32 len)
fib_node_index_t ip6_mfib_table_fwd_lookup(const ip6_mfib_t *fib, const ip6_address_t *src, const ip6_address_t *grp)
u32 ip6_mfib_table_create_and_lock(mfib_source_t src)
i32 dst_address_length_refcounts[257]
enum mfib_source_t_ mfib_source_t
Possible [control plane] sources of MFIB entries.
u8 * format_ip6_mfib_table_memory(u8 *s, va_list *args)
format (display) ipv6 MFIB mempry usage
A representation of a single IP6 mfib table.
void ip6_mfib_table_destroy(ip6_mfib_t *fib)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
uword * mfib_index_by_table_id
Hash table mapping table id to multicast fib index.
fib_node_index_t ip6_mfib_table_lookup2(const ip6_mfib_t *mfib, const ip6_address_t *src, const ip6_address_t *grp)
Data-plane lookup function.
void ip6_mfib_table_walk(ip6_mfib_t *mfib, mfib_table_walk_fn_t fn, void *ctx)
Walk the IP6 mfib table.
void ip6_mfib_interface_enable_disable(u32 sw_if_index, int is_enable)
Add/remove the interface from the accepting list of the special MFIB entries.
u32 fib_node_index_t
A typedef of a node index.
ip6_mfib_table_instance_t ip6_mfib_table
the single MFIB table
uword * non_empty_dst_address_length_bitmap
u16 * prefix_lengths_in_search_order
static u32 ip6_mfib_index_from_table_id(u32 table_id)
walk_rc_t(* mfib_table_walk_fn_t)(fib_node_index_t fei, void *ctx)
Call back function when walking entries in a FIB table.
struct mfib_table_t_ * mfibs
Vector of MFIBs.
fib_node_index_t ip6_mfib_table_lookup(const ip6_mfib_t *fib, const ip6_address_t *src, const ip6_address_t *grp, u32 len)
struct ip6_mfib_table_instance_t_ ip6_mfib_table_instance_t
A representation of a single IP6 mfib table.
u32 ip6_mfib_table_get_index_for_sw_if_index(u32 sw_if_index)
static ip6_mfib_t * ip6_mfib_get(u32 index)
Get the FIB at the given index.
u32 ip6_mfib_table_find_or_create_and_lock(u32 table_id, mfib_source_t src)
Get or create an IPv4 fib.
fib_node_index_t ip6_mfib_table_lookup_exact_match(const ip6_mfib_t *fib, const ip6_address_t *grp, const ip6_address_t *src, u32 len)
vl_api_interface_index_t sw_if_index
clib_bihash_40_8_t ip6_mhash