summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2002-11-08 23:37:50 +0000
committersam <sam@FreeBSD.org>2002-11-08 23:37:50 +0000
commitef62292833a3cf488115f6193b9eca7c9dc7a500 (patch)
treef26b37b0a6bbf393c2051b9b900e5b7d5333f0ba /sys
parent6019e3c767dbfe1e63eea350246a2312d6745abe (diff)
downloadFreeBSD-src-ef62292833a3cf488115f6193b9eca7c9dc7a500.zip
FreeBSD-src-ef62292833a3cf488115f6193b9eca7c9dc7a500.tar.gz
FAST_IPSEC fixups:
o fix #ifdef typo o must use "bounce functions" when dispatched from the protosw table don't know how this stuff was missed in my testing; must've committed the wrong bits Pointy hat: sam Submitted by: "Doug Ambrisko" <ambrisko@verniernetworks.com>
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/in_proto.c26
-rw-r--r--sys/netipsec/ipsec.h3
-rw-r--r--sys/netipsec/ipsec_input.c18
3 files changed, 42 insertions, 5 deletions
diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c
index 5ecbe65..863b048 100644
--- a/sys/netinet/in_proto.c
+++ b/sys/netinet/in_proto.c
@@ -76,12 +76,8 @@
#include <netinet6/ipcomp.h>
#endif /* IPSEC */
-#ifdef FAST_IPESC
+#ifdef FAST_IPSEC
#include <netipsec/ipsec.h>
-#define ah4_input ipsec4_common_input
-#define esp4_input ipsec4_common_input
-#define ipcomp4_input ipsec4_common_input
-#define IPSEC
#endif /* FAST_IPSEC */
#ifdef IPXIP
@@ -162,6 +158,26 @@ struct protosw inetsw[] = {
&nousrreqs
},
#endif /* IPSEC */
+#ifdef FAST_IPSEC
+{ SOCK_RAW, &inetdomain, IPPROTO_AH, PR_ATOMIC|PR_ADDR,
+ ah4_input, 0, 0, 0,
+ 0,
+ 0, 0, 0, 0,
+ &nousrreqs
+},
+{ SOCK_RAW, &inetdomain, IPPROTO_ESP, PR_ATOMIC|PR_ADDR,
+ esp4_input, 0, 0, 0,
+ 0,
+ 0, 0, 0, 0,
+ &nousrreqs
+},
+{ SOCK_RAW, &inetdomain, IPPROTO_IPCOMP, PR_ATOMIC|PR_ADDR,
+ ipcomp4_input, 0, 0, 0,
+ 0,
+ 0, 0, 0, 0,
+ &nousrreqs
+},
+#endif /* FAST_IPSEC */
{ SOCK_RAW, &inetdomain, IPPROTO_IPV4, PR_ATOMIC|PR_ADDR|PR_LASTHDR,
encap4_input, 0, 0, rip_ctloutput,
0,
diff --git a/sys/netipsec/ipsec.h b/sys/netipsec/ipsec.h
index 93b1e23..7f0a021 100644
--- a/sys/netipsec/ipsec.h
+++ b/sys/netipsec/ipsec.h
@@ -361,6 +361,9 @@ extern const char *ipsec_logsastr __P((struct secasvar *));
extern void ipsec_dumpmbuf __P((struct mbuf *));
struct m_tag;
+extern void ah4_input(struct mbuf *m, int off);
+extern void esp4_input(struct mbuf *m, int off);
+extern void ipcomp4_input(struct mbuf *m, int off);
extern int ipsec4_common_input(struct mbuf *m, ...);
extern int ipsec4_common_input_cb(struct mbuf *m, struct secasvar *sav,
int skip, int protoff, struct m_tag *mt);
diff --git a/sys/netipsec/ipsec_input.c b/sys/netipsec/ipsec_input.c
index 1d5a3c9..9ebb518 100644
--- a/sys/netipsec/ipsec_input.c
+++ b/sys/netipsec/ipsec_input.c
@@ -201,6 +201,24 @@ ipsec4_common_input(struct mbuf *m, ...)
AF_INET, nxt);
}
+void
+ah4_input(struct mbuf *m, int off)
+{
+ ipsec4_common_input(m, off, IPPROTO_AH);
+}
+
+void
+esp4_input(struct mbuf *m, int off)
+{
+ ipsec4_common_input(m, off, IPPROTO_ESP);
+}
+
+void
+ipcomp4_input(struct mbuf *m, int off)
+{
+ ipsec4_common_input(m, off, IPPROTO_IPCOMP);
+}
+
/*
* IPsec input callback for INET protocols.
* This routine is called as the transform callback.
OpenPOWER on IntegriCloud