summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur de Kerhor <arthurdekerhor@gmail.com>2021-06-01 11:42:20 +0200
committerNeale Ranns <neale@graphiant.com>2021-06-03 14:12:54 +0000
commitc5e3a41bbeedcc7486f43edfbc85b63a95865773 (patch)
treeb68a6afbbb81e07847d66be345a9684b3dd063d9
parent9cfbd3b7869db3ca5131c6fd0c0f77b787fa4312 (diff)
fib: fix flags updates when adding routes with a udp encap path
When adding a route via a udp encap instance, FIB_ENTRY_FLAG_IMPORT should not be set. In particular, fib_route_attached_cross_table should always return false for such paths. Modified test_udp_encap to leverage the bug that needed to be fixed. Type: fix Signed-off-by: Arthur de Kerhor <arthurdekerhor@gmail.com> Change-Id: Iaa9489e96d1cff09751f92c62caf7999d924fd7f
-rw-r--r--src/vnet/fib/fib_entry_src.c2
-rw-r--r--test/test_udp.py10
2 files changed, 6 insertions, 6 deletions
diff --git a/src/vnet/fib/fib_entry_src.c b/src/vnet/fib/fib_entry_src.c
index 503473a6099..12857347a9f 100644
--- a/src/vnet/fib/fib_entry_src.c
+++ b/src/vnet/fib/fib_entry_src.c
@@ -1504,7 +1504,7 @@ fib_route_attached_cross_table (const fib_entry_t *fib_entry,
*/
if (ip46_address_is_zero(&rpath->frp_addr) &&
(~0 != rpath->frp_sw_if_index) &&
- !(rpath->frp_flags & FIB_ROUTE_PATH_DVR) &&
+ !(rpath->frp_flags & (FIB_ROUTE_PATH_DVR | FIB_ROUTE_PATH_UDP_ENCAP)) &&
(fib_entry->fe_fib_index !=
fib_table_get_index_for_sw_if_index(fib_entry_get_proto(fib_entry),
rpath->frp_sw_if_index)))
diff --git a/test/test_udp.py b/test/test_udp.py
index 3281c0d9df6..df9a0af3b6c 100644
--- a/test/test_udp.py
+++ b/test/test_udp.py
@@ -141,11 +141,11 @@ class TestUdpEncap(VppTestCase):
# Routes via each UDP encap object - all combinations of v4 and v6.
#
route_4o4 = VppIpRoute(
- self, "1.1.0.1", 32,
+ self, "1.1.0.1", 24,
[VppRoutePath("0.0.0.0",
0xFFFFFFFF,
type=FibPathType.FIB_PATH_TYPE_UDP_ENCAP,
- next_hop_id=udp_encap_0.id)])
+ next_hop_id=udp_encap_0.id)], table_id=1)
route_4o6 = VppIpRoute(
self, "1.1.2.1", 32,
[VppRoutePath("0.0.0.0",
@@ -172,12 +172,12 @@ class TestUdpEncap(VppTestCase):
#
# 4o4 encap
#
- p_4o4 = (Ether(src=self.pg0.remote_mac,
- dst=self.pg0.local_mac) /
+ p_4o4 = (Ether(src=self.pg1.remote_mac,
+ dst=self.pg1.local_mac) /
IP(src="2.2.2.2", dst="1.1.0.1") /
UDP(sport=1234, dport=1234) /
Raw(b'\xa5' * 100))
- rx = self.send_and_expect(self.pg0, p_4o4*NUM_PKTS, self.pg0)
+ rx = self.send_and_expect(self.pg1, p_4o4*NUM_PKTS, self.pg0)
for p in rx:
self.validate_outer4(p, udp_encap_0)
p = IP(p["UDP"].payload.load)