tcp: set and get per-socket timestamp
[linux-2.6-block.git] / net / ipv4 / tcp.c
index 8a90bda960381ee0f577062e55560470fcc27684..801b07b796f01a78b8bc0beeaae71eb1bca0d26c 100644 (file)
@@ -2714,6 +2714,12 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
                else
                        err = -EINVAL;
                break;
+       case TCP_TIMESTAMP:
+               if (!tp->repair)
+                       err = -EPERM;
+               else
+                       tp->tsoffset = val - tcp_time_stamp;
+               break;
        default:
                err = -ENOPROTOOPT;
                break;
@@ -2962,6 +2968,9 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
        case TCP_USER_TIMEOUT:
                val = jiffies_to_msecs(icsk->icsk_user_timeout);
                break;
+       case TCP_TIMESTAMP:
+               val = tcp_time_stamp + tp->tsoffset;
+               break;
        default:
                return -ENOPROTOOPT;
        }