+ case AF_INET6: {
+ unsigned i, m, n = ap->len;
+ for (i = 0; n >= 8; i++, n -= 8) {
+ if (ap->addr.ipv6.s6_addr[i] != a->ipv6.s6_addr[i])
+ return (0);
+ }
+ if (!n) return (1);
+ m = (MASK8 << (8 - n)) & MASK8;
+ return (((ap->addr.ipv6.s6_addr[i] ^ a->ipv6.s6_addr[i]) & m) == 0);
+ }