Skip to content

Commit f05c8ba

Browse files
authored
Merge pull request #1261 from gpotter2/hunterbuster
Fix IPv6 multicast address record
2 parents 2c5bf91 + 774fb29 commit f05c8ba

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

scapy/layers/inet6.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1612,7 +1612,8 @@ class ICMPv6MLDMultAddrRec(Packet):
16121612
name = "ICMPv6 MLDv2 - Multicast Address Record"
16131613
fields_desc = [ ByteField("rtype", 4),
16141614
FieldLenField("auxdata_len", None,
1615-
length_of="auxdata"),
1615+
length_of="auxdata",
1616+
fmt="B"),
16161617
FieldLenField("sources_number", None,
16171618
length_of="sources",
16181619
adjust=lambda p,num: num//16),

test/regression.uts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3540,12 +3540,21 @@ assert ICMPv6MLQuery2 in p and p.sources_number == 1
35403540
= ICMPv6MLReport2 - build & dissection
35413541
p = IPv6()/IPv6ExtHdrHopByHop(options=[RouterAlert()])/ICMPv6MLReport2(records=[ICMPv6MLDMultAddrRec(), ICMPv6MLDMultAddrRec(sources=["::1"], auxdata="scapy")])
35423542
s = raw(p)
3543-
assert s == b'`\x00\x00\x00\x00O\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01:\x00\x05\x02\x00\x00\x01\x00\x8f\x00\x1e\x9b\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01scapy'
3543+
assert s == b'`\x00\x00\x00\x00M\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01:\x00\x05\x02\x00\x00\x01\x00\x8f\x00\x1a\xa1\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01scapy'
35443544

35453545
p = IPv6(s)
35463546
assert ICMPv6MLReport2 in p and p.records_number == 2
35473547

3548-
= Check awnswers
3548+
= ICMPv6MLReport2 and ICMPv6MLDMultAddrRec - dissection
3549+
3550+
z = b'33\x00\x00\x00\x16\xd0P\x99V\xdd\xf9\x86\xdd`\x00\x00\x00\x00\x1c:\x01\xfe\x80\x00\x00\x00\x00\x00\x00q eX\x98\x86\xfa\x88\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x8f\x00\x13\x4d\x00\x00\x00\x01\x04\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xffR\xf3\xe1'
3551+
w = Ether(z)
3552+
3553+
assert len(w.records) == 1
3554+
assert isinstance(w.records[0], ICMPv6MLDMultAddrRec)
3555+
assert w.records[0].dst == "ff02::1:ff52:f3e1"
3556+
3557+
= Check answers
35493558

35503559
q = IPv6()/IPv6ExtHdrHopByHop(options=[RouterAlert()])/ICMPv6MLQuery2()
35513560
a = IPv6()/IPv6ExtHdrHopByHop(options=[RouterAlert()])/ICMPv6MLReport2()

0 commit comments

Comments
 (0)