/* vi: set sw=4 ts=4: */
/*
* ifupdown for busybox
- * Copyright (c) 2002 Glenn McGrath <bug1@optushome.com.au>
- * Copyright (c) 2003 Erik Andersen <andersen@codepoet.org>
+ * Copyright (c) 2002 Glenn McGrath <bug1@iinet.net.au>
+ * Copyright (c) 2003-2004 Erik Andersen <andersen@codepoet.org>
*
* Based on ifupdown v 0.6.4 by Anthony Towns
* Copyright (c) 1999 Anthony Towns <aj@azure.humbug.org.au>
#if 0
#define debug_noise(fmt, args...) printf(fmt, ## args)
#else
-#define debug_noise(fmt, args...)
+#define debug_noise(fmt, args...)
#endif
/* Forward declaration */
new_item = xmalloc(sizeof(llist_t));
new_item->data = data;
new_item->link = NULL;
-
+
prev = NULL;
tmp = list_head;
while(tmp) {
tmp = tmp->link;
}
if (prev) {
- prev->link = new_item;
+ prev->link = new_item;
} else {
list_head = new_item;
}
char *value;
};
-struct interface_defn_t
+struct interface_defn_t
{
struct interface_defn_t *prev;
struct interface_defn_t *next;
} else if (execable("/sbin/dhcpcd")) {
result = execute("dhcpcd -k %iface%", ifd, exec);
}
- return (result || execute("ifconfig %iface% down", ifd, exec));
+ return (result || bootp_down(ifd, exec));
}
static int bootp_up(struct interface_defn_t *ifd, execfn *exec)
"-p /var/run/wvdial.%iface% -s 2", ifd, exec));
}
-static struct method_t methods[] =
+static struct method_t methods[] =
{
{ "wvdial", wvdial_up, wvdial_down, },
{ "ppp", ppp_up, ppp_down, },
{ "loopback", loopback_up, loopback_down, },
};
-struct address_family_t addr_inet =
+struct address_family_t addr_inet =
{
"inet",
sizeof(methods) / sizeof(struct method_t),
perror(filename);
return NULL;
}
- debug_noise("\t%s=%s\n", currif->option[currif->n_options].name,
+ debug_noise("\t%s=%s\n", currif->option[currif->n_options].name,
currif->option[currif->n_options].value);
currif->n_options++;
break;
}
}
}
-
+
bb_xasprintf(&buf, "run-parts /etc/network/if-%s.d", opt);
(*exec)(buf);
static int iface_up(struct interface_defn_t *iface)
{
- int result;
if (!iface->method->up(iface,check)) return -1;
set_environ(iface, "start");
- result = execute_all(iface, doit, "pre-up");
- result += iface->method->up(iface, doit);
- result += execute_all(iface, doit, "up");
- return(result);
+ if (!execute_all(iface, doit, "pre-up")) return 0;
+ if (!iface->method->up(iface, doit)) return 0;
+ if (!execute_all(iface, doit, "up")) return 0;
+ return 1;
}
static int iface_down(struct interface_defn_t *iface)
{
- int result;
if (!iface->method->down(iface,check)) return -1;
set_environ(iface, "stop");
- result = execute_all(iface, doit, "down");
- result += iface->method->down(iface, doit);
- result += execute_all(iface, doit, "post-down");
- return(result);
+ if (!execute_all(iface, doit, "down")) return 0;
+ if (!iface->method->down(iface, doit)) return 0;
+ if (!execute_all(iface, doit, "post-down")) return 0;
+ return 1;
}
#ifdef CONFIG_FEATURE_IFUPDOWN_MAPPING
#ifdef CONFIG_FEATURE_IFUPDOWN_MAPPING
while ((i = getopt(argc, argv, "i:hvnamf")) != -1)
#else
- while ((i = getopt(argc, argv, "i:hvnaf")) != -1)
+ while ((i = getopt(argc, argv, "i:hvnaf")) != -1)
#endif
{
switch (i) {
if (!do_all) {
bb_show_usage();
}
- }
+ }
debug_noise("reading %s file:\n", interfaces);
defn = read_interfaces(interfaces);
list = list->link;
}
target_list = defn->autointerfaces;
-#endif
- }
+#endif
+ }
} else {
target_list = llist_add_to_end(target_list, argv[optind]);
}
} else {
iface_state->data = NULL;
iface_state->link = NULL;
- }
+ }
}
}
}