Module Name:    src
Committed By:   ozaki-r
Date:           Fri Jul 14 01:24:24 UTC 2017

Modified Files:
        src/sys/netipsec: key.c key.h xform.h xform_ah.c xform_esp.c
            xform_ipcomp.c xform_ipip.c xform_tcp.c

Log Message:
Pass sav directly to opencrypto callback

In a callback, use a passed sav as-is by default and look up a sav
only if the passed sav is dead.


To generate a diff of this commit:
cvs rdiff -u -r1.181 -r1.182 src/sys/netipsec/key.c
cvs rdiff -u -r1.21 -r1.22 src/sys/netipsec/key.h
cvs rdiff -u -r1.9 -r1.10 src/sys/netipsec/xform.h
cvs rdiff -u -r1.59 -r1.60 src/sys/netipsec/xform_ah.c
cvs rdiff -u -r1.60 -r1.61 src/sys/netipsec/xform_esp.c
cvs rdiff -u -r1.41 -r1.42 src/sys/netipsec/xform_ipcomp.c
cvs rdiff -u -r1.51 -r1.52 src/sys/netipsec/xform_ipip.c
cvs rdiff -u -r1.13 -r1.14 src/sys/netipsec/xform_tcp.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.181 src/sys/netipsec/key.c:1.182
--- src/sys/netipsec/key.c:1.181	Thu Jul 13 01:22:44 2017
+++ src/sys/netipsec/key.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: key.c,v 1.181 2017/07/13 01:22:44 ozaki-r Exp $	*/
+/*	$NetBSD: key.c,v 1.182 2017/07/14 01:24:23 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.181 2017/07/13 01:22:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.182 2017/07/14 01:24:23 ozaki-r Exp $");
 
 /*
  * This code is referd to RFC 2367
@@ -1246,6 +1246,17 @@ key_sp_ref(struct secpolicy *sp, const c
 	    sp, sp->id, where, tag, sp->refcnt);
 }
 
+void
+key_sa_ref(struct secasvar *sav, const char* where, int tag)
+{
+
+	SA_ADDREF2(sav, where, tag);
+
+	KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP,
+	    "DP cause refcnt++:%d SA:%p from %s:%u\n",
+	    sav->refcnt, sav, where, tag);
+}
+
 /*
  * Must be called after calling key_lookup_sp*().
  * For both the packet without socket and key_freeso().

Index: src/sys/netipsec/key.h
diff -u src/sys/netipsec/key.h:1.21 src/sys/netipsec/key.h:1.22
--- src/sys/netipsec/key.h:1.21	Thu Jul 13 01:22:44 2017
+++ src/sys/netipsec/key.h	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: key.h,v 1.21 2017/07/13 01:22:44 ozaki-r Exp $	*/
+/*	$NetBSD: key.h,v 1.22 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/key.h,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$KAME: key.h,v 1.21 2001/07/27 03:51:30 itojun Exp $	*/
 
