mfib_table_entry_update (u32 fib_index,
const mfib_prefix_t *prefix,
mfib_source_t source,
+ fib_rpf_id_t rpf_id,
mfib_entry_flags_t entry_flags)
{
fib_node_index_t mfib_entry_index;
* update to a non-existing entry with non-zero flags
*/
mfib_entry_index = mfib_entry_create(fib_index, source,
- prefix, entry_flags);
+ prefix, rpf_id,
+ entry_flags);
mfib_table_entry_insert(mfib_table, prefix, mfib_entry_index);
}
if (mfib_entry_update(mfib_entry_index,
source,
entry_flags,
+ rpf_id,
INDEX_INVALID))
{
/*
mfib_entry_index = mfib_entry_create(fib_index,
source,
prefix,
+ MFIB_RPF_ID_NONE,
MFIB_ENTRY_FLAG_NONE);
mfib_table_entry_insert(mfib_table, prefix, mfib_entry_index);
mfib_entry_index = mfib_entry_create(fib_index,
source,
prefix,
+ MFIB_RPF_ID_NONE,
MFIB_ENTRY_FLAG_NONE);
mfib_table_entry_insert(mfib_table, prefix, mfib_entry_index);
mfib_entry_update(mfib_entry_index, source,
(MFIB_ENTRY_FLAG_EXCLUSIVE | entry_flags),
+ MFIB_RPF_ID_NONE,
rep_dpo);
return (mfib_entry_index);
mfib_table->mft_locks++;
}
+void
+mfib_table_walk (u32 fib_index,
+ fib_protocol_t proto,
+ mfib_table_walk_fn_t fn,
+ void *ctx)
+{
+ switch (proto)
+ {
+ case FIB_PROTOCOL_IP4:
+ ip4_mfib_table_walk(ip4_mfib_get(fib_index), fn, ctx);
+ break;
+ case FIB_PROTOCOL_IP6:
+ ip6_mfib_table_walk(ip6_mfib_get(fib_index), fn, ctx);
+ break;
+ case FIB_PROTOCOL_MPLS:
+ break;
+ }
+}
+
u8*
format_mfib_table_name (u8* s, va_list ap)
{