diff options
Diffstat (limited to 'networking/udhcp/dhcpc.c')
-rw-r--r-- | networking/udhcp/dhcpc.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index 07e2eadfe..e44086c2e 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c | |||
@@ -150,18 +150,6 @@ static int sprint_nip(char *dest, const char *pre, const uint8_t *ip) | |||
150 | return sprintf(dest, "%s%u.%u.%u.%u", pre, ip[0], ip[1], ip[2], ip[3]); | 150 | return sprintf(dest, "%s%u.%u.%u.%u", pre, ip[0], ip[1], ip[2], ip[3]); |
151 | } | 151 | } |
152 | 152 | ||
153 | /* really simple implementation, just count the bits */ | ||
154 | static int mton(uint32_t mask) | ||
155 | { | ||
156 | int i = 0; | ||
157 | mask = ntohl(mask); /* 111110000-like bit pattern */ | ||
158 | while (mask) { | ||
159 | i++; | ||
160 | mask <<= 1; | ||
161 | } | ||
162 | return i; | ||
163 | } | ||
164 | |||
165 | #if ENABLE_FEATURE_UDHCPC_SANITIZEOPT | 153 | #if ENABLE_FEATURE_UDHCPC_SANITIZEOPT |
166 | /* Check if a given name represents a valid DNS name */ | 154 | /* Check if a given name represents a valid DNS name */ |
167 | /* See RFC1035, 2.3.1 */ | 155 | /* See RFC1035, 2.3.1 */ |
@@ -508,7 +496,8 @@ static void fill_envp(struct dhcp_packet *packet) | |||
508 | /* Generate extra envvar for DHCP_SUBNET, $mask */ | 496 | /* Generate extra envvar for DHCP_SUBNET, $mask */ |
509 | uint32_t subnet; | 497 | uint32_t subnet; |
510 | move_from_unaligned32(subnet, opt_item->data); | 498 | move_from_unaligned32(subnet, opt_item->data); |
511 | putenvp(xasprintf("mask=%u", mton(subnet))); | 499 | //FIXME: we do not check that subnet has bit pattern 11..10..0 |
500 | putenvp(xasprintf("mask=%u", bb_popcnt_32(subnet))); | ||
512 | } | 501 | } |
513 | } else { | 502 | } else { |
514 | unsigned ofs; | 503 | unsigned ofs; |