from scapy.fields import BitField, XByteField, X3BytesField
from scapy.layers.inet import UDP
from scapy.layers.l2 import Ether
from scapy.packet import Packet, bind_layers


class VXLAN(Packet):
    name = u"VXLAN"
    fields_desc = [
        BitField(u"flags", 0x08000000, 32),
        X3BytesField(u"vni", 0),
        XByteField(u"reserved", 0x00)
    ]

    def mysummary(self):
        return self.sprintf(f"VXLAN (vni={VXLAN.vni})")

bind_layers(UDP, VXLAN, dport=4789)
bind_layers(VXLAN, Ether)