From f4f62a3c16f8591b14eedc3564599c6c807820b4 Mon Sep 17 00:00:00 2001 From: Jeremy Rosen Date: Fri, 16 Jan 2015 14:08:39 +0100 Subject: [PATCH] Allow a single DHCP configuration via the system configuration submenu MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Peter Korsgaard --- system/Config.in | 20 ++++++++++++++++++ system/skeleton/etc/network/interfaces | 4 ---- system/system.mk | 29 ++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 4 deletions(-) delete mode 100644 system/skeleton/etc/network/interfaces 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 -- 2.30.2