net/ipv6: Do not allow route add with a device that is down
Subsystems (3)
PATCH v3 1/1 net/ipv6: Do not allow route add with a device that is down
IPv6 allows routes to be installed when the device is not up (admin up). Worse, it does not mark it as LINKDOWN. IPv4 does not allow it and really there is no reason for IPv6 to allow it, so check the flags and deny if device is admin down.
---
v3
- moved err=-ENETDOWN under the if check per Eric's request
- left the up check using dev->flags for consistency with IPv4 and that it is used more often in ipv4 and ivp6 code than netif_running
v2
- missed setting err to -ENETDOWN (thanks for catching that Roopa)
net/ipv6/route.c | 6 ++++++ 1 file changed, 6 insertions(+)
net/ipv6/route.c +6 -0
@@ -2734,6 +2734,12 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg,if (!dev) goto out; +if (!(dev->flags &IFF_UP )) { +NL_SET_ERR_MSG (extack,"Nexthop device is not up" ); + err = -ENETDOWN ; + goto out; + } +if (!ipv6_addr_any (&cfg->fc_prefsrc)) {if (!ipv6_chk_addr (net, &cfg->fc_prefsrc, dev,0 )) {NL_SET_ERR_MSG (extack,"Invalid source address" );
Signature · 1 line
2.11.0
Quoted 6 lines · David Ahern
IPv6 allows routes to be installed when the device is not up (admin up). Worse, it does not mark it as LINKDOWN. IPv4 does not allow it and really there is no reason for IPv6 to allow it, so check the flags and deny if device is admin down.
Signed-off-by David Ahern <[email protected]>
Thanks!
Quoted 6 lines · David Ahern
IPv6 allows routes to be installed when the device is not up (admin up). Worse, it does not mark it as LINKDOWN. IPv4 does not allow it and really there is no reason for IPv6 to allow it, so check the flags and deny if device is admin down.
Signed-off-by David Ahern <[email protected]>
Quoted 33 lines
---
v3
- moved err=-ENETDOWN under the if check per Eric's request
- left the up check usingdev->flagsfor consistency with IPv4 and that it is used more often in ipv4 and ivp6 code thannetif_runningv2
- missed setting err to-ENETDOWN(thanks for catching that Roopa)net/ipv6/route.c | 6 ++++++ 1 file changed, 6 insertions(+)net/ipv6/route.c +6
-1@@ -2734,6 +2734,12 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg,if (!dev) goto out; +if (!(dev->flags &IFF_UP )) { +NL_SET_ERR_MSG (extack,"Nexthop device is not up" ); + err = -ENETDOWN ; + goto out; + } +if (!ipv6_addr_any (&cfg->fc_prefsrc)) {if (!ipv6_chk_addr (net, &cfg->fc_prefsrc, dev,0 )) {NL_SET_ERR_MSG (extack,"Invalid source address" ); --2.11.0
From: David Ahern <[email protected]>
Date: Wed, 24 Jan 2018 19:45:29 -0800
Quoted 13 lines
IPv6 allows routes to be installed when the device is not up (admin up). Worse, it does not mark it as LINKDOWN. IPv4 does not allow it and really there is no reason for IPv6 to allow it, so check the flags and deny if device is admin down.
Signed-off-by David Ahern <[email protected]>---
v3
- moved err=-ENETDOWN under the if check per Eric's request
- left the up check usingdev->flagsfor consistency with IPv4 and that it is used more often in ipv4 and ivp6 code thannetif_running
Quoted 2 lines
v2
- missed setting err to-ENETDOWN(thanks for catching that Roopa)
Applied, thanks David.