ipv6: Report TCP timetstamp info in cacheinfo just like ipv4 does.
authorDavid S. Miller <davem@davemloft.net>
Thu, 29 Dec 2011 20:22:33 +0000 (15:22 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 29 Dec 2011 20:22:33 +0000 (15:22 -0500)
I missed this while adding ipv6 support to inet_peer.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index 0940729d2f9180a14293856d7d8afab9b8c9b954..30de9e74a8134cb500ef00c524152bf39bb28fbc 100644 (file)
@@ -2360,11 +2360,13 @@ static int rt6_fill_node(struct net *net,
                         int iif, int type, u32 pid, u32 seq,
                         int prefix, int nowait, unsigned int flags)
 {
+       const struct inet_peer *peer;
        struct rtmsg *rtm;
        struct nlmsghdr *nlh;
        long expires;
        u32 table;
        struct neighbour *n;
+       u32 ts, tsage;
 
        if (prefix) {   /* user wants prefix routes only */
                if (!(rt->rt6i_flags & RTF_PREFIX_RT)) {
@@ -2471,7 +2473,14 @@ static int rt6_fill_node(struct net *net,
        else
                expires = INT_MAX;
 
-       if (rtnl_put_cacheinfo(skb, &rt->dst, 0, 0, 0,
+       peer = rt->rt6i_peer;
+       ts = tsage = 0;
+       if (peer && peer->tcp_ts_stamp) {
+               ts = peer->tcp_ts;
+               tsage = get_seconds() - peer->tcp_ts_stamp;
+       }
+
+       if (rtnl_put_cacheinfo(skb, &rt->dst, 0, ts, tsage,
                               expires, rt->dst.error) < 0)
                goto nla_put_failure;