aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Cavallari <nicolas.cavallari@green-communications.fr>2016-03-01 18:59:08 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2016-03-01 18:59:08 +0100
commite5aba8871254d411766b9d04d89dcff4ded21e76 (patch)
tree87ee4b576b0e291e43df6ca42f4fdfba9cd52b2c
parent352f79acbd759c14399e39baef21fc4ffe180ac2 (diff)
downloadbusybox-e5aba8871254d411766b9d04d89dcff4ded21e76.tar.gz
ifupdown: allow duplicate interface definitions
This patch allow to have multiple interface definitions, much like Debian's ifupdown. More specifically, it removes the check for a duplicate definition, so the impact on binary size should be fairly minimal. This configuration: iface eth0 inet static address 192.168.0.15 netmask 255.255.0.0 gateway 192.168.0.1 iface eth0 inet static address 10.0.0.1 netmask 255.255.255.0 Will add two addresses to eth0 if ip is used. If ifconfig is used, the standards methods will likely not stack, but the administrator may still use the manual method. The DHCP method may work depending on the DHCP client in use. This is a fairly advanced feature for power users who knows what they are doing. There are not many other network configuration systems that allows multiple addresses on an interface. Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ifupdown.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 766dfabbd..179186199 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -875,7 +875,19 @@ static struct interfaces_file_t *read_interfaces(const char *filename, struct in
currif->method = get_method(currif->address_family, method_name);
if (!currif->method)
bb_error_msg_and_die("unknown method \"%s\"", method_name);
-
+#if 0
+// Allegedly, Debian allows a duplicate definition:
+// iface eth0 inet static
+// address 192.168.0.15
+// netmask 255.255.0.0
+// gateway 192.168.0.1
+//
+// iface eth0 inet static
+// address 10.0.0.1
+// netmask 255.255.255.0
+//
+// This adds *two* addresses to eth0 (probably requires use of "ip", not "ifconfig"
+//
for (iface_list = defn->ifaces; iface_list; iface_list = iface_list->link) {
struct interface_defn_t *tmp = (struct interface_defn_t *) iface_list->data;
if ((strcmp(tmp->iface, currif->iface) == 0)
@@ -884,6 +896,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename, struct in
bb_error_msg_and_die("duplicate interface \"%s\"", tmp->iface);
}
}
+#endif
llist_add_to_end(&(defn->ifaces), (char*)currif);
debug_noise("iface %s %s %s\n", currif->iface, address_family_name, method_name);