• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/netinet6/

Lines Matching defs:inp

154 	struct inpcb *inp;
157 inp = in6_pcblookup_local(pcbinfo, laddr, lport_arg, wild_okay);
160 if (inp && inp->inp_wantcnt == WNT_STOPUSING) {
161 struct socket *so = inp->inp_socket;
163 lck_mtx_lock(inp->inpcb_mtx);
166 in_pcbdispose(inp);
167 inp = NULL;
170 lck_mtx_unlock(inp->inpcb_mtx);
174 return inp;
178 struct inpcb *inp,
182 struct socket *so = inp->inp_socket;
184 struct inpcbinfo *pcbinfo = inp->inp_pcbinfo;
190 if (inp->inp_lport || !IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr))
213 if (in6_embedscope(&sin6->sin6_addr, sin6, inp, NULL) != 0) {
286 if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0 &&
315 if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0 &&
335 inp->in6p_laddr = sin6->sin6_addr;
340 if ((e = in6_pcbsetport(&inp->in6p_laddr, inp, p, 1)) != 0) {
346 inp->inp_lport = lport;
347 if (in_pcbinshash(inp, 1) != 0) {
348 inp->in6p_laddr = in6addr_any;
349 inp->inp_lport = 0;
373 struct inpcb *inp,
392 if (in6_embedscope(&sin6->sin6_addr, sin6, inp, &ifp) != 0)
409 addr6 = in6_selectsrc(sin6, inp->in6p_outputopts,
410 inp->in6p_moptions,
411 &inp->in6p_route,
412 &inp->in6p_laddr, &src_storage, &error);
426 if (inp->in6p_route.ro_rt)
427 ifp = inp->in6p_route.ro_rt->rt_ifp;
440 in6_pcbconnect(inp, nam, p)
441 struct inpcb *inp;
454 if ((error = in6_pcbladdr(inp, nam, &addr6)) != 0)
456 socket_unlock(inp->inp_socket, 0);
457 pcb = in6_pcblookup_hash(inp->inp_pcbinfo, &sin6->sin6_addr,
459 IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)
460 ? &addr6 : &inp->in6p_laddr,
461 inp->inp_lport, 0, NULL);
462 socket_lock(inp->inp_socket, 0);
467 if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)) {
468 if (inp->inp_lport == 0) {
469 error = in6_pcbbind(inp, (struct sockaddr *)0, p);
473 inp->in6p_laddr = addr6;
475 if (!lck_rw_try_lock_exclusive(inp->inp_pcbinfo->mtx)) {
477 socket_unlock(inp->inp_socket, 0);
478 lck_rw_lock_exclusive(inp->inp_pcbinfo->mtx);
479 socket_lock(inp->inp_socket, 0);
481 inp->in6p_faddr = sin6->sin6_addr;
482 inp->inp_fport = sin6->sin6_port;
484 inp->in6p_flowinfo &= ~IPV6_FLOWLABEL_MASK;
485 if (inp->in6p_flags & IN6P_AUTOFLOWLABEL)
486 inp->in6p_flowinfo |=
489 in_pcbrehash(inp);
490 lck_rw_done(inp->inp_pcbinfo->mtx);
716 in6_pcbdisconnect(inp)
717 struct inpcb *inp;
719 if (!lck_rw_try_lock_exclusive(inp->inp_pcbinfo->mtx)) {
721 socket_unlock(inp->inp_socket, 0);
722 lck_rw_lock_exclusive(inp->inp_pcbinfo->mtx);
723 socket_lock(inp->inp_socket, 0);
725 bzero((caddr_t)&inp->in6p_faddr, sizeof(inp->in6p_faddr));
726 inp->inp_fport = 0;
728 inp->in6p_flowinfo &= ~IPV6_FLOWLABEL_MASK;
729 in_pcbrehash(inp);
730 lck_rw_done(inp->inp_pcbinfo->mtx);
731 if (inp->inp_socket->so_state & SS_NOFDREF)
732 in6_pcbdetach(inp);
736 in6_pcbdetach(inp)
737 struct inpcb *inp;
739 struct socket *so = inp->inp_socket;
740 struct inpcbinfo *ipi = inp->inp_pcbinfo;
743 if (inp->in6p_sp != NULL) {
744 ipsec6_delete_pcbpolicy(inp);
748 if (in_pcb_checkstate(inp, WNT_STOPUSING, 1) != WNT_STOPUSING)
751 inp->inp_state = INPCB_STATE_DEAD;
754 inp->inp_vflag = 0;
756 inp->inp_gencnt = ++ipi->ipi_gencnt;
757 if (inp->in6p_options)
758 m_freem(inp->in6p_options);
759 ip6_freepcbopts(inp->in6p_outputopts);
760 ip6_freemoptions(inp->in6p_moptions);
761 if (inp->in6p_route.ro_rt) {
762 rtfree(inp->in6p_route.ro_rt);
763 inp->in6p_route.ro_rt = NULL;
766 if (inp->inp_options)
767 (void)m_free(inp->inp_options);
768 ip_freemoptions(inp->inp_moptions);
769 inp->inp_moptions = NULL;
833 struct inpcb *inp;
837 inp = sotoinpcb(so);
838 if (!inp) {
841 port = inp->inp_lport;
842 addr = inp->in6p_laddr;
853 struct inpcb *inp;
857 inp = sotoinpcb(so);
858 if (!inp) {
861 port = inp->inp_fport;
862 addr = inp->in6p_faddr;
871 struct inpcb *inp = sotoinpcb(so);
874 if (inp == NULL)
876 if (inp->inp_vflag & INP_IPV4) {
890 struct inpcb *inp = sotoinpcb(so);
893 if (inp == NULL)
895 if (inp->inp_vflag & INP_IPV4) {
927 struct inpcb *inp, *ninp;
965 for (inp = LIST_FIRST(head); inp != NULL; inp = ninp) {
966 ninp = LIST_NEXT(inp, inp_list);
968 if ((inp->inp_vflag & INP_IPV6) == 0)
980 inp->inp_socket != NULL &&
981 flowinfo == (inp->in6p_flowinfo & IPV6_FLOWLABEL_MASK) &&
982 IN6_ARE_ADDR_EQUAL(&inp->in6p_laddr, &sa6_src.sin6_addr))
984 else if (!IN6_ARE_ADDR_EQUAL(&inp->in6p_faddr,
986 inp->inp_socket == 0 ||
987 (lport && inp->inp_lport != lport) ||
989 !IN6_ARE_ADDR_EQUAL(&inp->in6p_laddr,
991 (fport && inp->inp_fport != fport))
997 if (in_pcb_checkstate(inp, WNT_ACQUIRE, 0) == WNT_STOPUSING)
999 socket_lock(inp->inp_socket, 1);
1000 (*notify)(inp, errno);
1001 (void)in_pcb_checkstate(inp, WNT_RELEASE, 1);
1002 socket_unlock(inp->inp_socket, 1);
1018 struct inpcb *inp;
1030 LIST_FOREACH(inp, head, inp_hash) {
1031 if ((inp->inp_vflag & INP_IPV6) == 0)
1033 if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr) &&
1034 IN6_ARE_ADDR_EQUAL(&inp->in6p_laddr, laddr) &&
1035 inp->inp_lport == lport) {
1039 return (inp);
1067 LIST_FOREACH(inp, &phd->phd_pcblist, inp_portlist) {
1069 if ((inp->inp_vflag & INP_IPV6) == 0)
1071 if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
1074 &inp->in6p_laddr)) {
1078 &inp->in6p_laddr, laddr))
1085 match = inp;
1180 struct inpcb *inp,
1183 if (inp->in6p_route.ro_rt) {
1184 rtfree(inp->in6p_route.ro_rt);
1185 inp->in6p_route.ro_rt = 0;
1207 struct inpcb *inp;
1225 LIST_FOREACH(inp, head, inp_hash) {
1226 if ((inp->inp_vflag & INP_IPV6) == 0)
1228 if (IN6_ARE_ADDR_EQUAL(&inp->in6p_faddr, faddr) &&
1229 IN6_ARE_ADDR_EQUAL(&inp->in6p_laddr, laddr) &&
1230 inp->inp_fport == fport &&
1231 inp->inp_lport == lport) {
1235 if (in_pcb_checkstate(inp, WNT_ACQUIRE, 0) != WNT_STOPUSING) {
1237 return (inp);
1250 LIST_FOREACH(inp, head, inp_hash) {
1251 if ((inp->inp_vflag & INP_IPV6) == 0)
1253 if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr) &&
1254 inp->inp_lport == lport) {
1255 if (faith && (inp->inp_flags & INP_FAITH) == 0)
1257 if (IN6_ARE_ADDR_EQUAL(&inp->in6p_laddr,
1259 if (in_pcb_checkstate(inp, WNT_ACQUIRE, 0) != WNT_STOPUSING) {
1261 return (inp);
1268 else if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr))
1269 local_wild = inp;