Date: Thu, 22 Dec 2016 14:11:39 +0000 (UTC) From: "Andrey V. Elsukov" <ae@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r310408 - projects/ipsec/sys/netipsec Message-ID: <201612221411.uBMEBdbp072521@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612221411.uBMEBdbp072521>