From 8716e6bf43b7043790980c6ef0bd21d42b34a2a1 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Wed, 13 Dec 2017 02:47:27 -0800 Subject: GRE: fix single loop decap and add test Change-Id: I64e8a76a17057ae69de72a5a80c0a194cd0c21cb Signed-off-by: Neale Ranns --- test/patches/scapy-2.3.3/inet6.py.patch | 9 +++++++++ test/test_gre.py | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'test') diff --git a/test/patches/scapy-2.3.3/inet6.py.patch b/test/patches/scapy-2.3.3/inet6.py.patch index f98e70915ca..cf3217eb672 100644 --- a/test/patches/scapy-2.3.3/inet6.py.patch +++ b/test/patches/scapy-2.3.3/inet6.py.patch @@ -183,3 +183,12 @@ diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py ########################### Fragmentation Header ############################ class IPv6ExtHdrFragment(_IPv6ExtHdr): +diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py +index 20afedf..ae3c4dd 100644 +--- a/scapy/layers/inet6.py ++++ b/scapy/layers/inet6.py +@@ -3888,3 +3888,4 @@ bind_layers(IPv6, UDP, nh = socket.IPPROTO_UDP ) + bind_layers(IP, IPv6, proto = socket.IPPROTO_IPV6 ) + bind_layers(IPv6, IPv6, nh = socket.IPPROTO_IPV6 ) + bind_layers(IPv6, IP, nh = socket.IPPROTO_IPIP ) ++bind_layers(IPv6, GRE, nh = socket.IPPROTO_GRE ) diff --git a/test/test_gre.py b/test/test_gre.py index 9046b05f2f6..5cdc0637a1a 100644 --- a/test/test_gre.py +++ b/test/test_gre.py @@ -507,6 +507,9 @@ class TestGRE(VppTestCase): def test_gre6(self): """ GRE IPv6 tunnel Tests """ + self.pg1.config_ip6() + self.pg1.resolve_ndp() + # # Create an L3 GRE tunnel. # - set it admin up @@ -570,6 +573,27 @@ class TestGRE(VppTestCase): self.verify_tunneled_6o6(self.pg2, rx, tx, self.pg2.local_ip6, "1002::1") + # + # Test decap. decapped packets go out pg1 + # + tx = self.create_tunnel_stream_6o6(self.pg2, + "1002::1", + self.pg2.local_ip6, + "2001::1", + self.pg1.remote_ip6) + self.vapi.cli("clear trace") + self.pg2.add_stream(tx) + + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + rx = self.pg1.get_capture(len(tx)) + + # + # RX'd packet is UDP over IPv6, test the GRE header is gone. + # + self.assertFalse(rx[0].haslayer(GRE)) + self.assertEqual(rx[0][IPv6].dst, self.pg1.remote_ip6) + # # test case cleanup # @@ -578,6 +602,7 @@ class TestGRE(VppTestCase): gre_if.remove_vpp_config() self.pg2.unconfig_ip6() + self.pg1.unconfig_ip6() def test_gre_vrf(self): """ GRE tunnel VRF Tests """ -- cgit 1.2.3-korg