svn commit: r310408 - projects/ipsec/sys/netipsec

Andrey V. Elsukov ae at FreeBSD.org
Thu Dec 22 14:11:41 UTC 2016


Author: ae
Date: Thu Dec 22 14:11:39 2016
New Revision: 310408
URL: https://svnweb.freebsd.org/changeset/base/310408

Log:
  Make ipsec_control_pcbpolicy() static and implement IPSEC_PCBCTL()
  method for IPv4 and IPv6.

Modified:
  projects/ipsec/sys/netipsec/ipsec_pcb.c

Modified: projects/ipsec/sys/netipsec/ipsec_pcb.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec_pcb.c	Thu Dec 22 14:09:01 2016	(r310407)
+++ projects/ipsec/sys/netipsec/ipsec_pcb.c	Thu Dec 22 14:11:39 2016	(r310408)
@@ -27,6 +27,10 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_inet.h"
+#include "opt_inet6.h"
+#include "opt_ipsec.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -43,9 +47,12 @@ __FBSDID("$FreeBSD$");
 #include <netinet/in_pcb.h>
 
 #include <netipsec/ipsec.h>
+#include <netipsec/ipsec_support.h>
 #include <netipsec/key.h>
 #include <netipsec/key_debug.h>
 
+MALLOC_DEFINE(M_IPSEC_INPCB, "inpcbpolicy", "inpcb-resident ipsec policy");
+
 /* Initialize PCB policy. */
 int
 ipsec_init_pcbpolicy(struct inpcb *inp)
@@ -288,7 +295,7 @@ ipsec_get_pcbpolicy(struct inpcb *inp, v
 }
 
 /* Handle socket option control request for PCB */
-int
+static int
 ipsec_control_pcbpolicy(struct inpcb *inp, struct sockopt *sopt)
 {
 	void *optdata;
@@ -327,3 +334,31 @@ ipsec_control_pcbpolicy(struct inpcb *in
 	return (error);
 }
 
+#ifdef INET
+/*
+ * IPSEC_PCBCTL() method implementation for IPv4.
+ */
+int
+ipsec4_pcbctl(struct inpcb *inp, struct sockopt *sopt)
+{
+
+	if (sopt->sopt_name != IP_IPSEC_POLICY)
+		return (ENOPROTOOPT);
+	return (ipsec_control_pcbpolicy(inp, sopt));
+}
+#endif
+
+#ifdef INET6
+/*
+ * IPSEC_PCBCTL() method implementation for IPv6.
+ */
+int
+ipsec6_pcbctl(struct inpcb *inp, struct sockopt *sopt)
+{
+
+	if (sopt->sopt_name != IPV6_IPSEC_POLICY)
+		return (ENOPROTOOPT);
+	return (ipsec_control_pcbpolicy(inp, sopt));
+}
+#endif
+


More information about the svn-src-projects mailing list