• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/netipsec/

Lines Matching defs:mhp

1848 key_gather_mbuf(struct mbuf *m, const struct sadb_msghdr *mhp,
1858 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
1866 if (idx == SADB_EXT_RESERVED && mhp->msg == NULL)
1869 (mhp->ext[idx] == NULL || mhp->extlen[idx] == 0))
1885 len = mhp->extlen[idx];
1891 m_copydata(m, mhp->extoff[idx], mhp->extlen[idx],
1894 n = m_copym(m, mhp->extoff[idx], mhp->extlen[idx],
1939 key_spdadd(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
1950 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
1951 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
1953 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
1954 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
1955 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) {
1961 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
1962 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
1963 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
1968 if (!SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD)) {
1969 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD)) {
1975 lft = (struct sadb_lifetime *)mhp->ext[SADB_EXT_LIFETIME_HARD];
1978 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
1979 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
1980 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY];
2001 mhp->extlen[SADB_X_EXT_POLICY] <= sizeof(*xpl0)) {
2025 if (mhp->msg->sadb_msg_type == SADB_X_SPDUPDATE) {
2073 n = key_gather_mbuf(m, mhp, 2, 5, SADB_EXT_RESERVED,
2077 n = key_gather_mbuf(m, mhp, 2, 4, SADB_EXT_RESERVED,
2160 const struct sadb_msghdr *mhp)
2169 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2170 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2172 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
2173 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
2174 SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY)) {
2180 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
2181 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
2182 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2188 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
2189 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
2190 xpl0 = (struct sadb_x_policy *)mhp->ext[SADB_X_EXT_POLICY];
2243 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED,
2271 const struct sadb_msghdr *mhp)
2278 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2279 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2281 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) ||
2282 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2289 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id;
2338 n->m_next = m_copym(m, mhp->extoff[SADB_X_EXT_POLICY],
2339 mhp->extlen[SADB_X_EXT_POLICY], M_NOWAIT);
2371 key_spdget(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2379 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2380 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2382 if (SADB_CHECKHDR(mhp, SADB_X_EXT_POLICY) ||
2383 SADB_CHECKLEN(mhp, SADB_X_EXT_POLICY)) {
2390 mhp->ext[SADB_X_EXT_POLICY])->sadb_x_policy_id;
2399 n = key_setdumpsp(sp, SADB_X_SPDGET, mhp->msg->sadb_msg_seq,
2400 mhp->msg->sadb_msg_pid);
2485 key_spdflush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2494 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2495 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2563 key_spddump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
2573 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2574 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2578 scope = key_satype2scopemask(mhp->msg->sadb_msg_satype);
2601 mhp->msg->sadb_msg_pid);
2611 mhp->msg->sadb_msg_pid);
2891 * and copy the values of mhp into new buffer.
2898 key_newsav(const struct sadb_msghdr *mhp, struct secasindex *saidx,
2905 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
2906 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
2907 IPSEC_ASSERT(mhp->msg->sadb_msg_type == SADB_GETSPI ||
2908 mhp->msg->sadb_msg_type == SADB_ADD, ("wrong message type"));
2951 sav->seq = mhp->msg->sadb_msg_seq;
2953 sav->pid = (pid_t)mhp->msg->sadb_msg_pid;
2971 if (mhp->msg->sadb_msg_type == SADB_GETSPI) {
2978 *errp = key_setsaval(sav, mhp);
3187 key_updatelifetimes(struct secasvar *sav, const struct sadb_msghdr *mhp)
3192 if (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
3193 SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) {
3205 if ((SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
3206 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
3207 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
3208 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
3214 if (SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_HARD) ||
3215 SADB_CHECKLEN(mhp, SADB_EXT_LIFETIME_SOFT)) {
3221 mhp->ext[SADB_EXT_LIFETIME_HARD], M_IPSEC_MISC);
3228 mhp->ext[SADB_EXT_LIFETIME_SOFT], M_IPSEC_MISC);
3271 key_setsaval(struct secasvar *sav, const struct sadb_msghdr *mhp)
3279 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
3280 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
3285 error = key_setident(sav->sah, mhp);
3290 if (!SADB_CHECKHDR(mhp, SADB_EXT_SA)) {
3291 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) {
3295 sa0 = (const struct sadb_sa *)mhp->ext[SADB_EXT_SA];
3311 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_SA_REPLAY)) {
3312 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA_REPLAY)) {
3317 mhp->ext[SADB_X_EXT_SA_REPLAY])->sadb_x_sa_replay_replay;
3369 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) {
3370 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH)) {
3375 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_AUTH];
3376 len = mhp->extlen[SADB_EXT_KEY_AUTH];
3377 switch (mhp->msg->sadb_msg_satype) {
3407 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) {
3408 if (SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT)) {
3413 key0 = (const struct sadb_key *)mhp->ext[SADB_EXT_KEY_ENCRYPT];
3414 len = mhp->extlen[SADB_EXT_KEY_ENCRYPT];
3415 switch (mhp->msg->sadb_msg_satype) {
3451 switch (mhp->msg->sadb_msg_satype) {
3509 __func__, mhp->msg->sadb_msg_satype));
3514 error = key_setnatt(sav, mhp);
3523 error = key_updatelifetimes(sav, mhp);
4808 * IN: mhp: pointer to the pointer to each header.
4813 key_getspi(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
4824 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
4825 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
4827 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
4828 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST)
4830 || SADB_CHECKHDR(mhp, SADB_EXT_SPIRANGE)
4839 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
4840 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)
4842 || SADB_CHECKLEN(mhp, SADB_EXT_SPIRANGE)
4850 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
4854 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
4862 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
4864 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
4867 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
4868 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
4871 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
4888 (struct sadb_spirange *)mhp->ext[SADB_EXT_SPIRANGE], &saidx);
4897 sav = key_newsav(mhp, &saidx, spi, &error);
4962 n->m_next = key_gather_mbuf(m, mhp, 0, 2, SADB_EXT_ADDRESS_SRC,
5114 const struct sadb_msghdr *mhp, struct secasvar *sav,
5124 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC)) {
5127 mhp->ext[SADB_X_EXT_NEW_ADDRESS_SRC]) + 1);
5131 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) {
5134 mhp->ext[SADB_X_EXT_NEW_ADDRESS_DST]) + 1);
5138 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) ||
5139 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST)) {
5165 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5166 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) ||
5167 SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5197 error = key_setnatt(newsav, mhp);
5263 /* set msg buf from mhp */
5264 n = key_getmsgbuf_x1(m, mhp);
5297 key_update(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5309 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5310 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5313 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5319 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
5320 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5321 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
5322 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
5323 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
5324 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
5325 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
5331 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
5332 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5333 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
5338 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
5342 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
5349 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
5351 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
5354 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
5355 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
5356 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
5385 if (sav->pid != mhp->msg->sadb_msg_pid) {
5388 ntohl(sav->spi), sav->pid, mhp->msg->sadb_msg_pid));
5401 if ((mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP &&
5402 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT)) ||
5403 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH &&
5404 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH))) {
5414 error = key_setsaval(sav, mhp);
5443 if (!SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) ||
5444 !SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH)) {
5448 error = key_updatelifetimes(sav, mhp);
5461 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_SRC) ||
5462 !SADB_CHECKHDR(mhp, SADB_X_EXT_NEW_ADDRESS_DST) ||
5463 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5465 error = key_updateaddresses(so, m, mhp, sav, &saidx);
5495 /* set msg buf from mhp */
5496 n = key_getmsgbuf_x1(m, mhp);
5523 key_add(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5535 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5536 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5539 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5545 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
5546 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5547 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
5548 (mhp->msg->sadb_msg_satype == SADB_SATYPE_ESP && (
5549 SADB_CHECKHDR(mhp, SADB_EXT_KEY_ENCRYPT) ||
5550 SADB_CHECKLEN(mhp, SADB_EXT_KEY_ENCRYPT))) ||
5551 (mhp->msg->sadb_msg_satype == SADB_SATYPE_AH && (
5552 SADB_CHECKHDR(mhp, SADB_EXT_KEY_AUTH) ||
5553 SADB_CHECKLEN(mhp, SADB_EXT_KEY_AUTH))) ||
5554 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD) &&
5555 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT)) ||
5556 (SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_SOFT) &&
5557 !SADB_CHECKHDR(mhp, SADB_EXT_LIFETIME_HARD))) {
5563 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
5564 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5565 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
5570 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
5574 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
5581 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
5583 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
5586 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
5587 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
5588 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
5632 sav = key_newsav(mhp, &saidx, spi, &error);
5652 /* set msg buf from mhp */
5653 n = key_getmsgbuf_x1(m, mhp);
5689 key_setnatt(struct secasvar *sav, const struct sadb_msghdr *mhp)
5705 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_TYPE) &&
5706 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_SPORT) &&
5707 !SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5708 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_TYPE) ||
5709 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_SPORT) ||
5710 SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_DPORT)) {
5719 type = (struct sadb_x_nat_t_type *)mhp->ext[SADB_X_EXT_NAT_T_TYPE];
5736 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_SPORT];
5743 port = (struct sadb_x_nat_t_port *)mhp->ext[SADB_X_EXT_NAT_T_DPORT];
5758 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAI)) {
5759 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAI)) {
5765 oai = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAI];
5768 if (!SADB_CHECKHDR(mhp, SADB_X_EXT_NAT_T_OAR)) {
5769 if (SADB_CHECKLEN(mhp, SADB_X_EXT_NAT_T_OAR)) {
5775 oar = (struct sadb_address *)mhp->ext[SADB_X_EXT_NAT_T_OAR];
5836 key_setident(struct secashead *sah, const struct sadb_msghdr *mhp)
5841 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5842 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5845 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) &&
5846 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) {
5852 if (SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_SRC) ||
5853 SADB_CHECKHDR(mhp, SADB_EXT_IDENTITY_DST)) {
5858 idsrc = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_SRC];
5859 iddst = (const struct sadb_ident *)mhp->ext[SADB_EXT_IDENTITY_DST];
5908 key_getmsgbuf_x1(struct mbuf *m, const struct sadb_msghdr *mhp)
5913 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5914 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5917 n = key_gather_mbuf(m, mhp, 1, 16, SADB_EXT_RESERVED,
5953 key_delete(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
5963 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
5964 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
5967 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
5973 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
5974 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
5975 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
5976 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
5982 src0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_SRC]);
5983 dst0 = (struct sadb_address *)(mhp->ext[SADB_EXT_ADDRESS_DST]);
5991 if (SADB_CHECKHDR(mhp, SADB_EXT_SA)) {
5999 return (key_delete_all(so, m, mhp, &saidx));
6001 if (SADB_CHECKLEN(mhp, SADB_EXT_SA)) {
6006 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
6033 n = key_gather_mbuf(m, mhp, 1, 4, SADB_EXT_RESERVED,
6057 const struct sadb_msghdr *mhp, struct secasindex *saidx)
6094 n = key_gather_mbuf(m, mhp, 1, 3, SADB_EXT_RESERVED,
6172 key_get(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
6182 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6183 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6186 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
6192 if (SADB_CHECKHDR(mhp, SADB_EXT_SA) ||
6193 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
6194 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST)) {
6200 if (SADB_CHECKLEN(mhp, SADB_EXT_SA) ||
6201 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
6202 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST)) {
6208 sa0 = (struct sadb_sa *)mhp->ext[SADB_EXT_SA];
6209 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
6210 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
6247 n = key_setdumpsa(sav, SADB_GET, satype, mhp->msg->sadb_msg_seq,
6248 mhp->msg->sadb_msg_pid);
6939 key_acquire2(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
6951 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
6952 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
6960 if (mhp->msg->sadb_msg_len == PFKEY_UNIT64(sizeof(struct sadb_msg))) {
6962 if (mhp->msg->sadb_msg_seq == 0 ||
6963 mhp->msg->sadb_msg_errno == 0) {
6974 key_acqreset(mhp->msg->sadb_msg_seq);
6985 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
6991 if (SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_SRC) ||
6992 SADB_CHECKHDR(mhp, SADB_EXT_ADDRESS_DST) ||
6993 SADB_CHECKHDR(mhp, SADB_EXT_PROPOSAL)) {
6999 if (SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_SRC) ||
7000 SADB_CHECKLEN(mhp, SADB_EXT_ADDRESS_DST) ||
7001 SADB_CHECKLEN(mhp, SADB_EXT_PROPOSAL)) {
7007 if (SADB_CHECKHDR(mhp, SADB_X_EXT_SA2)) {
7011 if (SADB_CHECKLEN(mhp, SADB_X_EXT_SA2)) {
7018 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_mode;
7020 mhp->ext[SADB_X_EXT_SA2])->sadb_x_sa2_reqid;
7023 src0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_SRC];
7024 dst0 = (struct sadb_address *)mhp->ext[SADB_EXT_ADDRESS_DST];
7071 key_register(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7077 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7078 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7081 if (mhp->msg->sadb_msg_satype >= sizeof(V_regtree)/sizeof(V_regtree[0]))
7085 if (mhp->msg->sadb_msg_satype == SADB_SATYPE_UNSPEC)
7090 LIST_FOREACH(reg, &V_regtree[mhp->msg->sadb_msg_satype], chain) {
7111 LIST_INSERT_HEAD(&V_regtree[mhp->msg->sadb_msg_satype], newreg, chain);
7448 key_flush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7458 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7459 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7462 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
7562 key_dump(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7573 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7574 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7577 if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) {
7587 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC &&
7604 if (mhp->msg->sadb_msg_satype != SADB_SATYPE_UNSPEC &&
7617 --cnt, mhp->msg->sadb_msg_pid);
7626 --cnt, mhp->msg->sadb_msg_pid);
7644 key_promisc(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp)
7650 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
7651 IPSEC_ASSERT(mhp->msg != NULL, ("null msg"));
7653 olen = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len);
7668 mhp->msg->sadb_msg_errno = 0;
7669 switch (mhp->msg->sadb_msg_satype) {
7672 kp->kp_promisc = mhp->msg->sadb_msg_satype;
7679 mhp->msg->sadb_msg_errno = 0;
8003 key_align(struct mbuf *m, struct sadb_msghdr *mhp)
8012 IPSEC_ASSERT(mhp != NULL, ("null msghdr"));
8017 bzero(mhp, sizeof(*mhp));
8019 mhp->msg = mtod(m, struct sadb_msg *);
8020 mhp->ext[0] = (struct sadb_ext *)mhp->msg; /*XXX backward compat */
8022 end = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len);
8066 if (mhp->ext[ext->sadb_ext_type] != NULL) {
8097 mhp->ext[ext->sadb_ext_type] = ext;
8098 mhp->extoff[ext->sadb_ext_type] = off;
8099 mhp->extlen[ext->sadb_ext_type] = extlen;