Lines Matching refs:sa6
555 sa6_checkzone(struct sockaddr_in6 *sa6) in sa6_checkzone() argument
559 scope = in6_addrscope(&sa6->sin6_addr); in sa6_checkzone()
561 return (sa6->sin6_scope_id ? EINVAL: 0); in sa6_checkzone()
562 if (IN6_IS_ADDR_MULTICAST(&sa6->sin6_addr) && in sa6_checkzone()
565 if (sa6->sin6_scope_id == 0 && V_ip6_use_defzone != 0) in sa6_checkzone()
566 sa6->sin6_scope_id = V_sid_default.s6id_list[scope]; in sa6_checkzone()
575 if (IN6_IS_ADDR_LOOPBACK(&sa6->sin6_addr)) { in sa6_checkzone()
576 if (sa6->sin6_scope_id == 0) in sa6_checkzone()
577 sa6->sin6_scope_id = in6_getscopezone(V_loif, scope); in sa6_checkzone()
578 else if (sa6->sin6_scope_id != in6_getscopezone(V_loif, scope)) in sa6_checkzone()
582 if (sa6->sin6_scope_id != 0) in sa6_checkzone()
585 sa6->sin6_scope_id = V_sid_default.s6id_list[scope]; in sa6_checkzone()
587 return (sa6->sin6_scope_id ? 0: EADDRNOTAVAIL); in sa6_checkzone()
595 sa6_checkzone_ifp(struct ifnet *ifp, struct sockaddr_in6 *sa6) in sa6_checkzone_ifp() argument
599 scope = in6_addrscope(&sa6->sin6_addr); in sa6_checkzone_ifp()
602 if (sa6->sin6_scope_id == 0) { in sa6_checkzone_ifp()
603 sa6->sin6_scope_id = in6_getscopezone(ifp, scope); in sa6_checkzone_ifp()
605 } else if (sa6->sin6_scope_id != in6_getscopezone(ifp, scope)) in sa6_checkzone_ifp()
608 return (sa6_checkzone(sa6)); in sa6_checkzone_ifp()