freebsd-dev/sys/netinet
Yoshinobu Inoue a683a7dd4f Avoid kernel panic when tcp rfc1323 and rfc1644 options are enabled
at the same time.

   When rfc1323 and rfc1644 option are enabled by sysctl,
   and tcp over IPv6 is tried, kernel panic happens by the
   following check in tcp_output(), because now hdrlen is bigger
   in such case than before.

/*#ifdef DIAGNOSTIC*/
        if (max_linkhdr + hdrlen > MHLEN)
                panic("tcphdr too big");
/*#endif*/

   So change the above check to compare with MCLBYTES in #ifdef INET6 case.
   Also, allocate a mbuf cluster for the header mbuf, in that case.

Bug reported at KAME environment.
Approved by: jkh

Reviewed by: sumikawa
Obtained from: KAME project
2000-02-09 00:34:40 +00:00
..
libalias The flags PKT_ALIAS_PUNCH_FW and PKT_ALIAS_PROXY_ONLY were both 2000-02-02 23:49:32 +00:00
fil.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
icmp6.h KAME netinet6 basic part(no IPsec,no V6 Multicast Forwarding, no UDP/TCP 1999-11-22 02:45:11 +00:00
icmp_var.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
if_atm.c udp IPv6 support, IPv6/IPv4 tunneling support in kernel, 1999-12-07 17:39:16 +00:00
if_atm.h Forward declare some structs so that this file is more self-sufficient. 1998-02-03 21:52:02 +00:00
if_ether.c Append missing newline to log() message for permanent ARP modification 1999-10-18 11:56:50 +00:00
if_ether.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
if_fddi.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
igmp_var.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
igmp.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
igmp.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
in_cksum.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
in_gif.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
in_gif.h add forward declarations, and small cosmetic changes. 2000-01-15 05:20:40 +00:00
in_hostcache.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
in_hostcache.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
in_pcb.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
in_pcb.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
in_proto.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
in_rmx.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
in_systm.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
in_var.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
in.c Change struct sockaddr_storage member name, because following change 2000-01-13 14:52:53 +00:00
in.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ip6.h KAME netinet6 basic part(no IPsec,no V6 Multicast Forwarding, no UDP/TCP 1999-11-22 02:45:11 +00:00
ip_auth.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_auth.h Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_compat.h Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_divert.c prevent kernel panic which happens when either of IPSEC and IPDIVERT 2000-01-08 12:53:48 +00:00
ip_dummynet.c Fix a (mostly harmless) scheduling-in-the-past problem with 2000-02-04 16:45:33 +00:00
ip_dummynet.h Implement per-flow queueing. Using a single pipe config rule, 2000-01-08 11:24:46 +00:00
ip_ecn.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
ip_ecn.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ip_fil.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_fil.h Apply patches in rev 1.2 and 1.9 that I forgot 2000-01-14 19:48:42 +00:00
ip_flow.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ip_flow.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ip_frag.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_frag.h Add kernel parts of revived ipfilter (3.3.3.) 1999-11-23 21:44:59 +00:00
ip_ftp_pxy.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_fw.c tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
ip_fw.h Add ipfw hooks for the new dummynet features. 2000-01-08 11:31:43 +00:00
ip_icmp.c Mitigate the stream.c attacks 2000-01-28 06:13:09 +00:00
ip_icmp.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ip_input.c Move the *intrq variables into net/intrq.c and unconditionally 2000-01-24 20:39:02 +00:00
ip_log.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_mroute.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
ip_mroute.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ip_nat.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_nat.h Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_output.c MGETHDR() does not initialize m_pkthdr.rcvif, do it here. 2000-01-10 18:46:05 +00:00
ip_proxy.c Add kernel parts of revived ipfilter (3.3.3.) 1999-11-23 21:44:59 +00:00
ip_proxy.h Add kernel parts of revived ipfilter (3.3.3.) 1999-11-23 21:44:59 +00:00
ip_raudio_pxy.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_rcmd_pxy.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_state.c Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ip_state.h Add kernel parts of revived ipfilter (3.3.3.) 1999-11-23 21:44:59 +00:00
ip_var.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ip.h IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
ipl.h Bring over ipfilter kernel sources, including merging the local modifications. 2000-01-13 19:01:33 +00:00
ipprotosw.h IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
mlfk_ipl.c The ipfilter module name wasn't exactly conventional.. 1999-12-20 15:49:38 +00:00
raw_ip.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
tcp_debug.c Sorry in this just befor code freeze commit. 2000-01-29 11:49:07 +00:00
tcp_debug.h Sorry in this just befor code freeze commit. 2000-01-29 11:49:07 +00:00
tcp_fsm.h Undo rev 1.10, which took out TH_FIN from the CLOSING state. This 1999-11-07 04:18:30 +00:00
tcp_input.c Mitigate the stream.c attacks 2000-01-28 06:13:09 +00:00
tcp_output.c Avoid kernel panic when tcp rfc1323 and rfc1644 options are enabled 2000-02-09 00:34:40 +00:00
tcp_reass.c Mitigate the stream.c attacks 2000-01-28 06:13:09 +00:00
tcp_seq.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
tcp_subr.c Fix the bug that IPv4 ttl is not initialized when AF_INET6 socket is used 2000-01-25 01:05:18 +00:00
tcp_timer.c tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
tcp_timer.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
tcp_timewait.c Fix the bug that IPv4 ttl is not initialized when AF_INET6 socket is used 2000-01-25 01:05:18 +00:00
tcp_usrreq.c tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
tcp_var.h tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
tcp.h tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
tcpip.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
udp_usrreq.c IPSEC support in the kernel. 1999-12-22 19:13:38 +00:00
udp_var.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
udp.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00