aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorGravatar Jeremy Rosen <jeremy.rosen@openwide.fr>2015-01-16 14:08:39 +0100
committerGravatar Peter Korsgaard <peter@korsgaard.com>2015-02-02 21:42:47 +0100
commitf4f62a3c16f8591b14eedc3564599c6c807820b4 (patch)
tree859874c42f27c63cf5c0530945b0f19466aaefde /system
parentd538b8bf93f684b0ea00dc61dd4cb25394345971 (diff)
downloadbuildroot-f4f62a3c16f8591b14eedc3564599c6c807820b4.tar.gz
buildroot-f4f62a3c16f8591b14eedc3564599c6c807820b4.tar.bz2
Allow a single DHCP configuration via the system configuration submenu
This patch allows the setup of simple a single interface to be automatically brought up and configured via DHCP on system startup. The interface name can be set via a configuration option. This patch does not support systemd-networkd, any complex network configuration should be done via overlay of /etc/network/interfaces or the relevant networkd configuration file [Peter: rename to BR2_SYSTEM_DHCP, tweak help text & implementation] Signed-off-by: Jérémy Rosen <jeremy.rosen@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'system')
-rw-r--r--system/Config.in20
-rw-r--r--system/skeleton/etc/network/interfaces4
-rw-r--r--system/system.mk29
3 files changed, 49 insertions, 4 deletions
diff --git a/system/Config.in b/system/Config.in
index e9f2428532..95e10ab8e9 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -326,6 +326,26 @@ config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW
endif # BR2_ROOTFS_SKELETON_DEFAULT
+
+config BR2_SYSTEM_DHCP
+ string "Network interface to configure through DHCP"
+ default ""
+ depends on !BR2_PACKAGE_SYSTEMD_NETWORKD && (BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN)
+ help
+ Enter here the name of the network interface (E.G. eth0) to
+ automatically configure through DHCP at bootup.
+
+ If left empty, no automatic DHCP requests will take place.
+
+ For more complicated network setups use an overlay to overwrite
+ /etc/network/interfaces or add a networkd configuration file.
+
+comment "automatic network configuration via DHCP is not compatible with networkd"
+ depends on BR2_PACKAGE_SYSTEMD_NETWORKD
+
+comment "automatic network configuration via DHCP needs ifupdown or busybox"
+ depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN)
+
config BR2_TARGET_TZ_INFO
bool "Install timezone info"
# No timezone for musl; only for uClibc or (e)glibc.
diff --git a/system/skeleton/etc/network/interfaces b/system/skeleton/etc/network/interfaces
deleted file mode 100644
index 218b82cde5..0000000000
--- a/system/skeleton/etc/network/interfaces
+++ /dev/null
@@ -1,4 +0,0 @@
-# Configure Loopback
-auto lo
-iface lo inet loopback
-
diff --git a/system/system.mk b/system/system.mk
index e4a3160e51..4a1eb4a4a1 100644
--- a/system/system.mk
+++ b/system/system.mk
@@ -38,6 +38,35 @@ ifneq ($(TARGET_GENERIC_ROOT_PASSWD),)
TARGETS += host-mkpasswd
endif
+define SET_NETWORK_LOCALHOST
+ ( \
+ echo "# interface file auto-generated by buildroot"; \
+ echo ; \
+ echo "auto lo"; \
+ echo "iface lo inet loopback"; \
+ ) > $(TARGET_DIR)/etc/network/interfaces
+endef
+
+NETWORK_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))
+
+ifneq ($(NETWORK_DHCP_IFACE),)
+define SET_NETWORK_DHCP
+ ( \
+ echo ; \
+ echo "auto $(NETWORK_DHCP_IFACE)"; \
+ echo "iface $(NETWORK_DHCP_IFACE) inet dhcp"; \
+ ) >> $(TARGET_DIR)/etc/network/interfaces
+endef
+endif
+
+define SET_NETWORK
+ mkdir -p $(TARGET_DIR)/etc/network/
+ $(SET_NETWORK_LOCALHOST)
+ $(SET_NETWORK_DHCP)
+endef
+
+TARGET_FINALIZE_HOOKS += SET_NETWORK
+
ifeq ($(BR2_ROOTFS_SKELETON_DEFAULT),y)
define SYSTEM_ROOT_PASSWD