[IPV4]: Fix nexthop realm dumping for multipath routes
Routing realms exist per nexthop, but are only returned to userspace for the first nexthop. This is due to the fact that iproute2 only allows to set the realm for the first nexthop and the kernel refuses multipath routes where only a single realm is present. Dump all realms for multipath routes to enable iproute to correctly display them. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9ed36279f6
commit
8265abc082
|
@ -961,10 +961,6 @@ fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
|
|||
rtm->rtm_protocol = fi->fib_protocol;
|
||||
if (fi->fib_priority)
|
||||
RTA_PUT(skb, RTA_PRIORITY, 4, &fi->fib_priority);
|
||||
#ifdef CONFIG_NET_CLS_ROUTE
|
||||
if (fi->fib_nh[0].nh_tclassid)
|
||||
RTA_PUT(skb, RTA_FLOW, 4, &fi->fib_nh[0].nh_tclassid);
|
||||
#endif
|
||||
if (rtnetlink_put_metrics(skb, fi->fib_metrics) < 0)
|
||||
goto rtattr_failure;
|
||||
if (fi->fib_prefsrc)
|
||||
|
@ -974,6 +970,10 @@ fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
|
|||
RTA_PUT(skb, RTA_GATEWAY, 4, &fi->fib_nh->nh_gw);
|
||||
if (fi->fib_nh->nh_oif)
|
||||
RTA_PUT(skb, RTA_OIF, sizeof(int), &fi->fib_nh->nh_oif);
|
||||
#ifdef CONFIG_NET_CLS_ROUTE
|
||||
if (fi->fib_nh[0].nh_tclassid)
|
||||
RTA_PUT(skb, RTA_FLOW, 4, &fi->fib_nh[0].nh_tclassid);
|
||||
#endif
|
||||
}
|
||||
#ifdef CONFIG_IP_ROUTE_MULTIPATH
|
||||
if (fi->fib_nhs > 1) {
|
||||
|
@ -992,6 +992,10 @@ fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
|
|||
nhp->rtnh_ifindex = nh->nh_oif;
|
||||
if (nh->nh_gw)
|
||||
RTA_PUT(skb, RTA_GATEWAY, 4, &nh->nh_gw);
|
||||
#ifdef CONFIG_NET_CLS_ROUTE
|
||||
if (nh->nh_tclassid)
|
||||
RTA_PUT(skb, RTA_FLOW, 4, &nh->nh_tclassid);
|
||||
#endif
|
||||
nhp->rtnh_len = skb->tail - (unsigned char*)nhp;
|
||||
} endfor_nexthops(fi);
|
||||
mp_head->rta_type = RTA_MULTIPATH;
|
||||
|
|
Loading…
Reference in New Issue
Block a user