Lines Matching defs:inp

312 ipsec_invalidate_cache(struct inpcb *inp, u_int dir)
316 INP_WLOCK_ASSERT(inp);
318 if (inp->inp_sp->flags & INP_INBOUND_POLICY)
320 sp = inp->inp_sp->sp_in;
321 inp->inp_sp->sp_in = NULL;
323 if (inp->inp_sp->flags & INP_OUTBOUND_POLICY)
325 sp = inp->inp_sp->sp_out;
326 inp->inp_sp->sp_out = NULL;
333 ipsec_cachepolicy(struct inpcb *inp, struct secpolicy *sp, u_int dir)
338 INP_LOCK_ASSERT(inp);
342 if (inp->inp_sp->flags & INP_OUTBOUND_POLICY)
345 if (inp->inp_sp->sp_out != NULL)
352 if ((inp->inp_vflag & INP_IPV4) != 0 &&
353 inp->inp_faddr.s_addr == INADDR_ANY)
357 if ((inp->inp_vflag & INP_IPV6) != 0 &&
358 IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
363 if (inp->inp_sp->flags & INP_INBOUND_POLICY)
366 if (inp->inp_sp->sp_in != NULL)
373 if ((inp->inp_vflag & INP_IPV4) != 0 &&
374 inp->inp_faddr.s_addr == INADDR_ANY)
378 if ((inp->inp_vflag & INP_IPV6) != 0 &&
379 IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
384 if (!INP_WLOCKED(inp)) {
385 if ((downgrade = INP_TRY_UPGRADE(inp)) == 0)
389 inp->inp_sp->sp_out = sp;
391 inp->inp_sp->sp_in = sp;
401 if (genid != inp->inp_sp->genid) {
402 ipsec_invalidate_cache(inp, dir);
403 inp->inp_sp->genid = genid;
407 __func__, inp, dir == IPSEC_DIR_OUTBOUND ? "OUTBOUND":
410 INP_DOWNGRADE(inp);
414 ipsec_checkpolicy(struct secpolicy *sp, struct inpcb *inp, int *error)
418 if (inp != NULL && inp->inp_sp != NULL && inp->inp_sp->sp_out == NULL)
419 ipsec_cachepolicy(inp, sp, IPSEC_DIR_OUTBOUND);
443 ipsec_getpcbpolicy(struct inpcb *inp, u_int dir)
448 if (inp == NULL || inp->inp_sp == NULL)
451 INP_LOCK_ASSERT(inp);
453 flags = inp->inp_sp->flags;
455 sp = inp->inp_sp->sp_out;
458 sp = inp->inp_sp->sp_in;
468 if (inp->inp_sp->genid != key_getspgen()) {
471 if (!INP_WLOCKED(inp)) {
472 if ((downgrade = INP_TRY_UPGRADE(inp)) == 0)
475 ipsec_invalidate_cache(inp, IPSEC_DIR_OUTBOUND);
476 ipsec_invalidate_cache(inp, IPSEC_DIR_INBOUND);
478 INP_DOWNGRADE(inp);
483 __func__, inp, sp));
568 ipsec4_getpolicy(const struct mbuf *m, struct inpcb *inp, struct ip *ip1,
574 sp = ipsec_getpcbpolicy(inp, dir);
591 ipsec4_checkpolicy(const struct mbuf *m, struct inpcb *inp, struct ip *ip1,
597 sp = ipsec4_getpolicy(m, inp, ip1, IPSEC_DIR_OUTBOUND, needport);
599 sp = ipsec_checkpolicy(sp, inp, error);
624 ipsec4_in_reject1(const struct mbuf *m, struct ip *ip1, struct inpcb *inp)
644 sp = ipsec4_getpolicy(m, inp, ip1, IPSEC_DIR_INBOUND, 0);
645 result = ipsec_in_reject(sp, inp, m);
653 ipsec4_in_reject(const struct mbuf *m, struct inpcb *inp)
655 return (ipsec4_in_reject1(m, NULL, inp));
755 ipsec6_getpolicy(const struct mbuf *m, struct inpcb *inp, u_int dir,
761 sp = ipsec_getpcbpolicy(inp, dir);
778 ipsec6_checkpolicy(const struct mbuf *m, struct inpcb *inp, int *error,
784 sp = ipsec6_getpolicy(m, inp, IPSEC_DIR_OUTBOUND, needport);
786 sp = ipsec_checkpolicy(sp, inp, error);
811 ipsec6_in_reject(const struct mbuf *m, struct inpcb *inp)
824 sp = ipsec6_getpolicy(m, inp, IPSEC_DIR_INBOUND, 0);
825 result = ipsec_in_reject(sp, inp, m);
1038 ipsec_in_reject(struct secpolicy *sp, struct inpcb *inp, const struct mbuf *m)
1043 printf("%s: PCB(%p): using SP(%p)\n", __func__, inp, sp));
1046 if (inp != NULL && inp->inp_sp != NULL && inp->inp_sp->sp_in == NULL)
1047 ipsec_cachepolicy(inp, sp, IPSEC_DIR_INBOUND);
1172 ipsec_hdrsiz_inpcb(struct inpcb *inp)
1178 sp = ipsec_getpcbpolicy(inp, IPSEC_DIR_OUTBOUND);
1180 ipsec_setspidx_inpcb(inp, &spidx, IPSEC_DIR_OUTBOUND);