summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-01-15 14:56:38 +0000
committershin <shin@FreeBSD.org>2000-01-15 14:56:38 +0000
commite7b807d1e39b437dd36a6de181d9c2d3849a440f (patch)
tree87035964194ab67449df445329b7c03812001b0c /sys
parente41bceb344bd708fb10d2bc13ac5f056f4baae42 (diff)
downloadFreeBSD-src-e7b807d1e39b437dd36a6de181d9c2d3849a440f.zip
FreeBSD-src-e7b807d1e39b437dd36a6de181d9c2d3849a440f.tar.gz
Fixed the problem that IPsec connection hangs when bigger data is sent.
-opt_ipsec.h was missing on some tcp files (sorry for basic mistake) -made buildable as above fix -also added some missing IPv4 mapped IPv6 addr consideration into ipsec4_getpolicybysock
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/tcp_input.c4
-rw-r--r--sys/netinet/tcp_output.c5
-rw-r--r--sys/netinet/tcp_reass.c4
-rw-r--r--sys/netinet/tcp_subr.c1
-rw-r--r--sys/netinet/tcp_timewait.c1
-rw-r--r--sys/netinet6/ipsec.c12
-rw-r--r--sys/netinet6/ipsec.h2
7 files changed, 21 insertions, 8 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index ec2ddb8..73df9fd 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -36,6 +36,7 @@
#include "opt_ipfw.h" /* for ipfw_fwd */
#include "opt_inet6.h"
+#include "opt_ipsec.h"
#include "opt_tcpdebug.h"
#include "opt_tcp_input.h"
@@ -93,6 +94,9 @@ struct tcphdr tcp_savetcp;
#ifdef IPSEC
#include <netinet6/ipsec.h>
+#ifdef INET6
+#include <netinet6/ipsec6.h>
+#endif
#include <netkey/key.h>
#endif /*IPSEC*/
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index b7cd052..bbae03f 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -35,6 +35,7 @@
*/
#include "opt_inet6.h"
+#include "opt_ipsec.h"
#include "opt_tcpdebug.h"
#include <stddef.h>
@@ -75,6 +76,10 @@
#include <netinet/tcp_debug.h>
#endif
+#ifdef IPSEC
+#include <netinet6/ipsec.h>
+#endif /*IPSEC*/
+
#ifdef notyet
extern struct mbuf *m_copypack();
#endif
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index ec2ddb8..73df9fd 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -36,6 +36,7 @@
#include "opt_ipfw.h" /* for ipfw_fwd */
#include "opt_inet6.h"
+#include "opt_ipsec.h"
#include "opt_tcpdebug.h"
#include "opt_tcp_input.h"
@@ -93,6 +94,9 @@ struct tcphdr tcp_savetcp;
#ifdef IPSEC
#include <netinet6/ipsec.h>
+#ifdef INET6
+#include <netinet6/ipsec6.h>
+#endif
#include <netkey/key.h>
#endif /*IPSEC*/
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index fbe02c1..2dc912e 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -36,6 +36,7 @@
#include "opt_compat.h"
#include "opt_inet6.h"
+#include "opt_ipsec.h"
#include "opt_tcpdebug.h"
#include <sys/param.h>
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index fbe02c1..2dc912e 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -36,6 +36,7 @@
#include "opt_compat.h"
#include "opt_inet6.h"
+#include "opt_ipsec.h"
#include "opt_tcpdebug.h"
#include <sys/param.h>
diff --git a/sys/netinet6/ipsec.c b/sys/netinet6/ipsec.c
index 007df21..d9cf133 100644
--- a/sys/netinet6/ipsec.c
+++ b/sys/netinet6/ipsec.c
@@ -219,22 +219,20 @@ ipsec4_getpolicybysock(m, dir, so, error)
if (m == NULL || so == NULL || error == NULL)
panic("ipsec4_getpolicybysock: NULL pointer was passed.\n");
- switch (so->so_proto->pr_domain->dom_family) {
- case AF_INET:
+ if ((sotoinpcb(so)->inp_vflag & INP_IPV4) != 0) {
/* set spidx in pcb */
ipsec4_setspidx_inpcb(m, sotoinpcb(so));
pcbsp = sotoinpcb(so)->inp_sp;
- break;
+ }
#ifdef INET6
- case AF_INET6:
+ else if ((sotoinpcb(so)->inp_vflag & INP_IPV6) != 0) {
/* set spidx in pcb */
ipsec6_setspidx_in6pcb(m, sotoin6pcb(so));
pcbsp = sotoin6pcb(so)->in6p_sp;
- break;
+ }
#endif
- default:
+ else
panic("ipsec4_getpolicybysock: unsupported address family\n");
- }
/* sanity check */
if (pcbsp == NULL)
diff --git a/sys/netinet6/ipsec.h b/sys/netinet6/ipsec.h
index bd3bf54..df68bd7 100644
--- a/sys/netinet6/ipsec.h
+++ b/sys/netinet6/ipsec.h
@@ -288,7 +288,7 @@ extern int ipsec_chkreplay __P((u_int32_t, struct secasvar *));
extern int ipsec_updatereplay __P((u_int32_t, struct secasvar *));
extern size_t ipsec4_hdrsiz __P((struct mbuf *, u_int, struct inpcb *));
-extern size_t ipsec_hdrsiz_tcp __P((struct tcpcb *, int));
+extern size_t ipsec_hdrsiz_tcp __P((struct tcpcb *));
struct ip;
OpenPOWER on IntegriCloud