Lines Matching defs:mhp
1941 key_gather_mbuf(struct mbuf *m, const struct sadb_msghdr *mhp,
1951 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
1959 if (idx == SADB_EXT_RESERVED && mhp->msg == NULL)
1962 (mhp->ext[idx] == NULL || mhp->extlen[idx] == 0))
1978 len = mhp->extlen[idx];
1984 m_copydata(m, mhp->extoff[idx], mhp->extlen[idx],
1987 n = m_copym(m, mhp->extoff[idx], mhp->extlen[idx],
2032 key_spdadd(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2043 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2044 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2046 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
2047 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
2048 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) {
2054 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
2055 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
2056 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2061 if (!SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD)) {
2062 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD)) {
2068 lft = (struct sadb_lifetime *)mhp->ext[SADB_EXT_LIFETIME_HARD];
2071 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
2072 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
2073 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY];
2094 mhp->extlen[SADB_X_EXT_POLICY] <= sizeof(*xpl0)) {
2118 if (mhp->msg->sadb_msg_type == SADB_X_SPDUPDATE) {
2145 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_IF_HW_OFFL) &&
2146 !SADB_CHECKLEN(mhp, SADB_X_EXT_IF_HW_OFFL)) {
2149 xof = (struct sadb_x_if_hw_offl *)mhp->ext[
2205 n = key_gather_mbuf(m, mhp, 2, 5, SADB_EXT_RESERVED,
2209 n = key_gather_mbuf(m, mhp, 2, 4, SADB_EXT_RESERVED,
2294 const struct sadb_msghdr *mhp)
2303 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2304 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2306 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
2307 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
2308 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) {
2314 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
2315 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
2316 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2322 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
2323 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
2324 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY];
2378 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED,
2406 const struct sadb_msghdr *mhp)
2413 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2414 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2416 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) ||
2417 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2424 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id;
2467 n->m_next = m_copym(m, mhp->extoff[SADB_X_EXT_POLICY],
2468 mhp->extlen[SADB_X_EXT_POLICY], M_NOWAIT);
2500 key_spdget(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2508 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2509 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2511 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) ||
2512 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2519 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id;
2528 n = key_setdumpsp(sp, SADB_X_SPDGET, mhp->msg->sadb_msg_seq,
2529 mhp->msg->sadb_msg_pid);
2614 key_spdflush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2623 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2624 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2693 key_spddump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2703 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2704 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2708 scope = key_satype2scopemask(mhp->msg->sadb_msg_satype);
2731 mhp->msg->sadb_msg_pid);
2741 mhp->msg->sadb_msg_pid);
3027 * and copy the values of mhp into new buffer.
3034 key_newsav(const struct sadb_msghdr *mhp, struct secasindex *saidx,
3041 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
3042 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
3043 IPSEC_ASSERT(mhp->msg->sadb_msg_type == SADB_GETSPI ||
3044 mhp->msg->sadb_msg_type == SADB_ADD, ("wrong message type"));
3086 sav->seq = mhp->msg->sadb_msg_seq;
3088 sav->pid = (pid_t)mhp->msg->sadb_msg_pid;
3099 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_IF_HW_OFFL) &&
3100 !SADB_CHECKLEN(mhp, SADB_X_EXT_IF_HW_OFFL)) {
3103 xof = (struct sadb_x_if_hw_offl *)mhp->ext[
3132 if (mhp->msg->sadb_msg_type == SADB_GETSPI) {
3139 *errp = key_setsaval(sav, mhp);
3366 key_updatelifetimes(struct secasvar *sav, const struct sadb_msghdr *mhp)
3371 if (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
3372 SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) {
3384 if ((SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
3385 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
3386 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
3387 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
3393 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD) ||
3394 SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_SOFT)) {
3400 mhp->ext[SADB_EXT_LIFETIME_HARD], M_IPSEC_MISC);
3407 mhp->ext[SADB_EXT_LIFETIME_SOFT], M_IPSEC_MISC);
3450 key_setsaval(struct secasvar *sav, const struct sadb_msghdr *mhp)
3458 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
3459 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
3464 error = key_setident(sav->sah, mhp);
3469 if (!SADB_CHECKHDR(mhp, SADB_EXT_SA)) {
3470 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) {
3474 sa0 = (const struct sadb_sa *)mhp->ext[SADB_EXT_SA];
3490 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_SA_REPLAY)) {
3491 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA_REPLAY)) {
3496 mhp->ext[SADB_X_EXT_SA_REPLAY])->sadb_x_sa_replay_replay;
3549 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) {
3550 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH)) {
3555 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_AUTH];
3556 len = mhp->extlen[SADB_EXT_KEY_AUTH];
3557 switch (mhp->msg->sadb_msg_satype) {
3587 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) {
3588 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT)) {
3593 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_ENCRYPT];
3594 len = mhp->extlen[SADB_EXT_KEY_ENCRYPT];
3595 switch (mhp->msg->sadb_msg_satype) {
3631 switch (mhp->msg->sadb_msg_satype) {
3689 __func__, mhp->msg->sadb_msg_satype));
3694 error = key_setnatt(sav, mhp);
3703 error = key_updatelifetimes(sav, mhp);
5034 * IN: mhp: pointer to the pointer to each header.
5039 key_getspi(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5050 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5051 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5053 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5054 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST)
5056 || SADB_CHECKHDR(mhp, SADB_EXT_SPIRANGE)
5065 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5066 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)
5068 || SADB_CHECKLEN(mhp, SADB_EXT_SPIRANGE)
5076 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
5080 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
5088 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
5090 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
5093 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
5094 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
5097 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5115 (struct sadb_spirange *)mhp->ext[SADB_EXT_SPIRANGE], &saidx);
5125 sav = key_newsav(mhp, &saidx, spi, &error);
5185 n->m_next = key_gather_mbuf(m, mhp, 0, 2, SADB_EXT_ADDRESS_SRC,
5340 const struct sadb_msghdr *mhp, struct secasvar *sav,
5350 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC)) {
5353 mhp->ext[SADB_X_EXT_NEW_ADDRESS_SRC]) + 1);
5357 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) {
5360 mhp->ext[SADB_X_EXT_NEW_ADDRESS_DST]) + 1);
5364 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) ||
5365 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) {
5391 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5392 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) ||
5393 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5447 error = key_setnatt(newsav, mhp);
5514 /* set msg buf from mhp */
5515 n = key_getmsgbuf_x1(m, mhp);
5552 key_update(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5564 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5565 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5568 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5574 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
5575 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5576 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
5577 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
5578 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
5579 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
5580 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
5586 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
5587 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5588 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
5593 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
5597 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
5604 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
5606 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
5609 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
5610 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
5611 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
5640 if (sav->pid != mhp->msg->sadb_msg_pid) {
5643 ntohl(sav->spi), sav->pid, mhp->msg->sadb_msg_pid));
5656 if ((mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP &&
5657 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) ||
5658 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH &&
5659 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH))) {
5669 error = key_setsaval(sav, mhp);
5698 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) ||
5699 !SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) {
5703 error = key_updatelifetimes(sav, mhp);
5716 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) ||
5717 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST) ||
5718 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5720 error = key_updateaddresses(so, m, mhp, sav, &saidx);
5751 /* set msg buf from mhp */
5752 n = key_getmsgbuf_x1(m, mhp);
5779 key_add(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5791 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5792 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5795 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5801 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
5802 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5803 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
5804 (mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP && (
5805 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) ||
5806 SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT))) ||
5807 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH && (
5808 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH) ||
5809 SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH))) ||
5810 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
5811 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
5812 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
5813 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
5819 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
5820 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5821 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
5826 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
5830 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
5837 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
5839 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
5842 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
5843 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
5844 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
5891 sav = key_newsav(mhp, &saidx, spi, &error);
5913 /* set msg buf from mhp */
5914 n = key_getmsgbuf_x1(m, mhp);
5950 key_setnatt(struct secasvar *sav, const struct sadb_msghdr *mhp)
5967 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) &&
5968 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) &&
5969 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5970 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5971 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_SPORT) ||
5972 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5981 type = (struct sadb_x_nat_t_type *)mhp->ext[SADB_X_EXT_NAT_T_TYPE];
5998 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_SPORT];
6005 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_DPORT];
6020 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAI)) {
6021 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAI)) {
6027 oai = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAI];
6030 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAR)) {
6031 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAR)) {
6037 oar = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAR];
6163 key_setident(struct secashead *sah, const struct sadb_msghdr *mhp)
6168 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6169 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6172 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) &&
6173 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) {
6179 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) ||
6180 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) {
6185 idsrc = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_SRC];
6186 iddst = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_DST];
6235 key_getmsgbuf_x1(struct mbuf *m, const struct sadb_msghdr *mhp)
6240 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6241 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6244 n = key_gather_mbuf(m, mhp, 1, 16, SADB_EXT_RESERVED,
6280 key_delete(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
6290 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6291 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6294 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
6300 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
6301 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
6302 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
6303 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
6309 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
6310 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
6318 if (SADB_CHECKHDR(mhp, SADB_EXT_SA)) {
6326 return (key_delete_all(so, m, mhp, &saidx));
6328 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) {
6333 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
6362 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED,
6386 const struct sadb_msghdr *mhp, struct secasindex *saidx)
6424 n = key_gather_mbuf(m, mhp, 1, 3, SADB_EXT_RESERVED,
6503 key_get(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
6513 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6514 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6517 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
6523 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
6524 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
6525 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST)) {
6531 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
6532 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
6533 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
6539 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
6540 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
6541 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
6580 n = key_setdumpsa(sav, SADB_GET, satype, mhp->msg->sadb_msg_seq,
6581 mhp->msg->sadb_msg_pid, NULL);
7272 key_acquire2(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7284 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7285 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7293 if (mhp->msg->sadb_msg_len == PFKEY_UNIT64(sizeof(struct sadb_msg))) {
7295 if (mhp->msg->sadb_msg_seq == 0 ||
7296 mhp->msg->sadb_msg_errno == 0) {
7307 key_acqreset(mhp->msg->sadb_msg_seq);
7318 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
7324 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
7325 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
7326 SADB_CHECKHDR(mhp, SADB_EXT_PROPOSAL)) {
7332 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
7333 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
7334 SADB_CHECKLEN(mhp, SADB_EXT_PROPOSAL)) {
7340 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
7344 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
7351 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
7353 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
7356 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
7357 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
7404 key_register(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7410 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7411 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7414 if (mhp->msg->sadb_msg_satype >= sizeof(V_regtree)/sizeof(V_regtree[0]))
7418 if (mhp->msg->sadb_msg_satype == SADB_SATYPE_UNSPEC)
7423 LIST_FOREACH(reg, &V_regtree[mhp->msg->sadb_msg_satype], chain) {
7444 LIST_INSERT_HEAD(&V_regtree[mhp->msg->sadb_msg_satype], newreg, chain);
7777 key_flush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7787 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7788 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7791 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
7895 key_dump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7906 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7907 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7910 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
7921 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC &&
7939 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC &&
7953 --cnt, mhp->msg->sadb_msg_pid, &sahtree_tracker);
7963 --cnt, mhp->msg->sadb_msg_pid, &sahtree_tracker);
7983 key_promisc(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7989 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7990 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7992 olen = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len);
8007 mhp->msg->sadb_msg_errno = 0;
8008 switch (mhp->msg->sadb_msg_satype) {
8011 kp->kp_promisc = mhp->msg->sadb_msg_satype;
8018 mhp->msg->sadb_msg_errno = 0;
8336 key_align(struct mbuf *m, struct sadb_msghdr *mhp)
8345 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
8350 bzero(mhp, sizeof(*mhp));
8352 mhp->msg = mtod(m, struct sadb_msg *);
8353 mhp->ext[0] = (struct sadb_ext *)mhp->msg; /*XXX backward compat */
8355 end = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len);
8404 if (mhp->ext[ext->sadb_ext_type] != NULL) {
8435 mhp->ext[ext->sadb_ext_type] = ext;
8436 mhp->extoff[ext->sadb_ext_type] = off;
8437 mhp->extlen[ext->sadb_ext_type] = extlen;