| From 8a430ed50bb1b19ca14a46661f3b1b35f2fb5c39 Mon Sep 17 00:00:00 2001 |
| From: David Ahern <dsa@cumulusnetworks.com> |
| Date: Wed, 11 Jan 2017 15:42:17 -0800 |
| Subject: [PATCH] net: ipv4: fix table id in getroute response |
| |
| commit 8a430ed50bb1b19ca14a46661f3b1b35f2fb5c39 upstream. |
| |
| 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> |
| |
| diff --git a/net/ipv4/route.c b/net/ipv4/route.c |
| index 0fcac8e7a2b2..709ffe67d1de 100644 |
| --- a/net/ipv4/route.c |
| +++ b/net/ipv4/route.c |
| @@ -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; |
| -- |
| 2.12.0 |
| |