Lines Matching defs:inp

153 in6_pcbaddrisavail_lock(const struct inpcb *inp, struct sockaddr_in6 *sin6,
156 struct socket *so = inp->inp_socket;
157 struct inpcbtable *table = inp->inp_table;
164 inp->inp_outputopts6, inp->inp_moptions6) != 0)
194 inp->inp_rtableid)) == NULL)
222 inp->inp_rtableid, lock);
231 wild, inp->inp_rtableid, lock);
243 in6_pcbaddrisavail(const struct inpcb *inp, struct sockaddr_in6 *sin6,
246 return in6_pcbaddrisavail_lock(inp, sin6, wild, p, IN_PCBLOCK_GRAB);
258 in6_pcbconnect(struct inpcb *inp, struct mbuf *nam)
260 struct inpcbtable *table = inp->inp_table;
267 KASSERT(ISSET(inp->inp_flags, INP_IPV6));
283 inp->inp_outputopts6, inp->inp_moptions6) != 0)
294 error = in6_pcbselsrc(&in6a, sin6, inp, inp->inp_outputopts6);
298 inp->inp_ipv6.ip6_hlim = (u_int8_t)in6_selecthlim(inp);
303 t = in6_pcblookup_lock(inp->inp_table, &sin6->sin6_addr,
305 IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6) ? in6a : &inp->inp_laddr6,
306 inp->inp_lport, inp->inp_rtableid, IN_PCBLOCK_HOLD);
312 KASSERT(IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6) || inp->inp_lport);
314 if (IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6)) {
315 if (inp->inp_lport == 0) {
316 error = in_pcbbind_locked(inp, NULL, in6a, curproc);
321 t = in6_pcblookup_lock(inp->inp_table, &sin6->sin6_addr,
322 sin6->sin6_port, in6a, inp->inp_lport,
323 inp->inp_rtableid, IN_PCBLOCK_HOLD);
325 inp->inp_lport = 0;
330 inp->inp_laddr6 = *in6a;
332 inp->inp_faddr6 = sin6->sin6_addr;
333 inp->inp_fport = sin6->sin6_port;
334 in_pcbrehash(inp);
338 inp->inp_flowinfo &= ~IPV6_FLOWLABEL_MASK;
340 inp->inp_flowinfo |=
343 inp->inp_flowid = stoeplitz_ip6port(&inp->inp_faddr6,
344 &inp->inp_laddr6, inp->inp_fport, inp->inp_lport);
354 in6_setsockaddr(struct inpcb *inp, struct mbuf *nam)
364 sin6->sin6_port = inp->inp_lport;
365 sin6->sin6_addr = inp->inp_laddr6;
367 in6_recoverscope(sin6, &inp->inp_laddr6);
375 in6_setpeeraddr(struct inpcb *inp, struct mbuf *nam)
385 sin6->sin6_port = inp->inp_fport;
386 sin6->sin6_addr = inp->inp_faddr6;
388 in6_recoverscope(sin6, &inp->inp_faddr6);
394 struct inpcb *inp;
396 inp = sotoinpcb(so);
397 in6_setsockaddr(inp, nam);
405 struct inpcb *inp;
407 inp = sotoinpcb(so);
408 in6_setpeeraddr(inp, nam);
431 struct inpcb *inp = NULL;
479 while ((inp = in_pcb_iterator(table, inp, &iter)) != NULL) {
480 KASSERT(ISSET(inp->inp_flags, INP_IPV6));
514 IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6) &&
515 inp->inp_route.ro_rt &&
516 !(inp->inp_route.ro_rt->rt_flags & RTF_HOST) &&
517 IN6_ARE_ADDR_EQUAL(&inp->inp_route.ro_dstsin6.sin6_addr,
531 flowinfo == (inp->inp_flowinfo & IPV6_FLOWLABEL_MASK) &&
532 IN6_ARE_ADDR_EQUAL(&inp->inp_laddr6, &sa6_src.sin6_addr))
534 else if (!IN6_ARE_ADDR_EQUAL(&inp->inp_faddr6,
536 rtable_l2(inp->inp_rtableid) != rdomain ||
537 (lport && inp->inp_lport != lport) ||
539 !IN6_ARE_ADDR_EQUAL(&inp->inp_laddr6,
541 (fport && inp->inp_fport != fport)) {
546 (*notify)(inp, errno);
553 in6_pcbrtentry(struct inpcb *inp)
555 if (IN6_IS_ADDR_UNSPECIFIED(&inp->inp_faddr6))
557 return (route6_mpath(&inp->inp_route, &inp->inp_faddr6,
558 &inp->inp_laddr6, inp->inp_rtableid));
567 struct inpcb *inp;
573 LIST_FOREACH(inp, head, inp_hash) {
574 KASSERT(ISSET(inp->inp_flags, INP_IPV6));
576 if (inp->inp_fport == fport && inp->inp_lport == lport &&
577 IN6_ARE_ADDR_EQUAL(&inp->inp_faddr6, faddr) &&
578 IN6_ARE_ADDR_EQUAL(&inp->inp_laddr6, laddr) &&
579 rtable_l2(inp->inp_rtableid) == rdomain) {
583 if (inp != NULL) {
589 if (inp != LIST_FIRST(head)) {
590 LIST_REMOVE(inp, inp_hash);
591 LIST_INSERT_HEAD(head, inp, inp_hash);
594 return (inp);
602 struct inpcb *inp;
615 inp = in6_pcbhash_lookup(table, hash, rdomain,
618 in_pcbref(inp);
623 if (inp == NULL && in_pcbnotifymiss) {
628 return (inp);
644 struct inpcb *inp;
682 inp = in6_pcbhash_lookup(table, hash, rdomain,
684 if (inp == NULL && ! IN6_ARE_ADDR_EQUAL(key1, key2)) {
687 inp = in6_pcbhash_lookup(table, hash, rdomain,
690 in_pcbref(inp);
694 if (inp == NULL && in_pcbnotifymiss) {
699 return (inp);