Lines Matching refs:in6p
136 struct inpcb *in6p,
140 struct ip6_moptions *im6o = in6p->in6p_moptions;
196 register struct inpcb *in6p;
284 LIST_FOREACH(in6p, &udb, inp_list) {
286 if ((in6p->inp_vflag & INP_IPV6) == 0)
289 if (in_pcb_checkstate(in6p, WNT_ACQUIRE, 0) == WNT_STOPUSING)
292 udp_lock(in6p->in6p_socket, 1, 0);
294 if (in_pcb_checkstate(in6p, WNT_RELEASE, 1) == WNT_STOPUSING) {
295 udp_unlock(in6p->in6p_socket, 1, 0);
298 if (in6p->in6p_lport != uh->uh_dport) {
299 udp_unlock(in6p->in6p_socket, 1, 0);
302 if (!IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_laddr)) {
303 if (!IN6_ARE_ADDR_EQUAL(&in6p->in6p_laddr,
305 !in6_mcmatch(in6p, &ip6->ip6_dst,
307 udp_unlock(in6p->in6p_socket, 1, 0);
311 if (!IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_faddr)) {
312 if (!IN6_ARE_ADDR_EQUAL(&in6p->in6p_faddr,
314 in6p->in6p_fport != uh->uh_sport) {
315 udp_unlock(in6p->in6p_socket, 1, 0);
320 reuse_sock = in6p->inp_socket->so_options &
328 if (ipsec6_in_reject_so(m, in6p->inp_socket)) {
346 udp6_append(in6p, ip6, &udp_in6, m,
350 udp_unlock(in6p->in6p_socket, 1, 0);
385 in6p = in6_pcblookup_hash(&udbinfo, &ip6->ip6_src, uh->uh_sport,
388 if (in6p == 0) {
421 if (ipsec6_in_reject_so(m, in6p->in6p_socket)) {
423 in_pcb_checkstate(in6p, WNT_RELEASE, 0);
433 udp_lock(in6p->in6p_socket, 1, 0);
435 if (in_pcb_checkstate(in6p, WNT_RELEASE, 1) == WNT_STOPUSING) {
436 udp_unlock(in6p->in6p_socket, 1, 0);
442 if (in6p->in6p_flags & IN6P_CONTROLOPTS
443 || in6p->in6p_socket->so_options & SO_TIMESTAMP)
444 ip6_savecontrol(in6p, &opts, ip6, m);
446 if (sbappendaddr(&in6p->in6p_socket->so_rcv,
452 udp_unlock(in6p->in6p_socket, 1, 0);
455 sorwakeup(in6p->in6p_socket);
456 udp_unlock(in6p->in6p_socket, 1, 0);