Skip to content
Snippets Groups Projects
Commit eea93509 authored by Pierre LALET's avatar Pierre LALET
Browse files

VXLAN: clean ConditionalField flag-based conditions

parent 3e99428d
No related branches found
No related tags found
No related merge requests found
......@@ -1153,6 +1153,11 @@ class FlagsField(BitField):
return type(x)(None if v is None else FlagValue(v, self.names)
for v in x)
return None if x is None else FlagValue(x, self.names)
def i2h(self, pkt, x):
if isinstance(x, (list, tuple)):
return type(x)(None if v is None else FlagValue(v, self.names)
for v in x)
return None if x is None else FlagValue(x, self.names)
def i2repr(self, pkt, x):
if isinstance(x, (list, tuple)):
return repr(type(x)(
......
......@@ -26,7 +26,7 @@ class VXLAN(Packet):
'V1', 'V2', 'R', 'G']),
ConditionalField(
ShortField("reserved0", 0),
lambda pkt: pkt.flags & 0x04,
lambda pkt: pkt.flags.NextProtocol,
),
ConditionalField(
ByteEnumField('NextProtocol', 0,
......@@ -35,22 +35,22 @@ class VXLAN(Packet):
2: 'IPv6',
3: 'Ethernet',
4: 'NSH'}),
lambda pkt: pkt.flags & 0x04,
lambda pkt: pkt.flags.NextProtocol,
),
ConditionalField(
ThreeBytesField("reserved1", 0x000000),
lambda pkt: (not pkt.flags & 0x80) and (not pkt.flags & 0x04),
ThreeBytesField("reserved1", 0),
lambda pkt: (not pkt.flags.G) and (not pkt.flags.NextProtocol),
),
ConditionalField(
FlagsField("gpflags", 0x0, 8, _GP_FLAGS),
lambda pkt: pkt.flags & 0x80,
FlagsField("gpflags", 0, 8, _GP_FLAGS),
lambda pkt: pkt.flags.G,
),
ConditionalField(
ShortField("gpid", 0),
lambda pkt: pkt.flags & 0x80,
lambda pkt: pkt.flags.G,
),
X3BytesField("vni", 0),
XByteField("reserved2", 0x00),
XByteField("reserved2", 0),
]
# Use default linux implementation port
......@@ -59,7 +59,7 @@ class VXLAN(Packet):
}
def mysummary(self):
if self.flags & 0x80:
if self.flags.G:
return self.sprintf("VXLAN (vni=%VXLAN.vni% gpid=%VXLAN.gpid%)")
else:
return self.sprintf("VXLAN (vni=%VXLAN.vni%)")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment