[RFC PATCH v2 6/7] fib: split DIR24-8 table update from the FIB wrapper
Vladimir Medvedkin
vladimir.medvedkin at intel.com
Wed Oct 14 20:39:20 CEST 2026
Move the body of dir24_8_modify() into dir24_8_modify_dp(), taking the
dataplane table and the RIB directly, and expose it in the internal
header so that another dataplane can drive a DIR24_8 table.
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin at intel.com>
---
lib/fib/dir24_8.c | 34 +++++++++++++++++++++-------------
lib/fib/dir24_8.h | 4 ++++
2 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/lib/fib/dir24_8.c b/lib/fib/dir24_8.c
index 9b14693320..48be1c0617 100644
--- a/lib/fib/dir24_8.c
+++ b/lib/fib/dir24_8.c
@@ -465,26 +465,15 @@ modify_fib(struct dir24_8_tbl *dp, struct rte_rib *rib, uint32_t ip,
}
int
-dir24_8_modify(struct rte_fib *fib, uint16_t vrf_id, uint32_t ip, uint8_t depth,
- uint64_t next_hop, int op)
+dir24_8_modify_dp(struct dir24_8_tbl *dp, struct rte_rib *rib, uint32_t ip,
+ uint8_t depth, uint64_t next_hop, int op)
{
- struct dir24_8_tbl *dp;
- struct rte_rib *rib;
struct rte_rib_node *tmp = NULL;
struct rte_rib_node *node;
struct rte_rib_node *parent;
int ret = 0;
uint64_t par_nh, node_nh;
- RTE_SET_USED(vrf_id);
-
- if ((fib == NULL) || (depth > RTE_FIB_MAXDEPTH))
- return -EINVAL;
-
- dp = rte_fib_get_dp(fib);
- rib = rte_fib_get_rib(fib);
- RTE_ASSERT((dp != NULL) && (rib != NULL));
-
if (next_hop > get_max_nh(dp->nh_sz))
return -EINVAL;
@@ -557,6 +546,25 @@ dir24_8_modify(struct rte_fib *fib, uint16_t vrf_id, uint32_t ip, uint8_t depth,
return -EINVAL;
}
+int
+dir24_8_modify(struct rte_fib *fib, uint16_t vrf_id, uint32_t ip, uint8_t depth,
+ uint64_t next_hop, int op)
+{
+ struct dir24_8_tbl *dp;
+ struct rte_rib *rib;
+
+ RTE_SET_USED(vrf_id);
+
+ if ((fib == NULL) || (depth > RTE_FIB_MAXDEPTH))
+ return -EINVAL;
+
+ dp = rte_fib_get_dp(fib);
+ rib = rte_fib_get_rib(fib);
+ RTE_ASSERT((dp != NULL) && (rib != NULL));
+
+ return dir24_8_modify_dp(dp, rib, ip, depth, next_hop, op);
+}
+
void *
dir24_8_create(const char *name, int socket_id, struct rte_fib_conf *fib_conf)
{
diff --git a/lib/fib/dir24_8.h b/lib/fib/dir24_8.h
index 88c47072d9..99e8be660e 100644
--- a/lib/fib/dir24_8.h
+++ b/lib/fib/dir24_8.h
@@ -308,6 +308,10 @@ int
dir24_8_modify(struct rte_fib *fib, uint16_t vrf_id, uint32_t ip, uint8_t depth,
uint64_t next_hop, int op);
+int
+dir24_8_modify_dp(struct dir24_8_tbl *dp, struct rte_rib *rib, uint32_t ip,
+ uint8_t depth, uint64_t next_hop, int op);
+
int
dir24_8_rcu_qsbr_add(struct dir24_8_tbl *dp, struct rte_fib_rcu_config *cfg,
const char *name);
--
2.43.0
More information about the dev
mailing list