IFA_UNLOCK(ia);
continue;
}
- if ((flags & PFI_AFLAG_NETWORK) && af == AF_INET6 &&
+ if ((af == AF_INET6) &&
IN6_IS_ADDR_LINKLOCAL(&((struct sockaddr_in6 *)
(void *)ia->ifa_addr)->sin6_addr)) {
IFA_UNLOCK(ia);
continue;
}
+ if ((af == AF_INET6) &&
+ (((struct in6_ifaddr *)ia)->ia6_flags &
+ (IN6_IFF_ANYCAST | IN6_IFF_NOTREADY | IN6_IFF_DETACHED |
+ IN6_IFF_CLAT46 | IN6_IFF_TEMPORARY | IN6_IFF_DEPRECATED))) {
+ IFA_UNLOCK(ia);
+ continue;
+ }
if (flags & PFI_AFLAG_NOALIAS) {
if (af == AF_INET && got4) {
IFA_UNLOCK(ia);