From 33ce60d6759bbbfebb7d489aa591b696e140d870 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Thu, 14 Dec 2017 08:51:32 -0800 Subject: GRE tunnel key includes the FIB table - GRE tunnels with the same src,dst addresses are not the same tunnel - Two data-plane improvements: - the cached key was never updated and so useless - no need to dereference the tunnel's HW interface to get the sw_if_index Change-Id: I2f2ea6e08c759a810b753cec22c497e921a2ca01 Signed-off-by: Neale Ranns --- test/test_gre.py | 19 +++++++++++++++++++ test/vpp_gre_interface.py | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/test_gre.py b/test/test_gre.py index 5cdc0637a1a..7032940cfdb 100644 --- a/test/test_gre.py +++ b/test/test_gre.py @@ -673,6 +673,25 @@ class TestGRE(VppTestCase): rx = self.pg0.get_capture(len(tx)) self.verify_decapped_4o4(self.pg0, rx, tx) + # + # Send tunneled packets that match the created tunnel and + # but arrive on an interface that is not in the tunnel's + # encap VRF, these are dropped + # + self.vapi.cli("clear trace") + tx = self.create_tunnel_stream_4o4(self.pg2, + "2.2.2.2", + self.pg1.local_ip4, + self.pg0.local_ip4, + self.pg0.remote_ip4) + self.pg1.add_stream(tx) + + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + + self.pg0.assert_nothing_captured( + remark="GRE decap packets in wrong VRF") + # # test case cleanup # diff --git a/test/vpp_gre_interface.py b/test/vpp_gre_interface.py index 1c71875f73a..acfd348d64f 100644 --- a/test/vpp_gre_interface.py +++ b/test/vpp_gre_interface.py @@ -9,7 +9,7 @@ class VppGreInterface(VppInterface): """ def __init__(self, test, src_ip, dst_ip, outer_fib_id=0, is_teb=0): - """ Create VPP loopback interface """ + """ Create VPP GRE interface """ self._sw_if_index = 0 super(VppGreInterface, self).__init__(test) self._test = test @@ -42,7 +42,7 @@ class VppGre6Interface(VppInterface): """ def __init__(self, test, src_ip, dst_ip, outer_fib_id=0, is_teb=0): - """ Create VPP loopback interface """ + """ Create VPP GRE interface """ self._sw_if_index = 0 super(VppGre6Interface, self).__init__(test) self._test = test -- cgit 1.2.3-korg