dhcpv4: shrink struct dhcpv4_message
authorDavid Härdeman <[email protected]>
Tue, 7 Oct 2025 07:49:10 +0000 (09:49 +0200)
committerÁlvaro Fernández Rojas <[email protected]>
Tue, 21 Oct 2025 17:05:47 +0000 (19:05 +0200)
The options padding can now be removed.

Signed-off-by: David Härdeman <[email protected]>
Link: https://github.com/openwrt/odhcpd/pull/278
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
src/dhcpv4.c
src/dhcpv4.h

index bc45ee6fa1b98d8d85e8a822b898659e3e0eba73..509f9e78890027ab6bf3c73e4bf82d4a0545fd78 100644 (file)
@@ -219,7 +219,7 @@ static void dhcpv4_fr_send(struct dhcp_assignment *a)
        uint8_t fr_end = DHCPV4_OPT_END;
 
        struct iovec iov[IOV_FR_TOTAL] = {
-               [IOV_FR_HEADER]         = { &fr, offsetof(typeof(fr), options) },
+               [IOV_FR_HEADER]         = { &fr, sizeof(fr) },
                [IOV_FR_MESSAGE]        = { &fr_msg, sizeof(fr_msg) },
                [IOV_FR_AUTH]           = { &fr_auth, 0 },
                [IOV_FR_AUTH_BODY]      = { &fr_auth_body, 0 },
@@ -784,7 +784,7 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
        size_t reply_opts_len = 0;
 
        struct iovec iov[IOV_TOTAL] = {
-               [IOV_HEADER]            = { &reply, offsetof(typeof(reply), options) },
+               [IOV_HEADER]            = { &reply, sizeof(reply) },
                [IOV_MESSAGE]           = { &reply_msg, sizeof(reply_msg) },
                [IOV_SERVERID]          = { &reply_serverid, sizeof(reply_serverid) },
                [IOV_NETMASK]           = { &reply_netmask, 0 },
index 4f4679fa5d924abc0c78d5765580ba7653e8335b..c3a9bcda5ecc2febbfaf0961837b72d9d8f0fbf6 100644 (file)
@@ -94,7 +94,7 @@ struct dhcpv4_message {
        char sname[64];
        char file[128];
        uint32_t cookie;
-       uint8_t options[308];
+       uint8_t options[];
 } _packed;
 
 // RFC2131, §3