From bd0832936ec90513d3a381cca07de4bf4c932462 Mon Sep 17 00:00:00 2001 From: Pierre LALET <pierre.lalet@cea.fr> Date: Sat, 6 Feb 2016 21:47:30 +0100 Subject: [PATCH] LLTD: support for LLTD Discover messages --- scapy/layers/lltd.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scapy/layers/lltd.py b/scapy/layers/lltd.py index b0ea5718..a98e874c 100644 --- a/scapy/layers/lltd.py +++ b/scapy/layers/lltd.py @@ -13,7 +13,8 @@ import struct from scapy.fields import BitField, FlagsField, ByteField, ByteEnumField, \ ShortField, IntField, IntEnumField, LongField, MultiEnumField, \ - FieldLenField, StrLenField, MACField, StrLenFieldUtf16, ConditionalField + FieldLenField, FieldListField, StrLenField, MACField, StrLenFieldUtf16, \ + ConditionalField from scapy.packet import Packet, Padding, bind_layers from scapy.layers.l2 import Ether from scapy.layers.inet import IPField @@ -95,6 +96,18 @@ class LLTDHello(Packet): MACField("apparent_mapper_address", ETHER_ANY), ] +class LLTDDiscover(Packet): + name = "LLTD - Discover" + fields_desc = [ + ShortField("gen_number", 0), + FieldLenField("stations_count", None, count_of="stations_list", + fmt="H"), + FieldListField("stations_list", [], MACField("", ETHER_ANY), + count_from=lambda pkt: pkt.stations_count) + ] + def mysummary(self): + return self.sprintf("%stations_list%"), [LLTD] + class LLTDAttribute(Packet): name = "LLTD Attribute" show_indent = False @@ -551,6 +564,8 @@ class LLTDAttributeSeesList(LLTDAttribute): ] bind_layers(Ether, LLTD, type=0x88d9) +bind_layers(LLTD, LLTDDiscover, tos=0, function=0) +bind_layers(LLTD, LLTDDiscover, tos=1, function=0) bind_layers(LLTD, LLTDHello, tos=0, function=1) bind_layers(LLTD, LLTDHello, tos=1, function=1) bind_layers(LLTDHello, LLTDAttribute) -- GitLab