mirror of
https://git.openwrt.org/project/odhcpd.git
synced 2025-12-20 02:17:45 +08:00
dhcpv6-ia: reconfigure message length bug fix
follow-up to ae16476bca
Now, the lengths are actual encoded size, resulting in:
DHCPv6
Message type: Reconfigure (10)
Transaction ID: 0x000000
Server Identifier
Option: Server Identifier (2)
Length: 10
DUID: 00030001xx
DUID Type: link-layer address (3)
Hardware type: Ethernet (1)
Link-layer address: xx
Link-layer address (Ethernet): xx
Client Identifier
Option: Client Identifier (1)
Length: 10
DUID: 00030001xx
DUID Type: link-layer address (3)
Hardware type: Ethernet (1)
Link-layer address: xx
Link-layer address (Ethernet): xx
Reconfigure Message
Option: Reconfigure Message (19)
Length: 1
Reconfigure message type: Renew (5)
The previous calculation would count a full DUID buffer
length, but the buffer size was not adjusted based on
the used size, resulting in DHCPv6 RECONF messages like:
DHCPv6
Message type: Reconfigure (10)
Transaction ID: 0x000000
Server Identifier
Option: Server Identifier (2)
Length: 10
DUID: 0003XXX
DUID Type: link-layer address (3)
Hardware type: Ethernet (1)
Link-layer address: XXX
Link-layer address (Ethernet): XXX
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
Client Identifier
Option: Client Identifier (1)
Length: 18
DUID: 0004xxx
DUID Type: Universally Unique IDentifier (UUID) (4)
UUID: xxx
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
DHCP option 0
Option: Unknown (0)
Length: 0
Reconfigure Message
Option: Reconfigure Message (19)
Length: 1
Reconfigure message type: Renew (5)
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/odhcpd/pull/361
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
committed by
Álvaro Fernández Rojas
parent
6152cf5dab
commit
3fda5f8b12
@@ -215,10 +215,14 @@ static int send_reconf(struct dhcpv6_lease *assign)
|
||||
|
||||
memcpy(clientid.data, assign->duid, assign->duid_len);
|
||||
|
||||
size_t serverid_len, clientid_len;
|
||||
serverid_len = sizeof(serverid.code) + sizeof(serverid.len) + ntohs(serverid.len);
|
||||
clientid_len = sizeof(clientid.code) + sizeof(clientid.len) + ntohs(clientid.len);
|
||||
|
||||
struct iovec iov[IOV_TOTAL] = {
|
||||
[IOV_HDR] = { &hdr, sizeof(hdr) },
|
||||
[IOV_SERVERID] = { &serverid, sizeof(serverid) },
|
||||
[IOV_CLIENTID] = { &clientid, sizeof(clientid) },
|
||||
[IOV_SERVERID] = { &serverid, serverid_len },
|
||||
[IOV_CLIENTID] = { &clientid, clientid_len },
|
||||
[IOV_MESSAGE] = { &message, sizeof(message) },
|
||||
[IOV_AUTH] = { &auth, sizeof(auth) },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user