udhcpc: make -O
No binary (build failed)
—
(log yok)
| @@ -965,8 +965,6 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) | |
| SERVER_PORT = CLIENT_PORT - 1; | |
| } | |
| #endif | |
| - | if (opt & OPT_o) |
| - | client_config.no_default_options = 1; |
| while (list_O) { | |
| char *optstr = llist_pop(&list_O); | |
| unsigned n = bb_strtou(optstr, NULL, 0); | |
| @@ -976,6 +974,16 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) | |
| } | |
| client_config.opt_mask[n >> 3] |= 1 << (n & 7); | |
| } | |
| + | if (!(opt & OPT_o)) { |
| + | /* |
| + | unsigned i, n; |
| + | for (i = 0; (n = dhcp_optflags[i].code) != 0; i++) { |
| + | if (dhcp_optflags[i].flags & OPTION_REQ) { |
| + | client_config.opt_mask[n >> 3] |= 1 << (n & 7); |
| + | } |
| + | } |
| + | */ |
| + | } |
| while (list_x) { | |
| char *optstr = llist_pop(&list_x); | |
| char *colon = strchr(optstr, ':'); | |
| @@ -589,7 +589,6 @@ static void init_packet(struct dhcp_packet *packet, char type) | |
| static void add_client_options(struct dhcp_packet *packet) | |
| { | |
| - | uint8_t c; |
| int i, end, len; | |
| udhcp_add_simple_option(packet, DHCP_MAX_SIZE, htons(IP_UDP_DHCP_SIZE)); | |
| @@ -599,13 +598,9 @@ static void add_client_options(struct dhcp_packet *packet) | |
| * No bounds checking because it goes towards the head of the packet. */ | |
| end = udhcp_end_option(packet->options); | |
| len = 0; | |
| - | for (i = 0; (c = dhcp_optflags[i].code) != 0; i++) { |
| - | if (( (dhcp_optflags[i].flags & OPTION_REQ) |
| - | && !client_config.no_default_options |
| - | ) |
| - | || (client_config.opt_mask[c >> 3] & (1 << (c & 7))) |
| - | ) { |
| - | packet->options[end + OPT_DATA + len] = c; |
| + | for (i = 1; i < DHCP_END; i++) { |
| + | if (client_config.opt_mask[i >> 3] & (1 << (i & 7))) { |
| + | packet->options[end + OPT_DATA + len] = i; |
| len++; | |
| } | |
| } | |
| @@ -1257,8 +1252,6 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |
| SERVER_PORT = CLIENT_PORT - 1; | |
| } | |
| #endif | |
| - | if (opt & OPT_o) |
| - | client_config.no_default_options = 1; |
| while (list_O) { | |
| char *optstr = llist_pop(&list_O); | |
| unsigned n = bb_strtou(optstr, NULL, 0); | |
| @@ -1268,6 +1261,14 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |
| } | |
| client_config.opt_mask[n >> 3] |= 1 << (n & 7); | |
| } | |
| + | if (!(opt & OPT_o)) { |
| + | unsigned i, n; |
| + | for (i = 0; (n = dhcp_optflags[i].code) != 0; i++) { |
| + | if (dhcp_optflags[i].flags & OPTION_REQ) { |
| + | client_config.opt_mask[n >> 3] |= 1 << (n & 7); |
| + | } |
| + | } |
| + | } |
| while (list_x) { | |
| char *optstr = llist_pop(&list_x); | |
| char *colon = strchr(optstr, ':'); | |
| @@ -9,7 +9,6 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN | |
| struct client_config_t { | |
| uint8_t client_mac[6]; /* Our mac address */ | |
| - | char no_default_options; /* Do not include default options in request */ |
| IF_FEATURE_UDHCP_PORT(uint16_t port;) | |
| int ifindex; /* Index number of the interface to use */ | |
| uint8_t opt_mask[256 / 8]; /* Bitmask of options to send (-O option) */ | |