Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cda42ebd authored by Gilad Ben-Yossef's avatar Gilad Ben-Yossef Committed by David S. Miller
Browse files

Allow disabling TCP timestamp options per route



Implement querying and acting upon the no timestamp bit in the feature
field.

Signed-off-by: default avatarGilad Ben-Yossef <gilad@codefidence.com>
Sigend-off-by: default avatarOri Finkelman <ori@comsleep.com>
Sigend-off-by: default avatarYony Amit <yony@comsleep.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1aba721e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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);
+6 −2
Original line number Diff line number Diff line
@@ -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)