Lines Matching refs:sa6
554 sa6_checkzone(struct sockaddr_in6 *sa6) in sa6_checkzone() argument
558 scope = in6_addrscope(&sa6->sin6_addr); in sa6_checkzone()
560 return (sa6->sin6_scope_id ? EINVAL: 0); in sa6_checkzone()
561 if (IN6_IS_ADDR_MULTICAST(&sa6->sin6_addr) && in sa6_checkzone()
564 if (sa6->sin6_scope_id == 0 && V_ip6_use_defzone != 0) in sa6_checkzone()
565 sa6->sin6_scope_id = V_sid_default.s6id_list[scope]; in sa6_checkzone()
574 if (IN6_IS_ADDR_LOOPBACK(&sa6->sin6_addr)) { in sa6_checkzone()
575 if (sa6->sin6_scope_id == 0) in sa6_checkzone()
576 sa6->sin6_scope_id = in6_getscopezone(V_loif, scope); in sa6_checkzone()
577 else if (sa6->sin6_scope_id != in6_getscopezone(V_loif, scope)) in sa6_checkzone()
581 if (sa6->sin6_scope_id != 0) in sa6_checkzone()
584 sa6->sin6_scope_id = V_sid_default.s6id_list[scope]; in sa6_checkzone()
586 return (sa6->sin6_scope_id ? 0: EADDRNOTAVAIL); in sa6_checkzone()
594 sa6_checkzone_ifp(struct ifnet *ifp, struct sockaddr_in6 *sa6) in sa6_checkzone_ifp() argument
598 scope = in6_addrscope(&sa6->sin6_addr); in sa6_checkzone_ifp()
601 if (sa6->sin6_scope_id == 0) { in sa6_checkzone_ifp()
602 sa6->sin6_scope_id = in6_getscopezone(ifp, scope); in sa6_checkzone_ifp()
604 } else if (sa6->sin6_scope_id != in6_getscopezone(ifp, scope)) in sa6_checkzone_ifp()
607 return (sa6_checkzone(sa6)); in sa6_checkzone_ifp()