mirror of https://gitee.com/openkylin/linux.git
Allow disabling TCP timestamp options per route
Implement querying and acting upon the no timestamp bit in the feature field. Signed-off-by: Gilad Ben-Yossef <gilad@codefidence.com> Sigend-off-by: Ori Finkelman <ori@comsleep.com> Sigend-off-by: Yony Amit <yony@comsleep.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1aba721eba
commit
cda42ebd67
|
@ -378,7 +378,7 @@ enum
|
|||
|
||||
#define RTAX_FEATURE_ECN 0x00000001
|
||||
#define RTAX_FEATURE_NO_SACK 0x00000002
|
||||
#define RTAX_FEATURE_TIMESTAMP 0x00000004
|
||||
#define RTAX_FEATURE_NO_TSTAMP 0x00000004
|
||||
#define RTAX_FEATURE_ALLFRAG 0x00000008
|
||||
|
||||
struct rta_session
|
||||
|
|
|
@ -3755,7 +3755,8 @@ void tcp_parse_options(struct sk_buff *skb, struct tcp_options_received *opt_rx,
|
|||
case TCPOPT_TIMESTAMP:
|
||||
if ((opsize == TCPOLEN_TIMESTAMP) &&
|
||||
((estab && opt_rx->tstamp_ok) ||
|
||||
(!estab && sysctl_tcp_timestamps))) {
|
||||
(!estab && sysctl_tcp_timestamps &&
|
||||
!dst_feature(dst, RTAX_FEATURE_NO_TSTAMP)))) {
|
||||
opt_rx->saw_tstamp = 1;
|
||||
opt_rx->rcv_tsval = get_unaligned_be32(ptr);
|
||||
opt_rx->rcv_tsecr = get_unaligned_be32(ptr + 4);
|
||||
|
|
|
@ -488,7 +488,9 @@ static unsigned tcp_syn_options(struct sock *sk, struct sk_buff *skb,
|
|||
opts->mss = tcp_advertise_mss(sk);
|
||||
size += TCPOLEN_MSS_ALIGNED;
|
||||
|
||||
if (likely(sysctl_tcp_timestamps && *md5 == NULL)) {
|
||||
if (likely(sysctl_tcp_timestamps &&
|
||||
!dst_feature(dst, RTAX_FEATURE_NO_TSTAMP) &&
|
||||
*md5 == NULL)) {
|
||||
opts->options |= OPTION_TS;
|
||||
opts->tsval = TCP_SKB_CB(skb)->when;
|
||||
opts->tsecr = tp->rx_opt.ts_recent;
|
||||
|
@ -2317,7 +2319,9 @@ static void tcp_connect_init(struct sock *sk)
|
|||
* See tcp_input.c:tcp_rcv_state_process case TCP_SYN_SENT.
|
||||
*/
|
||||
tp->tcp_header_len = sizeof(struct tcphdr) +
|
||||
(sysctl_tcp_timestamps ? TCPOLEN_TSTAMP_ALIGNED : 0);
|
||||
(sysctl_tcp_timestamps &&
|
||||
(!dst_feature(dst, RTAX_FEATURE_NO_TSTAMP) ?
|
||||
TCPOLEN_TSTAMP_ALIGNED : 0));
|
||||
|
||||
#ifdef CONFIG_TCP_MD5SIG
|
||||
if (tp->af_specific->md5_lookup(sk, sk) != NULL)
|
||||
|
|
Loading…
Reference in New Issue