Module Name:    src
Committed By:   ozaki-r
Date:           Wed Apr  1 02:49:44 UTC 2015

Modified Files:
        src/sys/netinet6: ip6_input.c
        src/sys/netipsec: ipsec.c ipsec.h

Log Message:
Pull out ipsec routines from ip6_input

This change reduces symbol references from netinet6 to netipsec
and improves modularity of netipsec.

No functional change is intended.


To generate a diff of this commit:
cvs rdiff -u -r1.150 -r1.151 src/sys/netinet6/ip6_input.c
cvs rdiff -u -r1.65 -r1.66 src/sys/netipsec/ipsec.c
cvs rdiff -u -r1.36 -r1.37 src/sys/netipsec/ipsec.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet6/ip6_input.c
diff -u src/sys/netinet6/ip6_input.c:1.150 src/sys/netinet6/ip6_input.c:1.151
--- src/sys/netinet6/ip6_input.c:1.150	Tue Jan 20 21:27:36 2015
+++ src/sys/netinet6/ip6_input.c	Wed Apr  1 02:49:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip6_input.c,v 1.150 2015/01/20 21:27:36 roy Exp $	*/
+/*	$NetBSD: ip6_input.c,v 1.151 2015/04/01 02:49:44 ozaki-r Exp $	*/
 /*	$KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.150 2015/01/20 21:27:36 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.151 2015/04/01 02:49:44 ozaki-r Exp $");
 
 #include "opt_gateway.h"
 #include "opt_inet.h"
@@ -748,11 +748,6 @@ ip6_input(struct mbuf *m)
 
 #ifdef IPSEC
 		if (ipsec_used) {
-			struct m_tag *mtag;
-			struct tdb_ident *tdbi;
-			struct secpolicy *sp;
-			int s, error;
-
 			/*
 			 * enforce IPsec policy checking if we are seeing last
 			 * header. note that we do not visit this with
@@ -760,39 +755,7 @@ ip6_input(struct mbuf *m)
 			 */
 			if ((inet6sw[ip_protox[nxt]].pr_flags
 			    & PR_LASTHDR) != 0) {
-				/*
-				 * Check if the packet has already had IPsec
-				 * processing done. If so, then just pass it
-				 * along. This tag gets set during AH, ESP,
-				 * etc. input handling, before the packet is
-				 * returned to the ip input queue for delivery.
-				 */
-				mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE,
-				    NULL);
-				s = splsoftnet();
-				if (mtag != NULL) {
-					tdbi = (struct tdb_ident *)(mtag + 1);
-					sp = ipsec_getpolicy(tdbi,
-					    IPSEC_DIR_INBOUND);
-				} else {
-					sp = ipsec_getpolicybyaddr(m,
-					    IPSEC_DIR_INBOUND, IP_FORWARDING,
-					    &error);
-				}
-				if (sp != NULL) {
-					/*
-					 * Check security policy against packet
-					 * attributes.
-					 */
-					error = ipsec_in_reject(sp, m);
-					KEY_FREESP(&sp);
-				} else {
-					/* XXX error stat??? */
-					error = EINVAL;
-					DPRINTF(("ip6_input: no SP, packet"
-					    " discarded\n"));/*XXX*/
-				}
-				splx(s);
+				int error = ipsec6_input(m);
 				if (error)
 					goto bad;
 			}

Index: src/sys/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.65 src/sys/netipsec/ipsec.c:1.66
--- src/sys/netipsec/ipsec.c:1.65	Wed Apr  1 01:44:56 2015
+++ src/sys/netipsec/ipsec.c	Wed Apr  1 02:49:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec.c,v 1.65 2015/04/01 01:44:56 ozaki-r Exp $	*/
+/*	$NetBSD: ipsec.c,v 1.66 2015/04/01 02:49:44 ozaki-r Exp $	*/
 /*	$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $	*/
 /*	$KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $	*/
 
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.65 2015/04/01 01:44:56 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.66 2015/04/01 02:49:44 ozaki-r Exp $");
 
 /*
  * IPsec controller part.
@@ -2425,7 +2425,52 @@ skippolicycheck:;
 	*needipsecp = needipsec;
 	return sp;
 }
-#endif
+
+int
+ipsec6_input(struct mbuf *m)
+{
+	struct m_tag *mtag;
+	struct tdb_ident *tdbi;
+	struct secpolicy *sp;
+	int s, error;
+
+	/*
+	 * Check if the packet has already had IPsec
+	 * processing done. If so, then just pass it
+	 * along. This tag gets set during AH, ESP,
+	 * etc. input handling, before the packet is
+	 * returned to the ip input queue for delivery.
+	 */
+	mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE,
+	    NULL);
+	s = splsoftnet();
+	if (mtag != NULL) {
+		tdbi = (struct tdb_ident *)(mtag + 1);
+		sp = ipsec_getpolicy(tdbi,
+		    IPSEC_DIR_INBOUND);
+	} else {
+		sp = ipsec_getpolicybyaddr(m,
+		    IPSEC_DIR_INBOUND, IP_FORWARDING,
+		    &error);
+	}
+	if (sp != NULL) {
+		/*
+		 * Check security policy against packet
+		 * attributes.
+		 */
+		error = ipsec_in_reject(sp, m);
+		KEY_FREESP(&sp);
+	} else {
+		/* XXX error stat??? */
+		error = EINVAL;
+		DPRINTF(("ip6_input: no SP, packet"
+		    " discarded\n"));/*XXX*/
+	}
+	splx(s);
+
+	return error;
+}
+#endif /* INET6 */
 
 
 

Index: src/sys/netipsec/ipsec.h
diff -u src/sys/netipsec/ipsec.h:1.36 src/sys/netipsec/ipsec.h:1.37
--- src/sys/netipsec/ipsec.h:1.36	Fri Sep  5 09:26:44 2014
+++ src/sys/netipsec/ipsec.h	Wed Apr  1 02:49:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec.h,v 1.36 2014/09/05 09:26:44 matt Exp $	*/
+/*	$NetBSD: ipsec.h,v 1.37 2015/04/01 02:49:44 ozaki-r Exp $	*/
 /*	$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec.h,v 1.2.4.2 2004/02/14 22:23:23 bms Exp $	*/
 /*	$KAME: ipsec.h,v 1.53 2001/11/20 08:32:38 itojun Exp $	*/
 
@@ -260,6 +260,9 @@ int ipsec4_output(struct mbuf *, struct 
 	struct secpolicy **, u_long *, bool *, bool *);
 int ipsec4_input(struct mbuf *, int);
 int ipsec4_forward(struct mbuf *, int *);
+#ifdef INET6
+int ipsec6_input(struct mbuf *);
+#endif
 
 static __inline struct secpolicy*
 ipsec4_getpolicybysock(

Reply via email to