X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_fib%2Frte_fib.c;h=e0908084fec73e43af8ded684a54be31a45e4ef5;hb=c0280d5d8ac047b9f56d21d17e2fd0961891072a;hp=4d8a77146ada28bf79b8aced5ec2433d75d14503;hpb=39e927248416c1245b28dcf3cc2b3f66eaf95c6f;p=dpdk.git diff --git a/lib/librte_fib/rte_fib.c b/lib/librte_fib/rte_fib.c index 4d8a77146a..e0908084fe 100644 --- a/lib/librte_fib/rte_fib.c +++ b/lib/librte_fib/rte_fib.c @@ -17,6 +17,8 @@ #include #include +#include "dir24_8.h" + TAILQ_HEAD(rte_fib_list, rte_tailq_entry); static struct rte_tailq_elem rte_fib_tailq = { .name = "RTE_FIB", @@ -92,12 +94,22 @@ static int init_dataplane(struct rte_fib *fib, __rte_unused int socket_id, struct rte_fib_conf *conf) { + char dp_name[sizeof(void *)]; + + snprintf(dp_name, sizeof(dp_name), "%p", fib); switch (conf->type) { case RTE_FIB_DUMMY: fib->dp = fib; fib->lookup = dummy_lookup; fib->modify = dummy_modify; return 0; + case RTE_FIB_DIR24_8: + 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->modify = dir24_8_modify; + return 0; default: return -EINVAL; } @@ -258,6 +270,8 @@ free_dataplane(struct rte_fib *fib) switch (fib->type) { case RTE_FIB_DUMMY: return; + case RTE_FIB_DIR24_8: + dir24_8_free(fib->dp); default: return; }