diff options
author | shin <shin@FreeBSD.org> | 2000-01-15 14:56:38 +0000 |
---|---|---|
committer | shin <shin@FreeBSD.org> | 2000-01-15 14:56:38 +0000 |
commit | e7b807d1e39b437dd36a6de181d9c2d3849a440f (patch) | |
tree | 87035964194ab67449df445329b7c03812001b0c /sys | |
parent | e41bceb344bd708fb10d2bc13ac5f056f4baae42 (diff) | |
download | FreeBSD-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.c | 4 | ||||
-rw-r--r-- | sys/netinet/tcp_output.c | 5 | ||||
-rw-r--r-- | sys/netinet/tcp_reass.c | 4 | ||||
-rw-r--r-- | sys/netinet/tcp_subr.c | 1 | ||||
-rw-r--r-- | sys/netinet/tcp_timewait.c | 1 | ||||
-rw-r--r-- | sys/netinet6/ipsec.c | 12 | ||||
-rw-r--r-- | sys/netinet6/ipsec.h | 2 |
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; |