From 375311479461e91a52f0c9e97455d0af8b45f5d5 Mon Sep 17 00:00:00 2001 From: Gabriel Ganne <gabriel.ganne@enea.com> Date: Wed, 12 Apr 2017 14:24:56 +0200 Subject: [PATCH] add bindings for NSH over GRE Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com> --- scapy/contrib/nsh.py | 2 ++ scapy/contrib/nsh.uts | 3 +++ 2 files changed, 5 insertions(+) diff --git a/scapy/contrib/nsh.py b/scapy/contrib/nsh.py index 39ad3c05..fd6778b1 100644 --- a/scapy/contrib/nsh.py +++ b/scapy/contrib/nsh.py @@ -9,6 +9,7 @@ from scapy.layers.inet import Ether, IP from scapy.layers.inet6 import IPv6 from scapy.layers.vxlan import VXLAN from scapy.packet import Packet +from scapy.layers.l2 import GRE from scapy.contrib.mpls import MPLS @@ -71,6 +72,7 @@ class NSH(Packet): bind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F) bind_layers(VXLAN, NSH, {'flags': 0xC, 'NextProtocol': 4}, NextProtocol=4) +bind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F) bind_layers(NSH, IP, {'NextProto': 1}, NextProto=1) bind_layers(NSH, IPv6, {'NextProto': 2}, NextProto=2) diff --git a/scapy/contrib/nsh.uts b/scapy/contrib/nsh.uts index 246d74f4..f25d7924 100644 --- a/scapy/contrib/nsh.uts +++ b/scapy/contrib/nsh.uts @@ -12,3 +12,6 @@ str(NSH(Len=2, NSP=42, NSI=1)/NSH()) == b'\x00\x02\x01\x04\x00\x00*\x01\x00\x00\ = Build a Ethernet over NSH over Ethernet packet (NSH over Ethernet encapsulating the original packet) and verify Ethernet Bindings str(Ether(src="00:00:00:00:00:01", dst="00:00:00:00:00:02")/NSH()/Ether(src="00:00:00:00:00:03", dst="00:00:00:00:00:04")/ARP(psrc="10.0.0.1", hwsrc="00:00:00:00:00:01")) == b'\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x01\x89O\x00\x00\x01\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x03\x08\x06\x00\x01\x08\x00\x06\x04\x00\x01\x00\x00\x00\x00\x00\x01\n\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + += Build a NSH over GRE packet, and verify GRE Bindings +str(Ether(src="00:00:00:00:00:01", dst="00:00:00:00:00:02")/IP(src="1.1.1.1", dst="2.2.2.2")/GRE()/NSH()/Ether(src="00:00:00:00:00:03", dst="00:00:00:00:00:04")/ARP(psrc="10.0.0.1", hwsrc="00:00:00:00:00:01")) == '\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x01\x08\x00\x45\x00\x00\x5a\x00\x01\x00\x00\x40\x2f\x74\x6f\x01\x01\x01\x01\x02\x02\x02\x02\x00\x00\x89\x4f\x00\x00\x01\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x03\x08\x06\x00\x01\x08\x00\x06\x04\x00\x01\x00\x00\x00\x00\x00\x01\x0a\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' -- GitLab