From: Roy Marples Date: Mon, 20 Oct 2008 09:56:21 +0000 (+0000) Subject: Calculate netmask from cidr more efficiently. X-Git-Tag: v5.0.0~206 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e99d18942d888d1af56220cd4a2fa67cedc5cc80;p=thirdparty%2Fdhcpcd.git Calculate netmask from cidr more efficiently. --- diff --git a/dhcp.c b/dhcp.c index 79d7b003..bdcc04ea 100644 --- a/dhcp.c +++ b/dhcp.c @@ -534,13 +534,8 @@ decode_rfc3442_rt(int dl, const uint8_t *data) /* If we have ocets then we have a destination and netmask */ if (ocets > 0) { memcpy(&rt->dest.s_addr, p, ocets); - memset(&rt->net.s_addr, 255, ocets); - memset((uint8_t *)&rt->net.s_addr + (ocets - 1), - (256 - (1 << (32 - cidr) % 8)), 1); p += ocets; - } else { - rt->dest.s_addr = 0; - rt->net.s_addr = 0; + rt->net.s_addr = htonl(~0 << (32 - cidr)); } /* Finally, snag the router */