diff options
-rw-r--r-- | networking/libiproute/iproute.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c index bb0bfaed1..a19586c91 100644 --- a/networking/libiproute/iproute.c +++ b/networking/libiproute/iproute.c | |||
@@ -434,6 +434,18 @@ static int iproute_modify(int cmd, unsigned flags, int argc, char **argv) | |||
434 | } | 434 | } |
435 | addattr_l(&req.n, sizeof(req), RTA_METRICS, RTA_DATA(mxrta), RTA_PAYLOAD(mxrta)); | 435 | addattr_l(&req.n, sizeof(req), RTA_METRICS, RTA_DATA(mxrta), RTA_PAYLOAD(mxrta)); |
436 | } | 436 | } |
437 | if (req.r.rtm_type == RTN_LOCAL || req.r.rtm_type == RTN_NAT) | ||
438 | req.r.rtm_scope = RT_SCOPE_HOST; | ||
439 | else if (req.r.rtm_type == RTN_BROADCAST || | ||
440 | req.r.rtm_type == RTN_MULTICAST || | ||
441 | req.r.rtm_type == RTN_ANYCAST) | ||
442 | req.r.rtm_scope = RT_SCOPE_LINK; | ||
443 | else if (req.r.rtm_type == RTN_UNICAST || req.r.rtm_type == RTN_UNSPEC) { | ||
444 | if (cmd == RTM_DELROUTE) | ||
445 | req.r.rtm_scope = RT_SCOPE_NOWHERE; | ||
446 | else if (!gw_ok) | ||
447 | req.r.rtm_scope = RT_SCOPE_LINK; | ||
448 | } | ||
437 | 449 | ||
438 | if (req.r.rtm_family == AF_UNSPEC) { | 450 | if (req.r.rtm_family == AF_UNSPEC) { |
439 | req.r.rtm_family = AF_INET; | 451 | req.r.rtm_family = AF_INET; |