fib->dp = dir24_8_create(dp_name, socket_id, conf);
if (fib->dp == NULL)
return -rte_errno;
- fib->lookup = dir24_8_get_lookup_fn(conf);
+ fib->lookup = dir24_8_get_lookup_fn(fib->dp,
+ RTE_FIB_LOOKUP_DEFAULT);
fib->modify = dir24_8_modify;
return 0;
default:
{
return (fib == NULL) ? NULL : fib->rib;
}
+
+int
+rte_fib_select_lookup(struct rte_fib *fib,
+ enum rte_fib_lookup_type type)
+{
+ rte_fib_lookup_fn_t fn;
+
+ switch (fib->type) {
+ case RTE_FIB_DIR24_8:
+ fn = dir24_8_get_lookup_fn(fib->dp, type);
+ if (fn == NULL)
+ return -EINVAL;
+ fib->lookup = fn;
+ return 0;
+ default:
+ return -EINVAL;
+ }
+}