tcp: send packets with a socket timestamp
A socket timestamp is a sum of the global tcp_time_stamp and a per-socket offset. A socket offset is added in places where externally visible tcp timestamp option is parsed/initialized. Connections in the SYN_RECV state are not supported, global tcp_time_stamp is used for them, because repair mode doesn't support this state. In a future it can be implemented by the similar way as for TIME_WAIT sockets. Cc: "David S. Miller" <davem@davemloft.net> Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> Cc: James Morris <jmorris@namei.org> Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> Cc: Patrick McHardy <kaber@trash.net> Cc: Eric Dumazet <edumazet@google.com> Cc: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
93be6ce0e9
commit
ee684b6f28
5 changed files with 30 additions and 17 deletions
|
@ -622,7 +622,7 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb,
|
|||
|
||||
if (likely(sysctl_tcp_timestamps && *md5 == NULL)) {
|
||||
opts->options |= OPTION_TS;
|
||||
opts->tsval = TCP_SKB_CB(skb)->when;
|
||||
opts->tsval = TCP_SKB_CB(skb)->when + tp->tsoffset;
|
||||
opts->tsecr = tp->rx_opt.ts_recent;
|
||||
remaining -= TCPOLEN_TSTAMP_ALIGNED;
|
||||
}
|
||||
|
@ -806,7 +806,7 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb
|
|||
|
||||
if (likely(tp->rx_opt.tstamp_ok)) {
|
||||
opts->options |= OPTION_TS;
|
||||
opts->tsval = tcb ? tcb->when : 0;
|
||||
opts->tsval = tcb ? tcb->when + tp->tsoffset : 0;
|
||||
opts->tsecr = tp->rx_opt.ts_recent;
|
||||
size += TCPOLEN_TSTAMP_ALIGNED;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue