+ unsigned plen;
+ inet_prefix netmask_pfx;
+
+ netmask_pfx.family = AF_UNSPEC;
+ plen = bb_strtou(slash + 1, NULL, 0);
+ if ((errno || plen > dst->bitlen)
+ && get_addr_1(&netmask_pfx, slash + 1, family) != 0
+ ) {
+ goto bad;
+ }
+ if (netmask_pfx.family == AF_INET) {
+ /* fill in prefix length of dotted quad */
+ uint32_t mask = ntohl(netmask_pfx.data[0]);
+ uint32_t host = ~mask;
+
+ /* a valid netmask must be 2^n - 1 */
+ if (host & (host + 1))
+ goto bad;
+
+ for (plen = 0; mask; mask <<= 1)
+ ++plen;
+ if (plen > dst->bitlen)
+ goto bad;
+ /* dst->flags |= PREFIXLEN_SPECIFIED; */