aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/dhcpc.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/udhcp/dhcpc.c')
-rw-r--r--networking/udhcp/dhcpc.c15
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 */
154static 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;