net: mpls: Don't show nexthop if device has been deleted
If the device for a nexthop in a multipath route is deleted, the nexthop is effectively removed from the route. Currently, a route dump still returns the nexhop though without the device set: $ ip -f mpls ro ls 100 nexthopvia inet 10.11.1.2 dev br0 nexthopvia inet 10.100.3.1 dev eth3 $ ip li del br0 $ ip -f mpls ro ls 100 nexthopvia inet 10.11.1.2 dev * dead linkdown nexthopvia inet 10.100.3.1 dev eth3 Since the nexthop is effectively deleted, drop the hop from the route dump. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
88275ed0cb
commit
c00e51ddbf
@ -1769,13 +1769,15 @@ static int mpls_dump_route(struct sk_buff *skb, u32 portid, u32 seq, int event,
|
||||
goto nla_put_failure;
|
||||
|
||||
for_nexthops(rt) {
|
||||
dev = rtnl_dereference(nh->nh_dev);
|
||||
if (!dev)
|
||||
continue;
|
||||
|
||||
rtnh = nla_reserve_nohdr(skb, sizeof(*rtnh));
|
||||
if (!rtnh)
|
||||
goto nla_put_failure;
|
||||
|
||||
dev = rtnl_dereference(nh->nh_dev);
|
||||
if (dev)
|
||||
rtnh->rtnh_ifindex = dev->ifindex;
|
||||
rtnh->rtnh_ifindex = dev->ifindex;
|
||||
if (nh->nh_flags & RTNH_F_LINKDOWN) {
|
||||
rtnh->rtnh_flags |= RTNH_F_LINKDOWN;
|
||||
linkdown++;
|
||||
|
Loading…
Reference in New Issue
Block a user