Module Name: src Committed By: ozaki-r Date: Fri Jun 2 01:22:50 UTC 2017
Modified Files: src/sys/netipsec: key.c Log Message: Change the prefix of function names of SADB API handlers to key_api_ By doing so we can easily distinguish them from other utility functions. And so we can easily know that they are all called from key_parse and applied assumptions that the arguments are always non-NULL and they are always called from userland, i.e., never called from interrupt context (softint). As a result, we can omit some tedious assertions in the functions. To generate a diff of this commit: cvs rdiff -u -r1.161 -r1.162 src/sys/netipsec/key.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netipsec/key.c diff -u src/sys/netipsec/key.c:1.161 src/sys/netipsec/key.c:1.162 --- src/sys/netipsec/key.c:1.161 Thu Jun 1 09:50:35 2017 +++ src/sys/netipsec/key.c Fri Jun 2 01:22:50 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: key.c,v 1.161 2017/06/01 09:50:35 ozaki-r Exp $ */ +/* $NetBSD: key.c,v 1.162 2017/06/02 01:22:50 ozaki-r Exp $ */ /* $FreeBSD: src/sys/netipsec/key.c,v 1.3.2.3 2004/02/14 22:23:23 bms Exp $ */ /* $KAME: key.c,v 1.191 2001/06/27 10:46:49 sakane Exp $ */ @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.161 2017/06/01 09:50:35 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.162 2017/06/02 01:22:50 ozaki-r Exp $"); /* * This code is referd to RFC 2367 @@ -400,22 +400,22 @@ static struct secpolicy *key_getspbyid ( static u_int16_t key_newreqid (void); static struct mbuf *key_gather_mbuf (struct mbuf *, const struct sadb_msghdr *, int, int, ...); -static int key_spdadd (struct socket *, struct mbuf *, +static int key_api_spdadd(struct socket *, struct mbuf *, const struct sadb_msghdr *); static u_int32_t key_getnewspid (void); -static int key_spddelete (struct socket *, struct mbuf *, +static int key_api_spddelete(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_spddelete2 (struct socket *, struct mbuf *, +static int key_api_spddelete2(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_spdget (struct socket *, struct mbuf *, +static int key_api_spdget(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_spdflush (struct socket *, struct mbuf *, +static int key_api_spdflush(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_spddump (struct socket *, struct mbuf *, +static int key_api_spddump(struct socket *, struct mbuf *, const struct sadb_msghdr *); static struct mbuf * key_setspddump (int *errorp, pid_t); static struct mbuf * key_setspddump_chain (int *errorp, int *lenp, pid_t pid); -static int key_nat_map (struct socket *, struct mbuf *, +static int key_api_nat_map(struct socket *, struct mbuf *, const struct sadb_msghdr *); static struct mbuf *key_setdumpsp (struct secpolicy *, u_int8_t, u_int32_t, pid_t); @@ -482,7 +482,7 @@ static int key_spidx_match_exactly(const static int key_spidx_match_withmask(const struct secpolicyindex *, const struct secpolicyindex *); -static int key_getspi (struct socket *, struct mbuf *, +static int key_api_getspi(struct socket *, struct mbuf *, const struct sadb_msghdr *); static u_int32_t key_do_getnewspi (const struct sadb_spirange *, const struct secasindex *); @@ -491,20 +491,20 @@ static int key_handle_natt_info (struct static int key_set_natt_ports (union sockaddr_union *, union sockaddr_union *, const struct sadb_msghdr *); -static int key_update (struct socket *, struct mbuf *, +static int key_api_update(struct socket *, struct mbuf *, const struct sadb_msghdr *); #ifdef IPSEC_DOSEQCHECK static struct secasvar *key_getsavbyseq (struct secashead *, u_int32_t); #endif -static int key_add (struct socket *, struct mbuf *, +static int key_api_add(struct socket *, struct mbuf *, const struct sadb_msghdr *); static int key_setident (struct secashead *, struct mbuf *, const struct sadb_msghdr *); static struct mbuf *key_getmsgbuf_x1 (struct mbuf *, const struct sadb_msghdr *); -static int key_delete (struct socket *, struct mbuf *, +static int key_api_delete(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_get (struct socket *, struct mbuf *, +static int key_api_get(struct socket *, struct mbuf *, const struct sadb_msghdr *); static void key_getcomb_setlifetime (struct sadb_comb *); @@ -523,18 +523,18 @@ static struct secacq *key_getacqbyseq (u static struct secspacq *key_newspacq (const struct secpolicyindex *); static struct secspacq *key_getspacq (const struct secpolicyindex *); #endif -static int key_acquire2 (struct socket *, struct mbuf *, +static int key_api_acquire(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_register (struct socket *, struct mbuf *, +static int key_api_register(struct socket *, struct mbuf *, const struct sadb_msghdr *); static int key_expire (struct secasvar *); -static int key_flush (struct socket *, struct mbuf *, +static int key_api_flush(struct socket *, struct mbuf *, const struct sadb_msghdr *); static struct mbuf *key_setdump_chain (u_int8_t req_satype, int *errorp, int *lenp, pid_t pid); -static int key_dump (struct socket *, struct mbuf *, +static int key_api_dump(struct socket *, struct mbuf *, const struct sadb_msghdr *); -static int key_promisc (struct socket *, struct mbuf *, +static int key_api_promisc(struct socket *, struct mbuf *, const struct sadb_msghdr *); static int key_senderror (struct socket *, struct mbuf *, int); static int key_validate_ext (const struct sadb_ext *, int); @@ -1858,7 +1858,7 @@ fail: * m will always be freed. */ static int -key_spdadd(struct socket *so, struct mbuf *m, +key_api_spdadd(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { const struct sockaddr *src, *dst; @@ -1869,12 +1869,6 @@ key_spdadd(struct socket *so, struct mbu struct secpolicy *newsp; int error; - KASSERT(!cpu_softintr_p()); - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_EXT_ADDRESS_SRC] == NULL || mhp->ext[SADB_EXT_ADDRESS_DST] == NULL || mhp->ext[SADB_X_EXT_POLICY] == NULL) { @@ -1909,7 +1903,7 @@ key_spdadd(struct socket *so, struct mbu } /* check policy */ - /* key_spdadd() accepts DISCARD, NONE and IPSEC. */ + /* key_api_spdadd() accepts DISCARD, NONE and IPSEC. */ if (xpl0->sadb_x_policy_type == IPSEC_POLICY_ENTRUST || xpl0->sadb_x_policy_type == IPSEC_POLICY_BYPASS) { IPSECLOG(LOG_DEBUG, "Invalid policy type.\n"); @@ -2094,18 +2088,13 @@ key_getnewspid(void) * m will always be freed. */ static int -key_spddelete(struct socket *so, struct mbuf *m, +key_api_spddelete(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_x_policy *xpl0; struct secpolicyindex spidx; struct secpolicy *sp; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_EXT_ADDRESS_SRC] == NULL || mhp->ext[SADB_EXT_ADDRESS_DST] == NULL || mhp->ext[SADB_X_EXT_POLICY] == NULL) { @@ -2185,17 +2174,12 @@ key_spddelete(struct socket *so, struct * m will always be freed. */ static int -key_spddelete2(struct socket *so, struct mbuf *m, +key_api_spddelete2(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { u_int32_t id; struct secpolicy *sp; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_X_EXT_POLICY] == NULL || mhp->extlen[SADB_X_EXT_POLICY] < sizeof(struct sadb_x_policy)) { IPSECLOG(LOG_DEBUG, "invalid message is passed.\n"); @@ -2283,18 +2267,13 @@ key_spddelete2(struct socket *so, struct * m will always be freed. */ static int -key_spdget(struct socket *so, struct mbuf *m, +key_api_spdget(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { u_int32_t id; struct secpolicy *sp; struct mbuf *n; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_X_EXT_POLICY] == NULL || mhp->extlen[SADB_X_EXT_POLICY] < sizeof(struct sadb_x_policy)) { IPSECLOG(LOG_DEBUG, "invalid message is passed.\n"); @@ -2406,18 +2385,13 @@ fail: * m will always be freed. */ static int -key_spdflush(struct socket *so, struct mbuf *m, +key_api_spdflush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_msg *newmsg; struct secpolicy *sp; u_int dir; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (m->m_len != PFKEY_ALIGN8(sizeof(struct sadb_msg))) return key_senderror(so, m, EINVAL); @@ -2525,7 +2499,7 @@ key_setspddump_chain(int *errorp, int *l * m will always be freed. */ static int -key_spddump(struct socket *so, struct mbuf *m0, +key_api_spddump(struct socket *so, struct mbuf *m0, const struct sadb_msghdr *mhp) { struct mbuf *n; @@ -2533,11 +2507,6 @@ key_spddump(struct socket *so, struct mb int ok, s; pid_t pid; - KASSERT(so != NULL); - KASSERT(m0 != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - pid = mhp->msg->sadb_msg_pid; /* * If the requestor has insufficient socket-buffer space @@ -2594,7 +2563,7 @@ key_spddump(struct socket *so, struct mb * SADB_X_NAT_T_NEW_MAPPING. Unused by racoon as of 2005/04/23 */ static int -key_nat_map(struct socket *so, struct mbuf *m, +key_api_nat_map(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_x_nat_t_type *type; @@ -2603,11 +2572,6 @@ key_nat_map(struct socket *so, struct mb struct sadb_address *iaddr, *raddr; struct sadb_x_nat_t_frag *frag; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_X_EXT_NAT_T_TYPE] == NULL || mhp->ext[SADB_X_EXT_NAT_T_SPORT] == NULL || mhp->ext[SADB_X_EXT_NAT_T_DPORT] == NULL) { @@ -2926,7 +2890,8 @@ key_delsah(struct secashead *sah) } /* - * allocating a new SA with LARVAL state. key_add() and key_getspi() call, + * allocating a new SA with LARVAL state. + * key_api_add() and key_api_getspi() call, * and copy the values of mhp into new buffer. * When SAD message type is GETSPI: * to set sequence number from acq_seq++, @@ -4844,7 +4809,7 @@ key_init_spidx_bymsghdr(struct secpolicy * other if success, return pointer to the message to send. */ static int -key_getspi(struct socket *so, struct mbuf *m, +key_api_getspi(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { const struct sockaddr *src, *dst; @@ -4857,12 +4822,6 @@ key_getspi(struct socket *so, struct mbu u_int16_t reqid; int error; - KASSERT(!cpu_softintr_p()); - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - if (mhp->ext[SADB_EXT_ADDRESS_SRC] == NULL || mhp->ext[SADB_EXT_ADDRESS_DST] == NULL) { IPSECLOG(LOG_DEBUG, "invalid message is passed.\n"); @@ -5007,7 +4966,7 @@ key_getspi(struct socket *so, struct mbu /* * allocating new SPI - * called by key_getspi(). + * called by key_api_getspi(). * OUT: * 0: failure. * others: success. @@ -5214,7 +5173,7 @@ key_set_natt_ports(union sockaddr_union * m will always be freed. */ static int -key_update(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) +key_api_update(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_sa *sa0; const struct sockaddr *src, *dst; @@ -5226,12 +5185,6 @@ key_update(struct socket *so, struct mbu u_int16_t reqid; int error; - KASSERT(!cpu_softintr_p()); - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ proto = key_satype2proto(mhp->msg->sadb_msg_satype); if (proto == 0) { @@ -5368,7 +5321,7 @@ key_update(struct socket *so, struct mbu /* * search SAD with sequence for a SA which state is SADB_SASTATE_LARVAL. - * only called by key_update(). + * only called by key_api_update(). * OUT: * NULL : not found * others : found, pointer to a SA. @@ -5416,7 +5369,7 @@ key_getsavbyseq(struct secashead *sah, u * m will always be freed. */ static int -key_add(struct socket *so, struct mbuf *m, +key_api_add(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_sa *sa0; @@ -5429,11 +5382,6 @@ key_add(struct socket *so, struct mbuf * u_int16_t reqid; int error; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ proto = key_satype2proto(mhp->msg->sadb_msg_satype); if (proto == 0) { @@ -5557,7 +5505,7 @@ key_setident(struct secashead *sah, stru KASSERT(mhp->msg != NULL); /* - * Can be called with an existing sah from key_update(). + * Can be called with an existing sah from key_api_update(). */ if (sah->idents != NULL) { kmem_free(sah->idents, sah->idents_len); @@ -5669,7 +5617,7 @@ static int key_delete_all (struct socket * m will always be freed. */ static int -key_delete(struct socket *so, struct mbuf *m, +key_api_delete(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_sa *sa0; @@ -5680,11 +5628,6 @@ key_delete(struct socket *so, struct mbu u_int16_t proto; int error; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ proto = key_satype2proto(mhp->msg->sadb_msg_satype); if (proto == 0) { @@ -5763,7 +5706,7 @@ key_delete(struct socket *so, struct mbu } /* - * delete all SAs for src/dst. Called from key_delete(). + * delete all SAs for src/dst. Called from key_api_delete(). */ static int key_delete_all(struct socket *so, struct mbuf *m, @@ -5840,7 +5783,7 @@ key_delete_all(struct socket *so, struct * m will always be freed. */ static int -key_get(struct socket *so, struct mbuf *m, +key_api_get(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_sa *sa0; @@ -5851,11 +5794,6 @@ key_get(struct socket *so, struct mbuf * u_int16_t proto; int error; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ if ((proto = key_satype2proto(mhp->msg->sadb_msg_satype)) == 0) { IPSECLOG(LOG_DEBUG, "invalid satype is passed.\n"); @@ -6181,7 +6119,7 @@ key_getprop(const struct secasindex *sai } /* - * SADB_ACQUIRE processing called by key_checkrequest() and key_acquire2(). + * SADB_ACQUIRE processing called by key_checkrequest() and key_api_acquire(). * send * <base, SA, address(SD), (address(P)), x_policy, * (identity(SD),) (sensitivity,) proposal> @@ -6482,7 +6420,7 @@ key_getspacq(const struct secpolicyindex * m will always be freed. */ static int -key_acquire2(struct socket *so, struct mbuf *m, +key_api_acquire(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { const struct sockaddr *src, *dst; @@ -6491,11 +6429,6 @@ key_acquire2(struct socket *so, struct m u_int16_t proto; int error; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* * Error message from KMd. * We assume that if error was occurred in IKEd, the length of PFKEY @@ -6602,17 +6535,11 @@ key_acquire2(struct socket *so, struct m * m will always be freed. */ static int -key_register(struct socket *so, struct mbuf *m, +key_api_register(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct secreg *reg, *newreg = 0; - KASSERT(!cpu_softintr_p()); - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* check for invalid register message */ if (mhp->msg->sadb_msg_satype >= __arraycount(regtree)) return key_senderror(so, m, EINVAL); @@ -6919,7 +6846,7 @@ key_expire(struct secasvar *sav) * m will always be freed. */ static int -key_flush(struct socket *so, struct mbuf *m, +key_api_flush(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { struct sadb_msg *newmsg; @@ -6928,10 +6855,6 @@ key_flush(struct socket *so, struct mbuf u_int16_t proto; u_int8_t state; - KASSERT(so != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ proto = key_satype2proto(mhp->msg->sadb_msg_satype); if (proto == 0) { @@ -7076,7 +6999,7 @@ key_setdump_chain(u_int8_t req_satype, i * m will always be freed. */ static int -key_dump(struct socket *so, struct mbuf *m0, +key_api_dump(struct socket *so, struct mbuf *m0, const struct sadb_msghdr *mhp) { u_int16_t proto; @@ -7085,11 +7008,6 @@ key_dump(struct socket *so, struct mbuf int s; int error, len, ok; - KASSERT(so != NULL); - KASSERT(m0 != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - /* map satype to proto */ satype = mhp->msg->sadb_msg_satype; proto = key_satype2proto(satype); @@ -7153,16 +7071,11 @@ key_dump(struct socket *so, struct mbuf * m will always be freed. */ static int -key_promisc(struct socket *so, struct mbuf *m, +key_api_promisc(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) { int olen; - KASSERT(so != NULL); - KASSERT(m != NULL); - KASSERT(mhp != NULL); - KASSERT(mhp->msg != NULL); - olen = PFKEY_UNUNIT64(mhp->msg->sadb_msg_len); if (olen < sizeof(struct sadb_msg)) { @@ -7200,32 +7113,32 @@ key_promisc(struct socket *so, struct mb } } -static int (*key_typesw[]) (struct socket *, struct mbuf *, +static int (*key_api_typesw[]) (struct socket *, struct mbuf *, const struct sadb_msghdr *) = { - NULL, /* SADB_RESERVED */ - key_getspi, /* SADB_GETSPI */ - key_update, /* SADB_UPDATE */ - key_add, /* SADB_ADD */ - key_delete, /* SADB_DELETE */ - key_get, /* SADB_GET */ - key_acquire2, /* SADB_ACQUIRE */ - key_register, /* SADB_REGISTER */ - NULL, /* SADB_EXPIRE */ - key_flush, /* SADB_FLUSH */ - key_dump, /* SADB_DUMP */ - key_promisc, /* SADB_X_PROMISC */ - NULL, /* SADB_X_PCHANGE */ - key_spdadd, /* SADB_X_SPDUPDATE */ - key_spdadd, /* SADB_X_SPDADD */ - key_spddelete, /* SADB_X_SPDDELETE */ - key_spdget, /* SADB_X_SPDGET */ - NULL, /* SADB_X_SPDACQUIRE */ - key_spddump, /* SADB_X_SPDDUMP */ - key_spdflush, /* SADB_X_SPDFLUSH */ - key_spdadd, /* SADB_X_SPDSETIDX */ - NULL, /* SADB_X_SPDEXPIRE */ - key_spddelete2, /* SADB_X_SPDDELETE2 */ - key_nat_map, /* SADB_X_NAT_T_NEW_MAPPING */ + NULL, /* SADB_RESERVED */ + key_api_getspi, /* SADB_GETSPI */ + key_api_update, /* SADB_UPDATE */ + key_api_add, /* SADB_ADD */ + key_api_delete, /* SADB_DELETE */ + key_api_get, /* SADB_GET */ + key_api_acquire, /* SADB_ACQUIRE */ + key_api_register, /* SADB_REGISTER */ + NULL, /* SADB_EXPIRE */ + key_api_flush, /* SADB_FLUSH */ + key_api_dump, /* SADB_DUMP */ + key_api_promisc, /* SADB_X_PROMISC */ + NULL, /* SADB_X_PCHANGE */ + key_api_spdadd, /* SADB_X_SPDUPDATE */ + key_api_spdadd, /* SADB_X_SPDADD */ + key_api_spddelete, /* SADB_X_SPDDELETE */ + key_api_spdget, /* SADB_X_SPDGET */ + NULL, /* SADB_X_SPDACQUIRE */ + key_api_spddump, /* SADB_X_SPDDUMP */ + key_api_spdflush, /* SADB_X_SPDFLUSH */ + key_api_spdadd, /* SADB_X_SPDSETIDX */ + NULL, /* SADB_X_SPDEXPIRE */ + key_api_spddelete2, /* SADB_X_SPDDELETE2 */ + key_api_nat_map, /* SADB_X_NAT_T_NEW_MAPPING */ }; /* @@ -7473,14 +7386,14 @@ key_parse(struct mbuf *m, struct socket */ } - if (msg->sadb_msg_type >= __arraycount(key_typesw) || - key_typesw[msg->sadb_msg_type] == NULL) { + if (msg->sadb_msg_type >= __arraycount(key_api_typesw) || + key_api_typesw[msg->sadb_msg_type] == NULL) { PFKEY_STATINC(PFKEY_STAT_OUT_INVMSGTYPE); error = EINVAL; goto senderror; } - return (*key_typesw[msg->sadb_msg_type])(so, m, &mh); + return (*key_api_typesw[msg->sadb_msg_type])(so, m, &mh); senderror: return key_senderror(so, m, error);