|
|
| version 1.2, 2013/05/30 09:07:33 | version 1.2.2.1, 2013/06/03 11:41:45 |
|---|---|
| Line 281 e_usleep(u_int usec) | Line 281 e_usleep(u_int usec) |
| return select(0, NULL, NULL, NULL, &tv); | return select(0, NULL, NULL, NULL, &tv); |
| } | } |
| /* | |
| * e_innet() - Test address match in network | |
| * | |
| * @net = network | |
| * @addr = address | |
| * return: -1 error, 0 match or 1 not match | |
| */ | |
| int | |
| e_innet(netaddr_t * __restrict net, netaddr_t * __restrict addr) | |
| { | |
| register int i; | |
| int ret = 0; | |
| if (!net || !addr) | |
| return -1; | |
| if (net->addr.sa.sa_family != addr->addr.sa.sa_family) | |
| return -1; | |
| switch (net->addr.sa.sa_family) { | |
| case AF_INET: | |
| ret = net->addr.sin.sin_addr.s_addr & net->mask.in.s_addr; | |
| ret -= addr->addr.sin.sin_addr.s_addr & addr->mask.in.s_addr; | |
| break; | |
| case AF_INET6: | |
| for (i = 0; i < sizeof(struct in6_addr); i++) { | |
| ret = net->addr.sin6.sin6_addr.s6_addr[i] & net->mask.in6.s6_addr[i]; | |
| ret -= addr->addr.sin6.sin6_addr.s6_addr[i] & addr->mask.in6.s6_addr[i]; | |
| if (ret) | |
| break; | |
| } | |
| break; | |
| default: | |
| return -1; | |
| } | |
| return !!ret; | |
| } |