aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-09-20 17:31:11 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-09-20 17:31:11 +0200
commit92d98f0612c147171a0e9e03dd7fdfde890ee9e5 (patch)
tree5485641aa624940230130f62cc657b9fe67b9809
parent244fdd45c798477d6ee2e221a8c2473647b402d6 (diff)
downloadbusybox-w32-92d98f0612c147171a0e9e03dd7fdfde890ee9e5.tar.gz
busybox-w32-92d98f0612c147171a0e9e03dd7fdfde890ee9e5.tar.bz2
busybox-w32-92d98f0612c147171a0e9e03dd7fdfde890ee9e5.zip
ifupdown: when flushing addresses with "ip", add label %label%
User report: or our board we setup eth0:0 on a 10.10.10.x/29 netwrok. The problem is ip addr flush dev eth0:0 removes all ip addresses from eth0. You can see this if you run ip -stat -stat addr flush dev eth0:0 2: eth0 inet 172.27.105.10/22 brd 172.27.107.255 scope global eth0 valid_lft forever preferred_lft forever 2: eth0 inet 10.10.10.9/29 scope global eth0:0 valid_lft forever preferred_lft forever 2: eth0 inet6 fe80::a2f6:fdff:fe18:2b13/64 scope link valid_lft forever preferred_lft forever *** Round 1, deleting 3 addresses *** *** Flush is complete after 1 round *** Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ifupdown.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 25b04c9d7..5c24451ba 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -492,7 +492,7 @@ static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
492 result = execute("ifconfig %iface%[[ hw %hwaddress%]][[ media %media%]][[ mtu %mtu%]] up", 492 result = execute("ifconfig %iface%[[ hw %hwaddress%]][[ media %media%]][[ mtu %mtu%]] up",
493 ifd, exec); 493 ifd, exec);
494 result += execute("ifconfig %iface% %address% netmask %netmask%" 494 result += execute("ifconfig %iface% %address% netmask %netmask%"
495 "[[ broadcast %broadcast%]][[ pointopoint %pointopoint%]] ", 495 "[[ broadcast %broadcast%]][[ pointopoint %pointopoint%]]",
496 ifd, exec); 496 ifd, exec);
497 result += execute("[[route add default gw %gateway%[[ metric %metric%]] %iface%]]", ifd, exec); 497 result += execute("[[route add default gw %gateway%[[ metric %metric%]] %iface%]]", ifd, exec);
498 return ((result == 3) ? 3 : 0); 498 return ((result == 3) ? 3 : 0);
@@ -503,7 +503,10 @@ static int FAST_FUNC static_down(struct interface_defn_t *ifd, execfn *exec)
503{ 503{
504 int result; 504 int result;
505# if ENABLE_FEATURE_IFUPDOWN_IP 505# if ENABLE_FEATURE_IFUPDOWN_IP
506 result = execute("ip addr flush dev %iface%", ifd, exec); 506 /* Optional "label LBL" is necessary if interface is an alias (eth0:0),
507 * otherwise "ip addr flush dev eth0:0" flushes all addresses on eth0.
508 */
509 result = execute("ip addr flush dev %iface%[[ label %label%]]", ifd, exec);
507 result += execute("ip link set %iface% down", ifd, exec); 510 result += execute("ip link set %iface% down", ifd, exec);
508# else 511# else
509 /* result = execute("[[route del default gw %gateway% %iface%]]", ifd, exec); */ 512 /* result = execute("[[route del default gw %gateway% %iface%]]", ifd, exec); */