Skip to content

Commit c70f15c

Browse files
Fix: DHCPv6_am returns Reply instead of Solicit for DHCP6_Request
1 parent b54fdb7 commit c70f15c

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

scapy/layers/dhcp6.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ def _include_options(query, answer):
18751875
client_duid = p[DHCP6OptClientId].duid
18761876
resp = IPv6(src=self.src_addr, dst=req_src)
18771877
resp /= UDP(sport=547, dport=546)
1878-
resp /= DHCP6_Solicit(trid=trid)
1878+
resp /= DHCP6_Reply(trid=trid)
18791879
resp /= DHCP6OptServerId(duid=self.duid)
18801880
resp /= DHCP6OptClientId(duid=client_duid)
18811881

test/scapy/layers/dhcp6.uts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,3 +1626,15 @@ a.sport == 546 and a.dport == 547
16261626
= DHCP6_AddrRegReply - Dispatch based on UDP port
16271627
a=UDP(raw(UDP()/DHCP6_AddrRegReply()))
16281628
isinstance(a.payload, DHCP6_AddrRegReply)
1629+
1630+
############
1631+
############
1632+
+ DHCP6_Reply - make_reply generates DHCP6_Reply and not DHCP6_Solicit in response to DHCP6_Request
1633+
1634+
= DHCP6_Reply - Test that make_reply generates DHCP6_Reply and not DHCP6_Solicit in response to DHCP6_Request
1635+
req = IPv6(src="fe80::1", dst="ff02::1:2")/UDP(sport=546, dport=547)/DHCP6_Request(trid=1)/DHCP6OptClientId(duid=2)
1636+
am = DHCPv6_am()
1637+
am.src_addr = "fe80::2"
1638+
am.duid = 3
1639+
reply = am.make_reply(req)
1640+
reply.haslayer(DHCP6_Reply) and not reply.haslayer(DHCP6_Solicit)

0 commit comments

Comments
 (0)