From b7a4e40b754f58de1ffad458ef5b1e3a4e51b5e6 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Wed, 10 Feb 2016 19:52:14 +0100
Subject: [PATCH] LLTD: add UT for Large TLVs

---
 scapy/layers/lltd.py |  1 +
 test/regression.uts  | 30 ++++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/scapy/layers/lltd.py b/scapy/layers/lltd.py
index 115e6255..7a4a644c 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 f317c611..af22f521 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'
+
 
 ############
 ############
-- 
GitLab