diff options
author | Neale Ranns <nranns@cisco.com> | 2018-02-25 12:27:18 -0800 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2018-03-19 13:09:45 +0000 |
commit | 2bc940272ec75d1094326eafb4a3fa2c614e3a7b (patch) | |
tree | d813084708e143fc9eb6edbca408ba93beadaf41 /test/patches/scapy-2.4/geneve.patch | |
parent | f38bef46a3511249f352d18072f97a49f2c5b06c (diff) |
Scapy upgrade to 2.4.0.rc5
- many of the patches fd.io applies in test/patches/2.3.3 are now upstreamed in 2.4
- 2.4 adds support for IGMPv3 which is my main motivation for the upgrade
Change-Id: If2c0a524e3cba320b4a5d8cd07817c6ea2bf0c5a
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'test/patches/scapy-2.4/geneve.patch')
-rw-r--r-- | test/patches/scapy-2.4/geneve.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/patches/scapy-2.4/geneve.patch b/test/patches/scapy-2.4/geneve.patch new file mode 100644 index 00000000000..92752f1196e --- /dev/null +++ b/test/patches/scapy-2.4/geneve.patch @@ -0,0 +1,56 @@ +diff --git a/scapy/layers/geneve.py b/scapy/layers/geneve.py +new file mode 100644 +index 0000000..e2ca888 +--- /dev/null ++++ b/scapy/layers/geneve.py +@@ -0,0 +1,50 @@ ++#! /usr/bin/env python ++# (GENEVE): ++# A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks ++ ++from scapy.packet import Packet, bind_layers ++from scapy.layers.l2 import Ether ++from scapy.layers.inet import IP, UDP ++from scapy.layers.inet6 import IPv6 ++from scapy.fields import FlagsField, XByteField, ThreeBytesField, \ ++ ConditionalField, ShortField, ByteEnumField, X3BytesField ++ ++# ++# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++# |Ver| Opt Len |O|C| Rsvd. | Protocol Type | ++# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++# | Virtual Network Identifier (VNI) | Reserved | ++# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++# | Variable Length Options | ++# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++# ++ ++class GENEVE(Packet): ++ name = "GENEVE" ++ ++ fields_desc = [ ++ # INIT = ver + optlen + o + c + rsvd (all zeros) ++ ShortField("init", 0x0), ++ # PROTOCOL is a 2-bytes field ++ ShortField("protocol", 0x6558), ++ ThreeBytesField("vni", 0), ++ XByteField("reserved2", 0), ++ ] ++ ++ def mysummary(self): ++ return self.sprintf("GENEVE (vni=%GENEVE.vni%)") ++ ++bind_layers(UDP, GENEVE, dport=6081) # RFC standard port ++bind_layers(UDP, GENEVE, dport=6081) # New IANA assigned port for use with NSH ++bind_layers(UDP, GENEVE, dport=8472) # Linux implementation port ++# By default, set both ports to the RFC standard ++bind_layers(UDP, GENEVE, sport=6081, dport=6081) ++ ++bind_layers(GENEVE, Ether) ++bind_layers(GENEVE, IP, NextProtocol=1) ++bind_layers(GENEVE, IPv6, NextProtocol=2) ++bind_layers(GENEVE, Ether, flags=4, NextProtocol=0) ++bind_layers(GENEVE, IP, flags=4, NextProtocol=1) ++bind_layers(GENEVE, IPv6, flags=4, NextProtocol=2) ++bind_layers(GENEVE, Ether, flags=4, NextProtocol=3) ++ |