ipv4: show pmtu in route list
authorJulian Anastasov <ja@ssi.bg>
Fri, 20 Jul 2012 09:02:08 +0000 (12:02 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 18:16:49 +0000 (11:16 -0700)
Override the metrics with rt_pmtu

Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 9f7ffbe201c93fbd63c73a3b85cd8a80306d3ea5..d547f6fae20d1db5b421e0442466be240307f5ee 100644 (file)
@@ -2909,6 +2909,7 @@ static int rt_fill_info(struct net *net,
        struct nlmsghdr *nlh;
        unsigned long expires = 0;
        u32 error;
+       u32 metrics[RTAX_MAX];
 
        nlh = nlmsg_put(skb, pid, seq, event, sizeof(*r), flags);
        if (nlh == NULL)
@@ -2953,7 +2954,10 @@ static int rt_fill_info(struct net *net,
            nla_put_be32(skb, RTA_GATEWAY, rt->rt_gateway))
                goto nla_put_failure;
 
-       if (rtnetlink_put_metrics(skb, dst_metrics_ptr(&rt->dst)) < 0)
+       memcpy(metrics, dst_metrics_ptr(&rt->dst), sizeof(metrics));
+       if (rt->rt_pmtu)
+               metrics[RTAX_MTU - 1] = rt->rt_pmtu;
+       if (rtnetlink_put_metrics(skb, metrics) < 0)
                goto nla_put_failure;
 
        if (rt->rt_mark &&