Lines Matching refs:inp

58 ipsec_setsockaddrs_inpcb(struct inpcb *inp, union sockaddr_union *src,
63 if (inp->inp_vflag & INP_IPV6) {
77 sin6->sin6_addr = inp->in6p_laddr;
78 sin6->sin6_port = inp->inp_lport;
79 if (IN6_IS_SCOPE_LINKLOCAL(&inp->in6p_laddr)) {
83 inp->in6p_laddr.s6_addr16[1]);
90 sin6->sin6_addr = inp->in6p_faddr;
91 sin6->sin6_port = inp->inp_fport;
92 if (IN6_IS_SCOPE_LINKLOCAL(&inp->in6p_faddr)) {
96 inp->in6p_faddr.s6_addr16[1]);
101 if (inp->inp_vflag & INP_IPV4) {
115 sin->sin_addr = inp->inp_laddr;
116 sin->sin_port = inp->inp_lport;
122 sin->sin_addr = inp->inp_faddr;
123 sin->sin_port = inp->inp_fport;
129 ipsec_setspidx_inpcb(struct inpcb *inp, struct secpolicyindex *spidx,
133 ipsec_setsockaddrs_inpcb(inp, &spidx->src, &spidx->dst, dir);
135 if (inp->inp_vflag & INP_IPV6) {
141 if (inp->inp_vflag & INP_IPV4) {
154 ipsec_init_pcbpolicy(struct inpcb *inp)
157 IPSEC_ASSERT(inp != NULL, ("null inp"));
158 IPSEC_ASSERT(inp->inp_sp == NULL, ("inp_sp already initialized"));
160 inp->inp_sp = malloc(sizeof(struct inpcbpolicy), M_IPSEC_INPCB,
162 if (inp->inp_sp == NULL)
169 ipsec_delete_pcbpolicy(struct inpcb *inp)
172 if (inp->inp_sp == NULL)
175 if (inp->inp_sp->sp_in != NULL)
176 key_freesp(&inp->inp_sp->sp_in);
178 if (inp->inp_sp->sp_out != NULL)
179 key_freesp(&inp->inp_sp->sp_out);
181 free(inp->inp_sp, M_IPSEC_INPCB);
182 inp->inp_sp = NULL;
272 ipsec_set_pcbpolicy(struct inpcb *inp, struct ucred *cred,
308 if (inp->inp_vflag & INP_IPV4) {
317 if (inp->inp_vflag & INP_IPV6) {
335 INP_WLOCK(inp);
337 spp = &inp->inp_sp->sp_in;
340 spp = &inp->inp_sp->sp_out;
350 inp->inp_sp->flags &= ~flags;
352 inp->inp_sp->flags |= flags;
355 INP_WUNLOCK(inp);
360 ipsec_get_pcbpolicy(struct inpcb *inp, void *request, size_t *len)
368 INP_RLOCK(inp);
369 flags = inp->inp_sp->flags;
373 sp = inp->inp_sp->sp_in;
377 sp = inp->inp_sp->sp_out;
381 INP_RUNLOCK(inp);
389 INP_RUNLOCK(inp);
400 ("sp is NULL, but flags is 0x%04x", inp->inp_sp->flags));
403 INP_RUNLOCK(inp);
418 ipsec_control_pcbpolicy(struct inpcb *inp, struct sockopt *sopt)
424 if (inp->inp_sp == NULL)
443 error = ipsec_set_pcbpolicy(inp,
447 error = ipsec_get_pcbpolicy(inp, optdata, &optlen);
461 ipsec4_pcbctl(struct inpcb *inp, struct sockopt *sopt)
466 return (ipsec_control_pcbpolicy(inp, sopt));
475 ipsec6_pcbctl(struct inpcb *inp, struct sockopt *sopt)
480 return (ipsec_control_pcbpolicy(inp, sopt));