diff --git a/scapy/layers/lltd.py b/scapy/layers/lltd.py index 115e6255db5c468611e16a2aa8d8d3a8b1508fc7..7a4a644caba6e1539f0d5737aeed4e3b0d346a08 100644 --- a/scapy/layers/lltd.py +++ b/scapy/layers/lltd.py @@ -17,6 +17,7 @@ from scapy.fields import BitField, FlagsField, ByteField, ByteEnumField, \ LongField, MultiEnumField, FieldLenField, FieldListField, \ PacketListField, StrLenField, StrLenFieldUtf16, ConditionalField, MACField from scapy.packet import Packet, Padding, bind_layers +from scapy.plist import PacketList from scapy.layers.l2 import Ether from scapy.layers.inet import IPField from scapy.layers.inet6 import IP6Field diff --git a/test/regression.uts b/test/regression.uts index f317c6112aff0124582625a4d40eba38fa90c44d..af22f521ec7d1f3942fb1d629f4e5909ac03cbcf 100644 --- a/test/regression.uts +++ b/test/regression.uts @@ -4436,6 +4436,36 @@ assert pkt.src == pkt.real_src assert pkt.tos == 0 assert pkt.function == 0 += Large TLV +m1, m2, seq = RandMAC()._fix(), RandMAC()._fix(), 123 +preqbase = Ether(src=m1, dst=m2) / LLTD() / \ + LLTDQueryLargeTlv(type="Detailed Icon Image") +prespbase = Ether(src=m2, dst=m1) / LLTD() / \ + LLTDQueryLargeTlvResp() +plist = [] +pkt = preqbase.copy() +pkt.seq = seq +plist.append(Ether(str(pkt))) +pkt = prespbase.copy() +pkt.seq = seq +pkt.flags = "M" +pkt.value = "abcd" +plist.append(Ether(str(pkt))) +pkt = preqbase.copy() +pkt.seq = seq + 1 +pkt.offset = 4 +plist.append(Ether(str(pkt))) +pkt = prespbase.copy() +pkt.seq = seq + 1 +pkt.value = "efg" +plist.append(Ether(str(pkt))) +builder = LargeTlvBuilder() +builder.parse(plist) +data = builder.get_data() +assert len(data) == 1 +assert data.keys()[0].endswith(' [Detailed Icon Image]') +assert data.values()[0] == 'abcdefg' + ############ ############