patches for DPDK stable branches
 help / color / mirror / Atom feed
* [PATCH] fib6: fix adding default route as first route
@ 2023-10-02 15:12 Vladimir Medvedkin
  2023-10-17 13:27 ` Thomas Monjalon
  0 siblings, 1 reply; 2+ messages in thread
From: Vladimir Medvedkin @ 2023-10-02 15:12 UTC (permalink / raw)
  To: dev; +Cc: stable

Currently when adding default route as first route
it is not added and no error is reported.
When we enter the loop over an address range in
the general case we will eventually reach the check
for when the range has ended, and exit the loop.
However when adding default route as first route,
since address range covered begins and ends at zero
this also triggers loop exit without writing to the table.

Fixed by adding check for default route,
i.e. both ledge and redge are equal to 0::0.

Bugzilla ID: 1272
Fixes: c3e12e0f0354 ("fib: add dataplane algorithm for IPv6")
Cc: stable@dpdk.org

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
 lib/fib/trie.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/lib/fib/trie.c b/lib/fib/trie.c
index 3e780afdaf..09470e7287 100644
--- a/lib/fib/trie.c
+++ b/lib/fib/trie.c
@@ -451,6 +451,14 @@ get_nxt_net(uint8_t *ip, uint8_t depth)
 	}
 }
 
+static int
+v6_addr_is_zero(const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE])
+{
+	uint8_t ip_addr[RTE_FIB6_IPV6_ADDR_SIZE] = {0};
+
+	return rte_rib6_is_equal(ip, ip_addr);
+}
+
 static int
 modify_dp(struct rte_trie_tbl *dp, struct rte_rib6 *rib,
 	const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE],
@@ -484,11 +492,19 @@ modify_dp(struct rte_trie_tbl *dp, struct rte_rib6 *rib,
 				return ret;
 			get_nxt_net(redge, tmp_depth);
 			rte_rib6_copy_addr(ledge, redge);
+			/*
+			 * we got to the end of address space
+			 * and wrapped around
+			 */
+			if (v6_addr_is_zero(ledge))
+				break;
 		} else {
 			rte_rib6_copy_addr(redge, ip);
 			get_nxt_net(redge, depth);
-			if (rte_rib6_is_equal(ledge, redge))
+			if (rte_rib6_is_equal(ledge, redge) &&
+					!v6_addr_is_zero(ledge))
 				break;
+
 			ret = install_to_dp(dp, ledge, redge,
 				next_hop);
 			if (ret != 0)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-10-17 13:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-02 15:12 [PATCH] fib6: fix adding default route as first route Vladimir Medvedkin
2023-10-17 13:27 ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).