net: ipv4: fix table id in getroute response
authorDavid Ahern <dsa@cumulusnetworks.com>
Wed, 11 Jan 2017 23:42:17 +0000 (15:42 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Jan 2017 20:18:20 +0000 (15:18 -0500)
rtm_table is an 8-bit field while table ids are allowed up to u32. Commit
709772e6e065 ("net: Fix routing tables with id > 255 for legacy software")
added the preference to set rtm_table in dumps to RT_TABLE_COMPAT if the
table id is > 255. The table id returned on get route requests should do
the same.

Fixes: c36ba6603a11 ("net: Allow user to get table id from route lookup")
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 0fcac8e7a2b2fb9fdb9f74bdcadf32bd177ceb39..709ffe67d1de1609be7d3e4a98d9314b01e5f265 100644 (file)
@@ -2472,7 +2472,7 @@ static int rt_fill_info(struct net *net,  __be32 dst, __be32 src, u32 table_id,
        r->rtm_dst_len  = 32;
        r->rtm_src_len  = 0;
        r->rtm_tos      = fl4->flowi4_tos;
-       r->rtm_table    = table_id;
+       r->rtm_table    = table_id < 256 ? table_id : RT_TABLE_COMPAT;
        if (nla_put_u32(skb, RTA_TABLE, table_id))
                goto nla_put_failure;
        r->rtm_type     = rt->rt_type;