Fix the issue where interface is set to the configured state even if
configuration has been failed. Add error check to state setting logic.

Signed-off-by: Lauri Hintsala <[email protected]>
---
Tested with following command line sequence.

Wihtout patch:
$ ifup eth0
udhcpc (v1.18.5) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
$ ifup eth0
ifup: interface eth0 already configured

With patch:
$ ifup eth0
udhcpc (v1.18.5) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
$ ifup eth0
udhcpc (v1.18.5) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
$ ifup eth0
udhcpc (v1.18.5) started
Sending discover...
Sending select for 10.0.0.2...
Lease of 10.0.0.2 obtained, lease time 3600
adding dns 10.0.0.1
$ ifup eth0
ifup: interface eth0 already configured
$ ifdown eth0
$ ifup eth0
udhcpc (v1.18.5) started
Sending discover...
Sending discover...
Sending select for 10.0.0.2...
Lease of 10.0.0.2 obtained, lease time 3600
adding dns 10.0.0.1
---
 networking/ifupdown.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 5946323..9c2cad2 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -1311,7 +1311,7 @@ int ifupdown_main(int argc UNUSED_PARAM, char **argv)
                        llist_t *state_list = read_iface_state();
                        llist_t *iface_state = find_iface_state(state_list, 
iface);
 
-                       if (cmds == iface_up) {
+                       if (cmds == iface_up && !any_failures) {
                                char * const newiface = xasprintf("%s=%s", 
iface, liface);
                                if (iface_state == NULL) {
                                        llist_add_to_end(&state_list, newiface);
-- 
1.7.4.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to