feat(tests): IPv6 fixes
[csit.git] / GPL / traffic_scripts / vxlan.py
1 # Copyright (c) 2021 Cisco and/or its affiliates.
2 #
3 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
4 #
5 # Licensed under the Apache License 2.0 or
6 # GNU General Public License v2.0 or later;  you may not use this file
7 # except in compliance with one of these Licenses. You
8 # may obtain a copy of the Licenses at:
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #     https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 #
13 # Note: If this file is linked with Scapy, which is GPLv2+, your use of it
14 # must be under GPLv2+.  If at any point in the future it is no longer linked
15 # with Scapy (or other GPLv2+ licensed software), you are free to choose
16 # Apache 2.
17 #
18 # Unless required by applicable law or agreed to in writing, software
19 # distributed under the License is distributed on an "AS IS" BASIS,
20 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 # See the License for the specific language governing permissions and
22 # limitations under the License.
23
24 """Traffic script for vxlan verification."""
25
26 from scapy.fields import BitField, XByteField, X3BytesField
27 from scapy.layers.inet import UDP
28 from scapy.layers.l2 import Ether
29 from scapy.packet import Packet, bind_layers
30
31
32 class VXLAN(Packet):
33     """Custom scapy layer override for VXLAN."""
34
35     name = u"VXLAN"
36     fields_desc = [
37         BitField(u"flags", 0x08000000, 32),
38         X3BytesField(u"vni", 0),
39         XByteField(u"reserved", 0x00)
40     ]
41
42     def mysummary(self):
43         return self.sprintf(f"VXLAN (vni={VXLAN.vni})")
44
45
46 bind_layers(UDP, VXLAN, dport=4789)
47 bind_layers(VXLAN, Ether)