fib_path_list_flags_t pl_flags,
const fib_route_path_t *paths)
{
+ fib_node_index_t fib_entry_index;
ip_adjacency_t *adj;
+ fib_entry_index = fib_entry_get_index(entry);
src->fes_pl = fib_path_list_create(pl_flags, paths);
/*
*/
if (!(FIB_ENTRY_FLAG_LOCAL & src->fes_entry_flags))
{
- adj = adj_get(fib_path_list_get_adj(
- src->fes_pl,
- fib_entry_get_default_chain_type(entry)));
+ adj_index_t ai;
- if (IP_LOOKUP_NEXT_GLEAN == adj->lookup_next_index)
+ ai = fib_path_list_get_adj(src->fes_pl,
+ fib_entry_get_default_chain_type(
+ fib_entry_get(fib_entry_index)));
+ if (INDEX_INVALID != ai)
{
- /*
- * the connected prefix will link to a glean on a non-p2p
- * u.interface.
- */
- adj->sub_type.glean.receive_addr = entry->fe_prefix.fp_addr;
+ adj = adj_get(ai);
+
+ if (IP_LOOKUP_NEXT_GLEAN == adj->lookup_next_index)
+ {
+ /*
+ * the connected prefix will link to a glean on a non-p2p
+ * u.interface.
+ */
+ adj->sub_type.glean.receive_addr = entry->fe_prefix.fp_addr;
+ }
}
}
}
void
fib_entry_src_interface_register (void)
{
- fib_entry_src_register(FIB_SOURCE_INTERFACE, &interface_src_vft);
+ fib_entry_src_behaviour_register(FIB_SOURCE_BH_INTERFACE,
+ &interface_src_vft);
}