Eric Dumazet
675ee231d9
tcp: add proper TS val into RST packets
...
RST packets sent on behalf of TCP connections with TS option (RFC 7323
TCP timestamps) have incorrect TS val (set to 0), but correct TS ecr.
A > B: Flags [S], seq 0, win 65535, options [mss 1000,nop,nop,TS val 100
ecr 0], length 0
B > A: Flags [S.], seq 2444755794, ack 1, win 28960, options [mss
1460,nop,nop,TS val 7264344 ecr 100], length 0
A > B: Flags [.], ack 1, win 65535, options [nop,nop,TS val 110 ecr
7264344], length 0
B > A: Flags [R.], seq 1, ack 1, win 28960, options [nop,nop,TS val 0
ecr 110], length 0
We need to call skb_mstamp_get() to get proper TS val,
derived from skb->skb_mstamp
Note that RFC 1323 was advocating to not send TS option in RST segment,
but RFC 7323 recommends the opposite :
Once TSopt has been successfully negotiated, that is both <SYN> and
<SYN,ACK> contain TSopt, the TSopt MUST be sent in every non-<RST>
segment for the duration of the connection, and SHOULD be sent in an
<RST> segment (see Section 5.2 for details)
Note this RFC recommends to send TS val = 0, but we believe it is
premature : We do not know if all TCP stacks are properly
handling the receive side :
When an <RST> segment is
received, it MUST NOT be subjected to the PAWS check by verifying an
acceptable value in SEG.TSval, and information from the Timestamps
option MUST NOT be used to update connection state information.
SEG.TSecr MAY be used to provide stricter <RST> acceptance checks.
In 5 years, if/when all TCP stack are RFC 7323 ready, we might consider
to decide to send TS val = 0, if it buys something.
Fixes: 7faee5c0d5 ("tcp: remove TCP_SKB_CB(skb)->when")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-09-23 14:24:07 -07:00
..
netfilter
netfilter: nf_dup{4, 6}: fix build error when nf_conntrack disabled
2015-09-02 16:28:06 -07:00
af_inet.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
ah4.c
ah4: Fix error return in ah_input().
2015-08-25 13:38:50 -07:00
arp.c
net: Fix up inet_addr_type checks
2015-08-13 22:43:21 -07:00
cipso_ipv4.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
datagram.c
net: Set sk_txhash from a random number
2015-07-29 22:44:04 -07:00
devinet.c
net/ipv4: suppress NETDEV_UP notification on address lifetime update
2015-07-28 23:38:13 -07:00
esp4.c
esp4: Switch to new AEAD interface
2015-05-28 11:23:20 +08:00
fib_frontend.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
fib_lookup.h
ipv4: consider TOS in fib_select_default
2015-07-24 22:46:11 -07:00
fib_rules.c
net: ipv6: use common fib_default_rule_pref
2015-09-09 14:19:50 -07:00
fib_semantics.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
fib_trie.c
net: Fix vti use case with oif in dst lookups
2015-09-17 16:36:34 -07:00
fou.c
fou: reject IPv6 config
2015-08-29 13:07:54 -07:00
gre_demux.c
gre: Remove support for sharing GRE protocol hook.
2015-08-10 14:03:54 -07:00
gre_offload.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
icmp.c
net: Add support for VRFs to inetpeer cache
2015-08-28 13:32:36 -07:00
igmp.c
IGMP: Inhibit reports for local multicast groups
2015-08-28 13:28:47 -07:00
inet_connection_sock.c
inet: fix races in reqsk_queue_hash_req()
2015-09-21 16:32:29 -07:00
inet_diag.c
net: inet_diag: always export IPV6_V6ONLY sockopt for listening sockets
2015-07-10 23:25:24 -07:00
inet_fragment.c
inet: frags: remove INET_FRAG_EVICTED and use list_evictor for the test
2015-07-26 21:00:15 -07:00
inet_hashtables.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-07-23 00:41:16 -07:00
inet_lro.c
inet_timewait_sock.c
tcp/dccp: fix timewait races in timer handling
2015-09-21 16:32:29 -07:00
inetpeer.c
net: Add helper function to compare inetpeer addresses
2015-08-28 13:32:36 -07:00
ip_forward.c
ip: reject too-big defragmented DF-skb when forwarding
2015-05-25 00:08:48 -04:00
ip_fragment.c
net: Add support for VRFs to inetpeer cache
2015-08-28 13:32:36 -07:00
ip_gre.c
ip_tunnels: record IP version in tunnel info
2015-08-29 13:07:54 -07:00
ip_input.c
dst: Metadata destinations
2015-07-21 10:39:05 -07:00
ip_options.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
ip_output.c
net: Use VRF index for oif in ip_send_unicast_reply
2015-08-13 22:43:21 -07:00
ip_sockglue.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-06-24 02:58:51 -07:00
ip_tunnel.c
ip_gre: Add support to collect tunnel metadata.
2015-08-10 14:03:54 -07:00
ip_tunnel_core.c
iptunnel: make rx/tx bytes counters consistent
2015-09-20 22:36:22 -07:00
ip_vti.c
ip_vti/ip6_vti: Preserve skb->mark after rcv_cb call
2015-05-28 06:23:32 +02:00
ipcomp.c
ipv4: coding style: comparison for equality with NULL
2015-04-03 12:11:15 -04:00
ipconfig.c
net: ipv4: increase dhcp inter device timeout
2015-08-12 16:40:22 -07:00
ipip.c
ip_gre: Add support to collect tunnel metadata.
2015-08-10 14:03:54 -07:00
ipmr.c
net: ipv6: use common fib_default_rule_pref
2015-09-09 14:19:50 -07:00
Kconfig
geneve: Consolidate Geneve functionality in single module.
2015-08-27 15:42:48 -07:00
Makefile
geneve: Consolidate Geneve functionality in single module.
2015-08-27 15:42:48 -07:00
netfilter.c
netfilter: don't use module_init/exit in core IPV4 code
2015-06-16 14:12:34 -04:00
ping.c
ipv6: Nonlocal bind
2015-07-09 21:09:10 -07:00
proc.c
net: track success and failure of TCP PMTU probing
2015-07-21 22:36:33 -07:00
protocol.c
raw.c
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-13 18:18:05 -04:00
route.c
net: Fix behaviour of unreachable, blackhole and prohibit routes
2015-09-20 21:45:08 -07:00
syncookies.c
tcp: get_cookie_sock() consolidation
2015-06-07 15:19:52 -07:00
sysctl_net_ipv4.c
IGMP: Inhibit reports for local multicast groups
2015-08-28 13:28:47 -07:00
tcp.c
tcp: fix slow start after idle vs TSO/GSO
2015-08-25 11:22:50 -07:00
tcp_bic.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_cdg.c
tcp: do not slow start when cwnd equals ssthresh
2015-07-09 14:22:52 -07:00
tcp_cong.c
tcp: use dctcp if enabled on the route to the initiator
2015-08-31 12:34:00 -07:00
tcp_cubic.c
tcp_cubic: do not set epoch_start in the future
2015-09-17 22:35:07 -07:00
tcp_dctcp.c
net: tcp: dctcp_update_alpha() fixes.
2015-06-10 23:28:33 -07:00
tcp_diag.c
sock_diag: implement a get_info handler for inet
2015-06-15 19:49:22 -07:00
tcp_fastopen.c
tcp: Do not call tcp_fastopen_reset_cipher from interrupt context
2015-06-23 02:38:10 -07:00
tcp_highspeed.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_htcp.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_hybla.c
tcp: do not slow start when cwnd equals ssthresh
2015-07-09 14:22:52 -07:00
tcp_illinois.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_input.c
tcp: use dctcp if enabled on the route to the initiator
2015-08-31 12:34:00 -07:00
tcp_ipv4.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-08-13 16:23:11 -07:00
tcp_lp.c
tcp_memcontrol.c
tcp_metrics.c
net: Add helper function to compare inetpeer addresses
2015-08-28 13:32:36 -07:00
tcp_minisocks.c
tcp/dccp: fix timewait races in timer handling
2015-09-21 16:32:29 -07:00
tcp_offload.c
tcp: reserve tcp_skb_mss() to tcp stack
2015-06-11 16:33:10 -07:00
tcp_output.c
tcp: add proper TS val into RST packets
2015-09-23 14:24:07 -07:00
tcp_probe.c
tcp_scalable.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_timer.c
tcp: do not export tcp_init_xmit_timers()
2015-07-09 21:44:38 -07:00
tcp_vegas.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_vegas.h
tcp: prepare CC get_info() access from getsockopt()
2015-04-29 17:10:38 -04:00
tcp_veno.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_westwood.c
tcp_westwood: fix tcp_westwood_info()
2015-05-05 19:50:09 -04:00
tcp_yeah.c
tunnel4.c
udp.c
net: Fix vti use case with oif in dst lookups
2015-09-17 16:36:34 -07:00
udp_diag.c
sock_diag: specify info_size per inet protocol
2015-06-15 19:49:22 -07:00
udp_impl.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
udp_offload.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
udp_tunnel.c
tunnel: introduce udp_tun_rx_dst()
2015-08-27 15:42:47 -07:00
udplite.c
xfrm4_input.c
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
ipv4: hash net ptr into fragmentation bucket selection
2015-03-25 14:07:04 -04:00
xfrm4_output.c
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
xfrm4_policy.c
net: Fix vti use case with oif in dst lookups
2015-09-17 16:36:34 -07:00
xfrm4_protocol.c
xfrm4_state.c
xfrm4_tunnel.c