Skip to content

Commit 93be6ce

Browse files
avagindavem330
authored andcommitted
tcp: set and get per-socket timestamp
A timestamp can be set, only if a socket is in the repair mode. This patch adds a new socket option TCP_TIMESTAMP, which allows to get and set current tcp times stamp. 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>
1 parent ceaa1fe commit 93be6ce

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

include/uapi/linux/tcp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ enum {
111111
#define TCP_QUEUE_SEQ 21
112112
#define TCP_REPAIR_OPTIONS 22
113113
#define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */
114+
#define TCP_TIMESTAMP 24
114115

115116
struct tcp_repair_opt {
116117
__u32 opt_code;

net/ipv4/tcp.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2714,6 +2714,12 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
27142714
else
27152715
err = -EINVAL;
27162716
break;
2717+
case TCP_TIMESTAMP:
2718+
if (!tp->repair)
2719+
err = -EPERM;
2720+
else
2721+
tp->tsoffset = val - tcp_time_stamp;
2722+
break;
27172723
default:
27182724
err = -ENOPROTOOPT;
27192725
break;
@@ -2962,6 +2968,9 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
29622968
case TCP_USER_TIMEOUT:
29632969
val = jiffies_to_msecs(icsk->icsk_user_timeout);
29642970
break;
2971+
case TCP_TIMESTAMP:
2972+
val = tcp_time_stamp + tp->tsoffset;
2973+
break;
29652974
default:
29662975
return -ENOPROTOOPT;
29672976
}

0 commit comments

Comments
 (0)