[PATCH] - Numeric DHCP option request facility

Denys Vlasenko vda.linux at googlemail.com
Sat Jun 4 02:58:42 UTC 2011


On Tuesday 31 May 2011 17:37, Nigel Hathaway wrote:
> Package: busybox
> Version: v1.18.4
> Severity: low
> 
> This patch applies on top of my previous VLAN and numeric DHCP option recognition patch.
> 
> Whist this previous patch allows you to have DHCP options that are unknown to Busybox to be passed numerically to the udhcpc script, I found that there was no way of actually adding them to the list of requested options passed to the DHCP server. This rectifies this in that you can now request DHCP options by number. For example:
> 
> udhcpc -O43
> 
> This adds option 43 (vendor specific information) to the set of requested options.

+       uint8_t opt_remainder_mask[256 / 8];

        udhcp_add_simple_option(packet, DHCP_MAX_SIZE, htons(IP_UDP_DHCP_SIZE));

@@ -398,6 +399,7 @@
         * from stubborn DHCP servers. Pull the data from the struct in common.c.
         * No bounds checking because it goes towards the head of the packet. */
        end = udhcp_end_option(packet->options);
+       memcpy(opt_remainder_mask, client_config.opt_mask, sizeof(opt_remainder_mask));
        len = 0;
        for (i = 0; (c = dhcp_optflags[i].code) != 0; i++) {
                if ((   (dhcp_optflags[i].flags & OPTION_REQ)
@@ -406,9 +408,16 @@
                 || (client_config.opt_mask[c >> 3] & (1 << (c & 7)))
                ) {
                        packet->options[end + OPT_DATA + len] = c;
+                       opt_remainder_mask[c >> 3] &= ~(1 << (c & 7));
                        len++;
                }
        }
+       for (c = 1; c < 254; c++) {
+               if (opt_remainder_mask[c >> 3] & (1 << (c & 7))) {
+                       packet->options[end + OPT_DATA + len] = c;
+                       len++;
+               }
+       }

Why do you need opt_remainder_mask[]?
Why existing code, which uses client_config.opt_mask[],
can't be used to track unknown options too?

-- 
vda


More information about the busybox mailing list