freebsd-skq/sys/netinet
andre 915054f299 Fix the interaction between 'ICMP fragmentation needed' MTU updates,
path MTU discovery and the tcp_minmss limiter for very small MTU's.

When the MTU suggested by the gateway via ICMP, or if there isn't
any the next smaller step from ip_next_mtu(), is lower than the
floor enforced by net.inet.tcp.minmss (default 216) the value is
ignored and the default MSS (512) is used instead.  However the
DF flag in the IP header is still set in tcp_output() preventing
fragmentation by the gateway.

Fix this by using tcp_minmss as the MSS and clear the DF flag if
the suggested MTU is too low.  This turns off path MTU dissovery
for the remainder of the session and allows fragmentation to be
done by the gateway.

Only MTU's smaller than 256 are affected.  The smallest official
MTU specified is for AX.25 packet radio at 256 octets.

PR:		kern/146628
Tested by:	Matthew Luckie <mjl-at-luckie org nz>
MFC after:	1 week
2010-08-15 13:25:18 +00:00
..
ipfw Fix operation of "netgraph" action in conjunction with the 2010-07-27 14:26:34 +00:00
libalias Don't use struct timezone. 2010-08-08 02:51:32 +00:00
accf_data.c
accf_dns.c
accf_http.c
icmp6.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
icmp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
if_atm.c
if_atm.h
if_ether.c Unbreak LINT by moving all carp hooks to net/if.c / netinet/ip_carp.h, with 2010-08-11 20:18:19 +00:00
if_ether.h Add arp_update_event. This replaces route_arp_update_event, which 2009-09-08 21:17:17 +00:00
igmp_var.h
igmp.c Fix a regression where DVMRP diagnostic traffic, such as that used 2010-04-27 14:14:21 +00:00
igmp.h
in_cksum.c
in_gif.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in_gif.h
in_mcast.c Fix a few issues related to the legacy 4.4 BSD multicast APIs. 2010-04-10 12:05:31 +00:00
in_pcb.c This patch fixes the problem where proxy ARP entries cannot be added 2010-05-25 20:42:35 +00:00
in_pcb.h Abstract out initialization of most aspects of struct inpcbinfo from 2010-03-14 18:59:11 +00:00
in_proto.c Allow carp(4) to be loaded as a kernel module. Follow precedent set by 2010-08-11 00:51:50 +00:00
in_rmx.c MFp4 @181628: 2010-07-31 15:31:23 +00:00
in_systm.h
in_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
in.c Allow carp(4) to be loaded as a kernel module. Follow precedent set by 2010-08-11 00:51:50 +00:00
in.h Add definition of IPv6 mobility header's protocol number, as assigned by 2010-03-31 23:02:25 +00:00
ip6.h
ip_carp.c Unbreak LINT by moving all carp hooks to net/if.c / netinet/ip_carp.h, with 2010-08-11 20:18:19 +00:00
ip_carp.h Unbreak LINT by moving all carp hooks to net/if.c / netinet/ip_carp.h, with 2010-08-11 20:18:19 +00:00
ip_divert.c Add pcb reference counting to the pcblist sysctl handler functions 2010-03-17 18:28:27 +00:00
ip_divert.h Various cleanup done in ipfw3-head branch including: 2010-01-04 19:01:22 +00:00
ip_dummynet.h whitespace fixes (trailing whitespace, bad indentation 2010-04-19 16:17:30 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c (S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument. 2009-12-28 22:56:30 +00:00
ip_encap.h
ip_fastfwd.c Virtualize the pfil hooks so that different jails may chose different 2009-10-11 05:59:43 +00:00
ip_fw.h + implement (two lines) the kernel side of 'lookup dscp N' to use the 2010-03-15 17:14:27 +00:00
ip_gre.c The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-01 17:05:46 +00:00
ip_gre.h The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-01 17:05:46 +00:00
ip_icmp.c Change the messages of the ICMP bad port bandwidth limiter from 2010-08-14 21:04:27 +00:00
ip_icmp.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
ip_id.c
ip_input.c Allow carp(4) to be loaded as a kernel module. Follow precedent set by 2010-08-11 00:51:50 +00:00
ip_ipsec.c The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
ip_ipsec.h Remove ifdefed out part of code, which seems to have originated a decade ago 2009-11-09 19:53:34 +00:00
ip_mroute.c Virtualize the IPv4 multicast routing code. 2010-06-02 15:44:43 +00:00
ip_mroute.h Virtualize the IPv4 multicast routing code. 2010-06-02 15:44:43 +00:00
ip_options.c This patch fixes the problem where proxy ARP entries cannot be added 2010-05-25 20:42:35 +00:00
ip_options.h
ip_output.c This patch fixes the problem where proxy ARP entries cannot be added 2010-05-25 20:42:35 +00:00
ip_var.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
ip.h use u_char instead of u_int for short bitfields. 2010-02-01 14:13:44 +00:00
pim_var.h Virtualize the IPv4 multicast routing code. 2010-06-02 15:44:43 +00:00
pim.h
raw_ip.c Enhance the historic behaviour of raw sockets and jails in a way 2010-04-27 15:07:08 +00:00
sctp_asconf.c * Fix a bug where the length of the ASCONF-ACK was calculated wrong due 2010-06-14 21:25:07 +00:00
sctp_asconf.h
sctp_auth.c Spacing issues 2010-06-05 21:33:16 +00:00
sctp_auth.h Use [] instead of [0] for flexible arrays. 2010-01-22 07:53:41 +00:00
sctp_bsd_addr.c Spacing issues 2010-06-05 21:33:16 +00:00
sctp_bsd_addr.h This adds back the Iterator to the sctp 2010-05-16 17:03:56 +00:00
sctp_cc_functions.c Bugfix: Use formula from section 7.2.3 of RFC 4960. Reported by Martin Becke. 2009-10-27 18:17:07 +00:00
sctp_cc_functions.h
sctp_constants.h 1) Optimize the cleanup and don't always depend on 2010-06-06 20:34:17 +00:00
sctp_crc32.c The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
sctp_crc32.h The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
sctp_header.h Add missing SCTP_PACKED. Spotted by Irene Ruengeler. 2010-02-13 21:38:15 +00:00
sctp_indata.c PR SCTP Bugs. Basically a full sized frame of 2010-07-29 11:37:04 +00:00
sctp_indata.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_input.c Ok, yet another bug in killing off all the hundreds 2010-06-06 19:24:32 +00:00
sctp_input.h
sctp_lock_bsd.h 1) Optimize the cleanup and don't always depend on 2010-06-06 20:34:17 +00:00
sctp_os_bsd.h Get rid of support of an old version of the SCTP-AUTH draft. 2010-01-16 20:04:17 +00:00
sctp_os.h
sctp_output.c Fix a bug where endpoints bound to wildcard addresses where 2010-08-05 16:52:13 +00:00
sctp_output.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_pcb.c Make sure that we report chunks if a socket 2010-07-26 09:22:52 +00:00
sctp_pcb.h This does two changes: 2010-06-05 21:20:28 +00:00
sctp_peeloff.c
sctp_peeloff.h
sctp_structs.h PR SCTP Bugs. Basically a full sized frame of 2010-07-29 11:37:04 +00:00
sctp_sysctl.c 1) Optimize the cleanup and don't always depend on 2010-06-06 20:34:17 +00:00
sctp_sysctl.h Fix a bug where wrong initialization value 2009-07-28 15:07:41 +00:00
sctp_timer.c PR SCTP Bugs. Basically a full sized frame of 2010-07-29 11:37:04 +00:00
sctp_timer.h
sctp_uio.h Adds the option of keeping per-cpu statistics in SCTP. This 2010-03-24 20:02:40 +00:00
sctp_usrreq.c Fix a rece condition in the shutdown handling. 2010-06-18 09:01:44 +00:00
sctp_var.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp.h Fix a rece condition in the shutdown handling. 2010-06-18 09:01:44 +00:00
sctputil.c This fixes a crash in SCTP. It was possible to have a 2010-07-03 14:03:31 +00:00
sctputil.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
siftr.c - Move common code from the hook functions that fills in a packet node struct to 2010-07-18 05:09:10 +00:00
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp_hostcache.h
tcp_input.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp_lro.c
tcp_lro.h
tcp_offload.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_offload.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_output.c Fix the interaction between 'ICMP fragmentation needed' MTU updates, 2010-08-15 13:25:18 +00:00
tcp_reass.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp_sack.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp_seq.h
tcp_subr.c Fix the interaction between 'ICMP fragmentation needed' MTU updates, 2010-08-15 13:25:18 +00:00
tcp_syncache.c Initializing the new error variable to zero in syncache_socket() 2010-08-15 13:07:08 +00:00
tcp_syncache.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_timer.c - spread tcp timer callout load evenly across cpus if net.inet.tcp.per_cpu_timers is set to 1 2010-03-20 19:47:30 +00:00
tcp_timer.h Add the ability to see TCP timers via netstat -x. This can be a useful 2009-09-16 05:33:15 +00:00
tcp_timewait.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp_usrreq.c Add a comment to tcp_usr_accept() to indicate why it is we acquire the 2010-03-06 21:38:31 +00:00
tcp_var.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
tcp.h use u_char instead of u_int for short bitfields. 2010-02-01 14:13:44 +00:00
tcpip.h
toedev.h
udp_usrreq.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
udp_var.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
udp.h