/* * Calculate a netmask of length 'l' for address family 'af' and * store it in 'n'. * Returns 0 on success, -1 on failure. */ static int addr_hostmask(int af, u_int l, struct xaddr *n) { if (addr_netmask(af, l, n) == -1 || addr_invert(n) == -1) return (-1); return (0); }
int addr_host_is_all1s(const struct xaddr* a, int masklen) { struct xaddr tmp_addr, tmp_mask, tmp_result; rte_memcpy(&tmp_addr, a, sizeof(tmp_addr)); if (addr_netmask(a->af, masklen, &tmp_mask) == -1) return (-1); if (addr_or(&tmp_result, &tmp_addr, &tmp_mask) == -1) return (-1); if (addr_invert(&tmp_result) == -1) return (-1); return (addr_is_all0s(&tmp_result)); }