/*
* skip to the next best source after this one
*/
- if (source <= src->fes_src)
+ switch (fib_source_cmp(source, src->fes_src))
{
+ case FIB_SOURCE_CMP_BETTER:
+ case FIB_SOURCE_CMP_EQUAL:
continue;
- }
- else
- {
+ case FIB_SOURCE_CMP_WORSE:
best_src = next_src;
- break;
+ goto out;
}
}));
-
+ out:
return (best_src);
}
* there is another source for this entry. activate it so it
* can provide forwarding
*/
- FIB_ENTRY_SRC_VFT_INVOKE(best_src, fesv_deactivate,
+ FIB_ENTRY_SRC_VFT_INVOKE(fib_entry, best_src, fesv_deactivate,
(best_src, fib_entry));
}
}
void
fib_entry_src_interpose_register (void)
{
- fib_entry_src_register(FIB_SOURCE_INTERPOSE, &interpose_src_vft);
+ fib_entry_src_behaviour_register(FIB_SOURCE_BH_INTERPOSE,
+ &interpose_src_vft);
}