Lines Matching refs:mhp

1943 key_gather_mbuf(struct mbuf *m, const struct sadb_msghdr *mhp,  in key_gather_mbuf()  argument
1953 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_gather_mbuf()
1961 if (idx == SADB_EXT_RESERVED && mhp->msg == NULL) in key_gather_mbuf()
1964 (mhp->ext[idx] == NULL || mhp->extlen[idx] == 0)) in key_gather_mbuf()
1980 len = mhp->extlen[idx]; in key_gather_mbuf()
1986 m_copydata(m, mhp->extoff[idx], mhp->extlen[idx], in key_gather_mbuf()
1989 n = m_copym(m, mhp->extoff[idx], mhp->extlen[idx], in key_gather_mbuf()
2034 key_spdadd(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_spdadd() argument
2045 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spdadd()
2046 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spdadd()
2048 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_spdadd()
2049 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_spdadd()
2050 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) { in key_spdadd()
2056 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_spdadd()
2057 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) || in key_spdadd()
2058 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) { in key_spdadd()
2063 if (!SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD)) { in key_spdadd()
2064 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD)) { in key_spdadd()
2070 lft = (struct sadb_lifetime *)mhp->ext[SADB_EXT_LIFETIME_HARD]; in key_spdadd()
2073 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC]; in key_spdadd()
2074 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST]; in key_spdadd()
2075 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY]; in key_spdadd()
2096 mhp->extlen[SADB_X_EXT_POLICY] <= sizeof(*xpl0)) { in key_spdadd()
2120 if (mhp->msg->sadb_msg_type == SADB_X_SPDUPDATE) { in key_spdadd()
2147 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_IF_HW_OFFL) && in key_spdadd()
2148 !SADB_CHECKLEN(mhp, SADB_X_EXT_IF_HW_OFFL)) { in key_spdadd()
2151 xof = (struct sadb_x_if_hw_offl *)mhp->ext[ in key_spdadd()
2207 n = key_gather_mbuf(m, mhp, 2, 5, SADB_EXT_RESERVED, in key_spdadd()
2211 n = key_gather_mbuf(m, mhp, 2, 4, SADB_EXT_RESERVED, in key_spdadd()
2296 const struct sadb_msghdr *mhp) in key_spddelete() argument
2305 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spddelete()
2306 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spddelete()
2308 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_spddelete()
2309 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_spddelete()
2310 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) { in key_spddelete()
2316 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_spddelete()
2317 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) || in key_spddelete()
2318 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) { in key_spddelete()
2324 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC]; in key_spddelete()
2325 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST]; in key_spddelete()
2326 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY]; in key_spddelete()
2380 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED, in key_spddelete()
2408 const struct sadb_msghdr *mhp) in key_spddelete2() argument
2415 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spddelete2()
2416 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spddelete2()
2418 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) || in key_spddelete2()
2419 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) { in key_spddelete2()
2426 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id; in key_spddelete2()
2469 n->m_next = m_copym(m, mhp->extoff[SADB_X_EXT_POLICY], in key_spddelete2()
2470 mhp->extlen[SADB_X_EXT_POLICY], M_NOWAIT); in key_spddelete2()
2502 key_spdget(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_spdget() argument
2510 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spdget()
2511 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spdget()
2513 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) || in key_spdget()
2514 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) { in key_spdget()
2521 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id; in key_spdget()
2530 n = key_setdumpsp(sp, SADB_X_SPDGET, mhp->msg->sadb_msg_seq, in key_spdget()
2531 mhp->msg->sadb_msg_pid); in key_spdget()
2616 key_spdflush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_spdflush() argument
2625 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spdflush()
2626 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spdflush()
2695 key_spddump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_spddump() argument
2705 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_spddump()
2706 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_spddump()
2710 scope = key_satype2scopemask(mhp->msg->sadb_msg_satype); in key_spddump()
2733 mhp->msg->sadb_msg_pid); in key_spddump()
2743 mhp->msg->sadb_msg_pid); in key_spddump()
3036 key_newsav(const struct sadb_msghdr *mhp, struct secasindex *saidx, in key_newsav() argument
3043 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_newsav()
3044 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_newsav()
3045 IPSEC_ASSERT(mhp->msg->sadb_msg_type == SADB_GETSPI || in key_newsav()
3046 mhp->msg->sadb_msg_type == SADB_ADD, ("wrong message type")); in key_newsav()
3088 sav->seq = mhp->msg->sadb_msg_seq; in key_newsav()
3090 sav->pid = (pid_t)mhp->msg->sadb_msg_pid; in key_newsav()
3101 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_IF_HW_OFFL) && in key_newsav()
3102 !SADB_CHECKLEN(mhp, SADB_X_EXT_IF_HW_OFFL)) { in key_newsav()
3105 xof = (struct sadb_x_if_hw_offl *)mhp->ext[ in key_newsav()
3134 if (mhp->msg->sadb_msg_type == SADB_GETSPI) { in key_newsav()
3141 *errp = key_setsaval(sav, mhp); in key_newsav()
3368 key_updatelifetimes(struct secasvar *sav, const struct sadb_msghdr *mhp) in key_updatelifetimes() argument
3373 if (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) && in key_updatelifetimes()
3374 SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) { in key_updatelifetimes()
3386 if ((SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) && in key_updatelifetimes()
3387 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) || in key_updatelifetimes()
3388 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) && in key_updatelifetimes()
3389 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) { in key_updatelifetimes()
3395 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD) || in key_updatelifetimes()
3396 SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_SOFT)) { in key_updatelifetimes()
3402 mhp->ext[SADB_EXT_LIFETIME_HARD], M_IPSEC_MISC); in key_updatelifetimes()
3409 mhp->ext[SADB_EXT_LIFETIME_SOFT], M_IPSEC_MISC); in key_updatelifetimes()
3452 key_setsaval(struct secasvar *sav, const struct sadb_msghdr *mhp) in key_setsaval() argument
3460 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_setsaval()
3461 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_setsaval()
3466 error = key_setident(sav->sah, mhp); in key_setsaval()
3471 if (!SADB_CHECKHDR(mhp, SADB_EXT_SA)) { in key_setsaval()
3472 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) { in key_setsaval()
3476 sa0 = (const struct sadb_sa *)mhp->ext[SADB_EXT_SA]; in key_setsaval()
3492 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_SA_REPLAY)) { in key_setsaval()
3493 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA_REPLAY)) { in key_setsaval()
3498 mhp->ext[SADB_X_EXT_SA_REPLAY])->sadb_x_sa_replay_replay; in key_setsaval()
3551 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) { in key_setsaval()
3552 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH)) { in key_setsaval()
3557 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_AUTH]; in key_setsaval()
3558 len = mhp->extlen[SADB_EXT_KEY_AUTH]; in key_setsaval()
3559 switch (mhp->msg->sadb_msg_satype) { in key_setsaval()
3592 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) { in key_setsaval()
3593 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT)) { in key_setsaval()
3598 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_ENCRYPT]; in key_setsaval()
3599 len = mhp->extlen[SADB_EXT_KEY_ENCRYPT]; in key_setsaval()
3600 switch (mhp->msg->sadb_msg_satype) { in key_setsaval()
3641 switch (mhp->msg->sadb_msg_satype) { in key_setsaval()
3699 __func__, mhp->msg->sadb_msg_satype)); in key_setsaval()
3704 error = key_setnatt(sav, mhp); in key_setsaval()
3713 error = key_updatelifetimes(sav, mhp); in key_setsaval()
5050 key_getspi(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_getspi() argument
5061 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_getspi()
5062 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_getspi()
5064 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_getspi()
5065 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) in key_getspi()
5067 || SADB_CHECKHDR(mhp, SADB_EXT_SPIRANGE) in key_getspi()
5076 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_getspi()
5077 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) in key_getspi()
5079 || SADB_CHECKLEN(mhp, SADB_EXT_SPIRANGE) in key_getspi()
5087 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) { in key_getspi()
5091 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) { in key_getspi()
5099 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode; in key_getspi()
5101 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid; in key_getspi()
5104 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]); in key_getspi()
5105 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]); in key_getspi()
5108 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_getspi()
5126 (struct sadb_spirange *)mhp->ext[SADB_EXT_SPIRANGE], &saidx); in key_getspi()
5136 sav = key_newsav(mhp, &saidx, spi, &error); in key_getspi()
5196 n->m_next = key_gather_mbuf(m, mhp, 0, 2, SADB_EXT_ADDRESS_SRC, in key_getspi()
5351 const struct sadb_msghdr *mhp, struct secasvar *sav, in key_updateaddresses() argument
5361 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC)) { in key_updateaddresses()
5364 mhp->ext[SADB_X_EXT_NEW_ADDRESS_SRC]) + 1); in key_updateaddresses()
5368 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) { in key_updateaddresses()
5371 mhp->ext[SADB_X_EXT_NEW_ADDRESS_DST]) + 1); in key_updateaddresses()
5375 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) || in key_updateaddresses()
5376 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) { in key_updateaddresses()
5402 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) || in key_updateaddresses()
5403 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) || in key_updateaddresses()
5404 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) { in key_updateaddresses()
5458 error = key_setnatt(newsav, mhp); in key_updateaddresses()
5526 n = key_getmsgbuf_x1(m, mhp); in key_updateaddresses()
5563 key_update(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_update() argument
5575 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_update()
5576 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_update()
5579 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_update()
5585 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) || in key_update()
5586 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_update()
5587 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_update()
5588 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) && in key_update()
5589 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) || in key_update()
5590 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) && in key_update()
5591 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) { in key_update()
5597 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) || in key_update()
5598 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_update()
5599 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) { in key_update()
5604 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) { in key_update()
5608 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) { in key_update()
5615 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode; in key_update()
5617 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid; in key_update()
5620 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA]; in key_update()
5621 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]); in key_update()
5622 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]); in key_update()
5651 if (sav->pid != mhp->msg->sadb_msg_pid) { in key_update()
5654 ntohl(sav->spi), sav->pid, mhp->msg->sadb_msg_pid)); in key_update()
5667 if ((mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP && in key_update()
5668 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) || in key_update()
5669 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH && in key_update()
5670 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH))) { in key_update()
5680 error = key_setsaval(sav, mhp); in key_update()
5709 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) || in key_update()
5710 !SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) { in key_update()
5714 error = key_updatelifetimes(sav, mhp); in key_update()
5727 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) || in key_update()
5728 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST) || in key_update()
5729 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) || in key_update()
5731 error = key_updateaddresses(so, m, mhp, sav, &saidx); in key_update()
5763 n = key_getmsgbuf_x1(m, mhp); in key_update()
5790 key_add(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_add() argument
5802 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_add()
5803 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_add()
5806 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_add()
5812 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) || in key_add()
5813 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_add()
5814 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_add()
5815 (mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP && ( in key_add()
5816 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) || in key_add()
5817 SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT))) || in key_add()
5818 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH && ( in key_add()
5819 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH) || in key_add()
5820 SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH))) || in key_add()
5821 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) && in key_add()
5822 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) || in key_add()
5823 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) && in key_add()
5824 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) { in key_add()
5830 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) || in key_add()
5831 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_add()
5832 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) { in key_add()
5837 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) { in key_add()
5841 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) { in key_add()
5848 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode; in key_add()
5850 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid; in key_add()
5853 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA]; in key_add()
5854 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC]; in key_add()
5855 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST]; in key_add()
5902 sav = key_newsav(mhp, &saidx, spi, &error); in key_add()
5925 n = key_getmsgbuf_x1(m, mhp); in key_add()
5961 key_setnatt(struct secasvar *sav, const struct sadb_msghdr *mhp) in key_setnatt() argument
5978 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) && in key_setnatt()
5979 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) && in key_setnatt()
5980 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) { in key_setnatt()
5981 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_TYPE) || in key_setnatt()
5982 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_SPORT) || in key_setnatt()
5983 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_DPORT)) { in key_setnatt()
5992 type = (struct sadb_x_nat_t_type *)mhp->ext[SADB_X_EXT_NAT_T_TYPE]; in key_setnatt()
6009 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_SPORT]; in key_setnatt()
6016 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_DPORT]; in key_setnatt()
6031 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAI)) { in key_setnatt()
6032 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAI)) { in key_setnatt()
6038 oai = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAI]; in key_setnatt()
6041 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAR)) { in key_setnatt()
6042 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAR)) { in key_setnatt()
6048 oar = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAR]; in key_setnatt()
6174 key_setident(struct secashead *sah, const struct sadb_msghdr *mhp) in key_setident() argument
6179 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_setident()
6180 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_setident()
6183 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) && in key_setident()
6184 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) { in key_setident()
6190 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) || in key_setident()
6191 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) { in key_setident()
6196 idsrc = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_SRC]; in key_setident()
6197 iddst = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_DST]; in key_setident()
6246 key_getmsgbuf_x1(struct mbuf *m, const struct sadb_msghdr *mhp) in key_getmsgbuf_x1() argument
6251 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_getmsgbuf_x1()
6252 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_getmsgbuf_x1()
6255 n = key_gather_mbuf(m, mhp, 1, 16, SADB_EXT_RESERVED, in key_getmsgbuf_x1()
6291 key_delete(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_delete() argument
6301 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_delete()
6302 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_delete()
6305 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_delete()
6311 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_delete()
6312 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_delete()
6313 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_delete()
6314 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) { in key_delete()
6320 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]); in key_delete()
6321 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]); in key_delete()
6329 if (SADB_CHECKHDR(mhp, SADB_EXT_SA)) { in key_delete()
6337 return (key_delete_all(so, m, mhp, &saidx)); in key_delete()
6339 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) { in key_delete()
6344 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA]; in key_delete()
6373 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED, in key_delete()
6397 const struct sadb_msghdr *mhp, struct secasindex *saidx) in key_delete_all() argument
6435 n = key_gather_mbuf(m, mhp, 1, 3, SADB_EXT_RESERVED, in key_delete_all()
6514 key_get(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_get() argument
6524 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_get()
6525 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_get()
6528 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_get()
6534 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) || in key_get()
6535 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_get()
6536 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST)) { in key_get()
6542 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) || in key_get()
6543 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_get()
6544 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) { in key_get()
6550 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA]; in key_get()
6551 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC]; in key_get()
6552 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST]; in key_get()
6591 n = key_setdumpsa(sav, SADB_GET, satype, mhp->msg->sadb_msg_seq, in key_get()
6592 mhp->msg->sadb_msg_pid, NULL); in key_get()
7283 key_acquire2(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_acquire2() argument
7295 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_acquire2()
7296 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_acquire2()
7304 if (mhp->msg->sadb_msg_len == PFKEY_UNIT64(sizeof(struct sadb_msg))) { in key_acquire2()
7306 if (mhp->msg->sadb_msg_seq == 0 || in key_acquire2()
7307 mhp->msg->sadb_msg_errno == 0) { in key_acquire2()
7318 key_acqreset(mhp->msg->sadb_msg_seq); in key_acquire2()
7329 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_acquire2()
7335 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) || in key_acquire2()
7336 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) || in key_acquire2()
7337 SADB_CHECKHDR(mhp, SADB_EXT_PROPOSAL)) { in key_acquire2()
7343 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) || in key_acquire2()
7344 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) || in key_acquire2()
7345 SADB_CHECKLEN(mhp, SADB_EXT_PROPOSAL)) { in key_acquire2()
7351 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) { in key_acquire2()
7355 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) { in key_acquire2()
7362 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode; in key_acquire2()
7364 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid; in key_acquire2()
7367 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC]; in key_acquire2()
7368 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST]; in key_acquire2()
7415 key_register(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_register() argument
7421 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_register()
7422 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_register()
7425 if (mhp->msg->sadb_msg_satype >= sizeof(V_regtree)/sizeof(V_regtree[0])) in key_register()
7429 if (mhp->msg->sadb_msg_satype == SADB_SATYPE_UNSPEC) in key_register()
7434 LIST_FOREACH(reg, &V_regtree[mhp->msg->sadb_msg_satype], chain) { in key_register()
7455 LIST_INSERT_HEAD(&V_regtree[mhp->msg->sadb_msg_satype], newreg, chain); in key_register()
7788 key_flush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_flush() argument
7798 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_flush()
7799 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_flush()
7802 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_flush()
7906 key_dump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_dump() argument
7917 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_dump()
7918 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_dump()
7921 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { in key_dump()
7932 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC && in key_dump()
7950 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC && in key_dump()
7964 --cnt, mhp->msg->sadb_msg_pid, &sahtree_tracker); in key_dump()
7974 --cnt, mhp->msg->sadb_msg_pid, &sahtree_tracker); in key_dump()
7994 key_promisc(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) in key_promisc() argument
8000 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_promisc()
8001 IPSEC_ASSERT(mhp->msg != NULL, ("null msg")); in key_promisc()
8003 olen = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len); in key_promisc()
8018 mhp->msg->sadb_msg_errno = 0; in key_promisc()
8019 switch (mhp->msg->sadb_msg_satype) { in key_promisc()
8022 kp->kp_promisc = mhp->msg->sadb_msg_satype; in key_promisc()
8029 mhp->msg->sadb_msg_errno = 0; in key_promisc()
8347 key_align(struct mbuf *m, struct sadb_msghdr *mhp) in key_align() argument
8356 IPSEC_ASSERT(mhp != NULL, ("null msghdr")); in key_align()
8361 bzero(mhp, sizeof(*mhp)); in key_align()
8363 mhp->msg = mtod(m, struct sadb_msg *); in key_align()
8364 mhp->ext[0] = (struct sadb_ext *)mhp->msg; /*XXX backward compat */ in key_align()
8366 end = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len); in key_align()
8415 if (mhp->ext[ext->sadb_ext_type] != NULL) { in key_align()
8446 mhp->ext[ext->sadb_ext_type] = ext; in key_align()
8447 mhp->extoff[ext->sadb_ext_type] = off; in key_align()
8448 mhp->extlen[ext->sadb_ext_type] = extlen; in key_align()