Skip to content

Commit 0779ee2

Browse files
systemcrashNoltari
authored andcommitted
dhcpv6-ia: reconfigure message length bug fix
follow-up to ae16476 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) (cherry picked from commit 3fda5f8) Signed-off-by: Paul Donald <newtwen+github@gmail.com> Link: openwrt#361 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
1 parent d69896b commit 0779ee2

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/dhcpv6-ia.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,14 @@ static int send_reconf(struct dhcpv6_lease *assign)
215215

216216
memcpy(clientid.data, assign->duid, assign->duid_len);
217217

218+
size_t serverid_len, clientid_len;
219+
serverid_len = sizeof(serverid.code) + sizeof(serverid.len) + ntohs(serverid.len);
220+
clientid_len = sizeof(clientid.code) + sizeof(clientid.len) + ntohs(clientid.len);
221+
218222
struct iovec iov[IOV_TOTAL] = {
219223
[IOV_HDR] = { &hdr, sizeof(hdr) },
220-
[IOV_SERVERID] = { &serverid, sizeof(serverid) },
221-
[IOV_CLIENTID] = { &clientid, sizeof(clientid) },
224+
[IOV_SERVERID] = { &serverid, serverid_len },
225+
[IOV_CLIENTID] = { &clientid, clientid_len },
222226
[IOV_MESSAGE] = { &message, sizeof(message) },
223227
[IOV_AUTH] = { &auth, sizeof(auth) },
224228
};

0 commit comments

Comments
 (0)