@@ -59,6 +59,7 @@ struct secpolicy *key_gettunnel(const st
 /* NB: prepend with _ for KAME IPv6 compatbility */
 void _key_freesp(struct secpolicy **, const char*, int);
 void key_sp_ref(struct secpolicy *, const char*, int);
+void key_sa_ref(struct secasvar *, const char*, int);
 
 /*
  * Access to the SADB are interlocked with splsoftnet.  In particular,
@@ -79,6 +80,8 @@ void key_sp_ref(struct secpolicy *, cons
 	_key_freesp(spp, __func__, __LINE__)
 #define	KEY_SP_REF(sp)						\
 	key_sp_ref(sp, __func__, __LINE__)
+#define KEY_SA_REF(sav)						\
+	key_sa_ref(sav, __func__, __LINE__)
 
 struct secasvar *key_lookup_sa(const union sockaddr_union *,
 		u_int, u_int32_t, u_int16_t, u_int16_t, const char*, int);

Index: src/sys/netipsec/xform.h
diff -u src/sys/netipsec/xform.h:1.9 src/sys/netipsec/xform.h:1.10
--- src/sys/netipsec/xform.h:1.9	Wed Jul  5 03:44:59 2017
+++ src/sys/netipsec/xform.h	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform.h,v 1.9 2017/07/05 03:44:59 ozaki-r Exp $	*/
+/*	$NetBSD: xform.h,v 1.10 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/xform.h,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$OpenBSD: ip_ipsp.h,v 1.119 2002/03/14 01:27:11 millert Exp $	*/
 /*
@@ -62,6 +62,7 @@ struct tdb_ident {
 /*
  * Opaque data structure hung off a crypto operation descriptor.
  */
+struct secasvar;
 struct tdb_crypto {
 	struct ipsecrequest	*tc_isr;	/* ipsec request state */
 	u_int32_t		tc_spi;		/* associated SPI */
@@ -70,9 +71,9 @@ struct tdb_crypto {
 	u_int8_t		tc_nxt;		/* next protocol, e.g. IPV4 */
 	int			tc_protoff;	/* current protocol offset */
 	int			tc_skip;	/* data offset */
+	struct secasvar		*tc_sav;	/* ipsec SA */
 };
 
-struct secasvar;
 struct ipescrequest;
 
 struct xformsw {
@@ -89,7 +90,7 @@ struct xformsw {
 	const char	*xf_name;		/* human-readable name */
 	int	(*xf_init)(struct secasvar*, const struct xformsw*);/* setup */
 	int	(*xf_zeroize)(struct secasvar*);		/* cleanup */
-	int	(*xf_input)(struct mbuf*, const struct secasvar*, /* input */
+	int	(*xf_input)(struct mbuf*, struct secasvar*, /* input */
 			int, int);
 	int	(*xf_output)(struct mbuf*,	       		/* output */
 			struct ipsecrequest *, struct mbuf **, int, int);

Index: src/sys/netipsec/xform_ah.c
diff -u src/sys/netipsec/xform_ah.c:1.59 src/sys/netipsec/xform_ah.c:1.60
--- src/sys/netipsec/xform_ah.c:1.59	Thu Jul 13 03:25:38 2017
+++ src/sys/netipsec/xform_ah.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform_ah.c,v 1.59 2017/07/13 03:25:38 ozaki-r Exp $	*/
+/*	$NetBSD: xform_ah.c,v 1.60 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/xform_ah.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$OpenBSD: ip_ah.c,v 1.63 2001/06/26 06:18:58 angelos Exp $ */
 /*
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_ah.c,v 1.59 2017/07/13 03:25:38 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_ah.c,v 1.60 2017/07/14 01:24:23 ozaki-r Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -614,7 +614,7 @@ ah_massage_headers(struct mbuf **m0, int
  * passes authentication.
  */
 static int
-ah_input(struct mbuf *m, const struct secasvar *sav, int skip, int protoff)
+ah_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
 {
 	const struct auth_hash *ahx;
 	struct tdb_crypto *tc;
@@ -748,6 +748,8 @@ ah_input(struct mbuf *m, const struct se
 	tc->tc_nxt = ah->ah_nxt;
 	tc->tc_protoff = protoff;
 	tc->tc_skip = skip;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	DPRINTF(("%s: hash over %d bytes, skip %d: "
 		 "crda len %d skip %d inject %d\n", __func__,
@@ -803,12 +805,17 @@ ah_input_cb(struct cryptop *crp)
 	s = splsoftnet();
 	mutex_enter(softnet_lock);
 
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, sport, dport);
-	if (sav == NULL) {
-		AH_STATINC(AH_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto\n", __func__));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
+		    sport, dport);
+		if (sav == NULL) {
+			AH_STATINC(AH_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto\n", __func__));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 
 	saidx = &sav->sah->saidx;
@@ -954,7 +961,7 @@ ah_output(
 )
 {
 	char buf[IPSEC_ADDRSTRLEN];
-	const struct secasvar *sav;
+	struct secasvar *sav;
 	const struct auth_hash *ahx;
 	struct cryptodesc *crda;
 	struct tdb_crypto *tc;
@@ -1150,6 +1157,8 @@ ah_output(
 	tc->tc_proto = sav->sah->saidx.proto;
 	tc->tc_skip = skip;
 	tc->tc_protoff = protoff;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	return crypto_dispatch(crp);
 bad:
@@ -1182,12 +1191,16 @@ ah_output_cb(struct cryptop *crp)
 	mutex_enter(softnet_lock);
 
 	isr = tc->tc_isr;
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
-	if (sav == NULL) {
-		AH_STATINC(AH_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto\n", __func__));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
+		if (sav == NULL) {
+			AH_STATINC(AH_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto\n", __func__));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 	KASSERTMSG(isr->sav == sav, "SA changed");
 

Index: src/sys/netipsec/xform_esp.c
diff -u src/sys/netipsec/xform_esp.c:1.60 src/sys/netipsec/xform_esp.c:1.61
--- src/sys/netipsec/xform_esp.c:1.60	Thu Jul 13 03:00:46 2017
+++ src/sys/netipsec/xform_esp.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform_esp.c,v 1.60 2017/07/13 03:00:46 ozaki-r Exp $	*/
+/*	$NetBSD: xform_esp.c,v 1.61 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/xform_esp.c,v 1.2.2.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$OpenBSD: ip_esp.c,v 1.69 2001/06/26 06:18:59 angelos Exp $ */
 
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_esp.c,v 1.60 2017/07/13 03:00:46 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_esp.c,v 1.61 2017/07/14 01:24:23 ozaki-r Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -297,7 +297,7 @@ esp_zeroize(struct secasvar *sav)
  * ESP input processing, called (eventually) through the protocol switch.
  */
 static int
-esp_input(struct mbuf *m, const struct secasvar *sav, int skip, int protoff)
+esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
 {
 	const struct auth_hash *esph;
 	const struct enc_xform *espx;
@@ -436,6 +436,8 @@ esp_input(struct mbuf *m, const struct s
 	tc->tc_proto = sav->sah->saidx.proto;
 	tc->tc_protoff = protoff;
 	tc->tc_skip = skip;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	/* Decryption descriptor */
 	if (espx) {
@@ -510,15 +512,20 @@ esp_input_cb(struct cryptop *crp)
 	s = splsoftnet();
 	mutex_enter(softnet_lock);
 
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, sport, dport);
-	if (sav == NULL) {
-		ESP_STATINC(ESP_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto "
-		    "(SA %s/%08lx proto %u)\n", __func__,
-		    ipsec_address(&tc->tc_dst, buf, sizeof(buf)),
-		    (u_long) ntohl(tc->tc_spi), tc->tc_proto));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
+		    sport, dport);
+		if (sav == NULL) {
+			ESP_STATINC(ESP_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto "
+			    "(SA %s/%08lx proto %u)\n", __func__,
+			    ipsec_address(&tc->tc_dst, buf, sizeof(buf)),
+			    (u_long) ntohl(tc->tc_spi), tc->tc_proto));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 
 	saidx = &sav->sah->saidx;
@@ -702,7 +709,7 @@ esp_output(
 	int hlen, rlen, padding, blks, alen, i, roff;
 	struct mbuf *mo = NULL;
 	struct tdb_crypto *tc;
-	const struct secasvar *sav;
+	struct secasvar *sav;
 	struct secasindex *saidx;
 	unsigned char *pad;
 	uint8_t prot;
@@ -900,6 +907,8 @@ esp_output(
 	tc->tc_spi = sav->spi;
 	tc->tc_dst = saidx->dst;
 	tc->tc_proto = saidx->proto;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	/* Crypto operation descriptor. */
 	crp->crp_ilen = m->m_pkthdr.len; /* Total input length. */
@@ -957,16 +966,20 @@ esp_output_cb(struct cryptop *crp)
 	mutex_enter(softnet_lock);
 
 	isr = tc->tc_isr;
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
-	if (sav == NULL) {
-		char buf[IPSEC_ADDRSTRLEN];
-		ESP_STATINC(ESP_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto (SA %s/%08lx "
-		    "proto %u)\n", __func__,
-		    ipsec_address(&tc->tc_dst, buf, sizeof(buf)),
-		    (u_long) ntohl(tc->tc_spi), tc->tc_proto));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
+		if (sav == NULL) {
+			char buf[IPSEC_ADDRSTRLEN];
+			ESP_STATINC(ESP_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto (SA %s/%08lx "
+			    "proto %u)\n", __func__,
+			    ipsec_address(&tc->tc_dst, buf, sizeof(buf)),
+			    (u_long) ntohl(tc->tc_spi), tc->tc_proto));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 	KASSERTMSG(isr->sav == sav,
 	    "SA changed was %p now %p", isr->sav, sav);

Index: src/sys/netipsec/xform_ipcomp.c
diff -u src/sys/netipsec/xform_ipcomp.c:1.41 src/sys/netipsec/xform_ipcomp.c:1.42
--- src/sys/netipsec/xform_ipcomp.c:1.41	Fri Jul  7 01:37:34 2017
+++ src/sys/netipsec/xform_ipcomp.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform_ipcomp.c,v 1.41 2017/07/07 01:37:34 ozaki-r Exp $	*/
+/*	$NetBSD: xform_ipcomp.c,v 1.42 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/xform_ipcomp.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $	*/
 /* $OpenBSD: ip_ipcomp.c,v 1.1 2001/07/05 12:08:52 jjbg Exp $ */
 
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_ipcomp.c,v 1.41 2017/07/07 01:37:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_ipcomp.c,v 1.42 2017/07/14 01:24:23 ozaki-r Exp $");
 
 /* IP payload compression protocol (IPComp), see RFC 2393 */
 #if defined(_KERNEL_OPT)
@@ -144,7 +144,7 @@ ipcomp_zeroize(struct secasvar *sav)
  * ipcomp_input() gets called to uncompress an input packet
  */
 static int
-ipcomp_input(struct mbuf *m, const struct secasvar *sav, int skip, int protoff)
+ipcomp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
 {
 	struct tdb_crypto *tc;
 	struct cryptodesc *crdc;
@@ -205,6 +205,8 @@ ipcomp_input(struct mbuf *m, const struc
 	tc->tc_proto = sav->sah->saidx.proto;
 	tc->tc_protoff = protoff;
 	tc->tc_skip = skip;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	return crypto_dispatch(crp);
 }
@@ -252,12 +254,17 @@ ipcomp_input_cb(struct cryptop *crp)
 	s = splsoftnet();
 	mutex_enter(softnet_lock);
 
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, sport, dport);
-	if (sav == NULL) {
-		IPCOMP_STATINC(IPCOMP_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto\n", __func__));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
+		    sport, dport);
+		if (sav == NULL) {
+			IPCOMP_STATINC(IPCOMP_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto\n", __func__));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 
 	saidx = &sav->sah->saidx;
@@ -375,7 +382,7 @@ ipcomp_output(
 )
 {
 	char buf[IPSEC_ADDRSTRLEN];
-	const struct secasvar *sav;
+	struct secasvar *sav;
 	const struct comp_algo *ipcompx;
 	int error, ralen, hlen, maxpacketsize;
 	struct cryptodesc *crdc;
@@ -485,6 +492,8 @@ ipcomp_output(
 	tc->tc_proto = sav->sah->saidx.proto;
 	tc->tc_skip = skip;
 	tc->tc_protoff = protoff;
+	tc->tc_sav = sav;
+	KEY_SA_REF(sav);
 
 	/* Crypto operation descriptor */
 	crp->crp_ilen = m->m_pkthdr.len;	/* Total input length */
@@ -527,12 +536,16 @@ ipcomp_output_cb(struct cryptop *crp)
 	mutex_enter(softnet_lock);
 
 	isr = tc->tc_isr;
-	sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
-	if (sav == NULL) {
-		IPCOMP_STATINC(IPCOMP_STAT_NOTDB);
-		DPRINTF(("%s: SA expired while in crypto\n", __func__));
-		error = ENOBUFS;		/*XXX*/
-		goto bad;
+	sav = tc->tc_sav;
+	if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
+		KEY_FREESAV(&sav);
+		sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
+		if (sav == NULL) {
+			IPCOMP_STATINC(IPCOMP_STAT_NOTDB);
+			DPRINTF(("%s: SA expired while in crypto\n", __func__));
+			error = ENOBUFS;		/*XXX*/
+			goto bad;
+		}
 	}
 	KASSERTMSG(isr->sav == sav, "SA changed");
 

Index: src/sys/netipsec/xform_ipip.c
diff -u src/sys/netipsec/xform_ipip.c:1.51 src/sys/netipsec/xform_ipip.c:1.52
--- src/sys/netipsec/xform_ipip.c:1.51	Wed Jul 12 07:00:40 2017
+++ src/sys/netipsec/xform_ipip.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform_ipip.c,v 1.51 2017/07/12 07:00:40 ozaki-r Exp $	*/
+/*	$NetBSD: xform_ipip.c,v 1.52 2017/07/14 01:24:23 ozaki-r Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/xform_ipip.c,v 1.3.2.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$OpenBSD: ip_ipip.c,v 1.25 2002/06/10 18:04:55 itojun Exp $ */
 
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_ipip.c,v 1.51 2017/07/12 07:00:40 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_ipip.c,v 1.52 2017/07/14 01:24:23 ozaki-r Exp $");
 
 /*
  * IP-inside-IP processing
@@ -403,7 +403,7 @@ ipip_output(
 )
 {
 	char buf[IPSEC_ADDRSTRLEN];
-	const struct secasvar *sav;
+	struct secasvar *sav;
 	uint8_t tp, otos;
 	struct secasindex *saidx;
 	int error;
@@ -638,7 +638,7 @@ ipe4_zeroize(struct secasvar *sav)
 static int
 ipe4_input(
     struct mbuf *m,
-    const struct secasvar *sav,
+    struct secasvar *sav,
     int skip,
     int protoff
 )

Index: src/sys/netipsec/xform_tcp.c
diff -u src/sys/netipsec/xform_tcp.c:1.13 src/sys/netipsec/xform_tcp.c:1.14
--- src/sys/netipsec/xform_tcp.c:1.13	Mon Jul 10 07:17:12 2017
+++ src/sys/netipsec/xform_tcp.c	Fri Jul 14 01:24:23 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: xform_tcp.c,v 1.13 2017/07/10 07:17:12 ozaki-r Exp $ */
+/*	$NetBSD: xform_tcp.c,v 1.14 2017/07/14 01:24:23 ozaki-r Exp $ */
 /*	$FreeBSD: sys/netipsec/xform_tcp.c,v 1.1.2.1 2004/02/14 22:24:09 bms Exp $ */
 
 /*
@@ -31,7 +31,7 @@
 /* TCP MD5 Signature Option (RFC2385) */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_tcp.c,v 1.13 2017/07/10 07:17:12 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_tcp.c,v 1.14 2017/07/14 01:24:23 ozaki-r Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -141,7 +141,7 @@ tcpsignature_zeroize(struct secasvar *sa
  * We do this from within tcp itself, so this routine is just a stub.
  */
 static int
-tcpsignature_input(struct mbuf *m, const struct secasvar *sav, int skip,
+tcpsignature_input(struct mbuf *m, struct secasvar *sav, int skip,
     int protoff)
 {
 

Reply via email to