diff options
author | Arthur de Kerhor <arthurdekerhor@gmail.com> | 2021-06-01 11:42:20 +0200 |
---|---|---|
committer | Neale Ranns <neale@graphiant.com> | 2021-06-03 14:12:54 +0000 |
commit | c5e3a41bbeedcc7486f43edfbc85b63a95865773 (patch) | |
tree | b68a6afbbb81e07847d66be345a9684b3dd063d9 | |
parent | 9cfbd3b7869db3ca5131c6fd0c0f77b787fa4312 (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.c | 2 | ||||
-rw-r--r-- | test/test_udp.py | 10 |
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) |