aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/route.c
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2011-10-10 21:12:02 -0400
committerDavid S. Miller <davem@davemloft.net>2011-11-08 14:40:40 -0500
commit2bc8ca40f951163b3bb75949479e2755c12c1b96 (patch)
tree1ca54c227a481d4cab0ca60a0f0533d5ae47042a /net/ipv4/route.c
parent20db93c34095553a01a9c31136658917bf1fa5d5 (diff)
ipv4: Fix inetpeer expire time information
As we update the learned pmtu informations on demand, we might report a nagative expiration time value to userspace if the pmtu informations are already expired and we have not send a packet to that inetpeer after expiration. With this patch we send a expire time of null to userspace after expiration until the next packet is send to that inetpeer. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/route.c')
-rw-r--r--net/ipv4/route.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 155138d8ec8b..511f4a75149c 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2845,7 +2845,7 @@ static int rt_fill_info(struct net *net,
2845 struct rtable *rt = skb_rtable(skb); 2845 struct rtable *rt = skb_rtable(skb);
2846 struct rtmsg *r; 2846 struct rtmsg *r;
2847 struct nlmsghdr *nlh; 2847 struct nlmsghdr *nlh;
2848 long expires = 0; 2848 unsigned long expires = 0;
2849 const struct inet_peer *peer = rt->peer; 2849 const struct inet_peer *peer = rt->peer;
2850 u32 id = 0, ts = 0, tsage = 0, error; 2850 u32 id = 0, ts = 0, tsage = 0, error;
2851 2851
@@ -2902,8 +2902,12 @@ static int rt_fill_info(struct net *net,
2902 tsage = get_seconds() - peer->tcp_ts_stamp; 2902 tsage = get_seconds() - peer->tcp_ts_stamp;
2903 } 2903 }
2904 expires = ACCESS_ONCE(peer->pmtu_expires); 2904 expires = ACCESS_ONCE(peer->pmtu_expires);
2905 if (expires) 2905 if (expires) {
2906 expires -= jiffies; 2906 if (time_before(jiffies, expires))
2907 expires -= jiffies;
2908 else
2909 expires = 0;
2910 }
2907 } 2911 }
2908 2912
2909 if (rt_is_input_route(rt)) { 2913 if (rt_is_input_route(rt)) {