> From: Anurag Mandal [mailto:[email protected]] > Sent: Wednesday, 12 August 2026 13.03 > > The RIB library named the mempool holding its nodes "MP_<name>". > That prefix is the one the mempool library itself prepends to > the backing memzone, so the memzone ended up named > "MP_MP_<name>" which is improper. > > The FIB library passed its own name unchanged to the underlying > RIB and did not add a prefix to the RIB name. > > This patch makes name each object after its owner. > The node mempool of a RIB is now "RIB_<name>" or "RIB6_<name>", > and the RIB owned by a FIB is now "FIB_<name>" or "FIB6_<name>". > > A mempool name is limited to RTE_MEMPOOL_NAMESIZE, which is much > shorter than RTE_RIB_NAMESIZE. > The name was passed down silently and an oversized one surfaced > as an opaque rte_mempool_create() failure, so check the derived > name up front and return ENAMETOOLONG instead. B > ecause the prefixes now stack, a name is limited to 21 characters > for a RIB, 20 for a RIB6, 17 for a FIB and 15 for a FIB6. > Hence, shortening the names used by the graph nodes, the l3fwd > example and the unit tests accordingly. > > Bugzilla ID: 1981 1982 > Fixes: 5a5793a5ffa2 ("rib: add RIB library") > Fixes: f7e861e21c46 ("rib: support IPv6") > Fixes: 39e927248416 ("fib: add FIB library") > Fixes: 40d41a8a7b34 ("fib: support IPv6")
This patch reduces how long a FIB/RIB name can be, which is an API break. I don't think it should be backported. > > Signed-off-by: Anurag Mandal <[email protected]> > --- Some comments inline below. With those comments addressed, Acked-by: Morten Brørup <[email protected]> [...] > diff --git a/doc/guides/rel_notes/release_26_11.rst > b/doc/guides/rel_notes/release_26_11.rst > index c8cc86295d..043ce8fc2d 100644 > --- a/doc/guides/rel_notes/release_26_11.rst > +++ b/doc/guides/rel_notes/release_26_11.rst > @@ -93,6 +93,11 @@ API Changes > Also, make sure to start the actual text at the margin. > ======================================================= > > +* rib: The node mempool created by ``rte_rib_create()`` and > ``rte_rib6_create()`` > + is now named ``RIB_<name>`` and ``RIB6_<name>`` instead of > ``MP_<name>``. > + > +* fib: The RIB created by ``rte_fib_create()`` and > ``rte_fib6_create()`` > + is now named ``FIB_<name>`` and ``FIB6_<name>``. Please mention in the release notes how long the RIB, RIB6, FIB and FIB6 names are now allowed to be. [...] > diff --git a/lib/fib/rte_fib.c b/lib/fib/rte_fib.c > index 184210f380..e032eca91d 100644 > --- a/lib/fib/rte_fib.c > +++ b/lib/fib/rte_fib.c > @@ -37,6 +37,9 @@ EAL_REGISTER_TAILQ(rte_fib_tailq) > #define FIB_RETURN_IF_TRUE(cond, retval) > #endif > > +/* Prefix used for the memory objects owned by a FIB. */ > +#define FIB_MEM_PREFIX "FIB_" > + > struct rte_fib { > char name[RTE_FIB_NAMESIZE]; > enum rte_fib_type type; /**< Type of FIB struct */ > @@ -173,14 +176,16 @@ rte_fib_create(const char *name, int socket_id, > struct rte_fib_conf *conf) > rib_conf.ext_sz = conf->rib_ext_sz; > rib_conf.max_nodes = conf->max_routes * 2; > > - rib = rte_rib_create(name, socket_id, &rib_conf); > + /* Add FIB Prefix to its mempool name */ > + snprintf(mem_name, sizeof(mem_name), FIB_MEM_PREFIX "%s", name); Please add check for snprintf() return value, to ensure mem_name has 0-termination at the end. Something like (untested): ret = snprintf(mem_name, sizeof(mem_name), FIB_MEM_PREFIX "%s", name); if (unlikely(ret < 0 || ret >= sizeof(mem_name))) { rte_errno = ENAMETOOLONG; return NULL; } This check was already missing, so adding it is an improvement. > + > + rib = rte_rib_create(mem_name, socket_id, &rib_conf); > if (rib == NULL) { > FIB_LOG(ERR, > - "Can not allocate RIB %s", name); > + "Can not allocate RIB %s", mem_name); > return NULL; > } > > - snprintf(mem_name, sizeof(mem_name), "FIB_%s", name); > fib_list = RTE_TAILQ_CAST(rte_fib_tailq.head, rte_fib_list); > > rte_mcfg_tailq_write_lock(); > diff --git a/lib/fib/rte_fib6.c b/lib/fib/rte_fib6.c > index 770becdb61..dbe88fa25c 100644 > --- a/lib/fib/rte_fib6.c > +++ b/lib/fib/rte_fib6.c > @@ -37,6 +37,9 @@ EAL_REGISTER_TAILQ(rte_fib6_tailq) > #define FIB6_RETURN_IF_TRUE(cond, retval) > #endif > > +/* Prefix used for the memory objects owned by a FIB6. */ > +#define FIB6_MEM_PREFIX "FIB6_" > + > struct rte_fib6 { > char name[RTE_FIB6_NAMESIZE]; > enum rte_fib6_type type; /**< Type of FIB struct */ > @@ -172,14 +175,16 @@ rte_fib6_create(const char *name, int socket_id, > struct rte_fib6_conf *conf) > rib_conf.ext_sz = conf->rib_ext_sz; > rib_conf.max_nodes = conf->max_routes * 2; > > - rib = rte_rib6_create(name, socket_id, &rib_conf); > + /* Add FIB6 Prefix to its mempool name */ > + snprintf(mem_name, sizeof(mem_name), FIB6_MEM_PREFIX "%s", name); Also here: Please add check for snprintf() return value, to ensure mem_name has 0-termination at the end.

