123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- diff --git a/package/Config.in b/package/Config.in
- index 9ed296f..3a1cd2a 100644
- --- a/package/Config.in
- +++ b/package/Config.in
- @@ -1487,6 +1487,7 @@ menu "Networking applications"
- source "package/ifplugd/Config.in"
- source "package/iftop/Config.in"
- source "package/ifupdown/Config.in"
- + source "package/ifupdown-scripts/Config.in"
- source "package/igd2-for-linux/Config.in"
- source "package/igh-ethercat/Config.in"
- source "package/igmpproxy/Config.in"
- diff --git a/package/ifupdown-scripts/Config.in b/package/ifupdown-scripts/Config.in
- new file mode 100644
- index 0000000..166094c
- --- /dev/null
- +++ b/package/ifupdown-scripts/Config.in
- @@ -0,0 +1,7 @@
- +config BR2_PACKAGE_IFUPDOWN_SCRIPTS
- + bool "ifupdown scripts"
- + default y if BR2_ROOTFS_SKELETON_DEFAULT
- + depends on !BR2_PACKAGE_SYSTEMD_NETWORKD && !BR2_PACKAGE_NETIFRC
- + help
- + Set of scripts used by ifupdown (either the standalone one,
- + or the busybox one) to bring network up, or tear it down.
- diff --git a/package/ifupdown-scripts/S40network b/package/ifupdown-scripts/S40network
- new file mode 100644
- index 0000000..642c501
- --- /dev/null
- +++ b/package/ifupdown-scripts/S40network
- @@ -0,0 +1,30 @@
- +#!/bin/sh
- +#
- +# Start the network....
- +#
- +
- +# Debian ifupdown needs the /run/network lock directory
- +mkdir -p /run/network
- +
- +case "$1" in
- + start)
- + printf "Starting network: "
- + /sbin/ifup -a
- + [ $? = 0 ] && echo "OK" || echo "FAIL"
- + ;;
- + stop)
- + printf "Stopping network: "
- + /sbin/ifdown -a
- + [ $? = 0 ] && echo "OK" || echo "FAIL"
- + ;;
- + restart|reload)
- + "$0" stop
- + "$0" start
- + ;;
- + *)
- + echo "Usage: $0 {start|stop|restart}"
- + exit 1
- +esac
- +
- +exit $?
- +
- diff --git a/package/ifupdown-scripts/ifupdown-scripts.mk b/package/ifupdown-scripts/ifupdown-scripts.mk
- new file mode 100644
- index 0000000..5ef0321
- --- /dev/null
- +++ b/package/ifupdown-scripts/ifupdown-scripts.mk
- @@ -0,0 +1,72 @@
- +################################################################################
- +#
- +# ifupdown-scripts
- +#
- +################################################################################
- +
- +define IFUPDOWN_SCRIPTS_PREAMBLE
- + echo "# interface file auto-generated by buildroot" \
- + > $(TARGET_DIR)/etc/network/interfaces
- +endef
- +
- +define IFUPDOWN_SCRIPTS_LOCALHOST
- + ( \
- + echo ; \
- + echo "auto lo"; \
- + echo "iface lo inet loopback"; \
- + ) >> $(TARGET_DIR)/etc/network/interfaces
- +endef
- +
- +IFUPDOWN_SCRIPTS_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))
- +
- +ifneq ($(IFUPDOWN_SCRIPTS_DHCP_IFACE),)
- +define IFUPDOWN_SCRIPTS_DHCP
- + ( \
- + echo ; \
- + echo "auto $(IFUPDOWN_SCRIPTS_DHCP_IFACE)"; \
- + echo "iface $(IFUPDOWN_SCRIPTS_DHCP_IFACE) inet dhcp"; \
- + echo " pre-up /etc/network/nfs_check"; \
- + echo " wait-delay 15"; \
- + echo " hostname \$$(hostname)"; \
- + ) >> $(TARGET_DIR)/etc/network/interfaces
- +endef
- +define IFUPDOWN_SCRIPTS_DHCP_OPENRC
- + echo "ifup $(IFUPDOWN_SCRIPTS_DHCP_IFACE)" \
- + > $(TARGET_DIR)/etc/ifup.$(IFUPDOWN_SCRIPTS_DHCP_IFACE)
- + echo "ifdown $(IFUPDOWN_SCRIPTS_DHCP_IFACE)" \
- + > $(TARGET_DIR)/etc/ifdown.$(IFUPDOWN_SCRIPTS_DHCP_IFACE)
- +endef
- +endif
- +
- +define IFUPDOWN_SCRIPTS_INSTALL_TARGET_CMDS
- + $(INSTALL) -m 0755 -D $(IFUPDOWN_SCRIPTS_PKGDIR)/nfs_check \
- + $(TARGET_DIR)/etc/network/nfs_check
- + $(call SYSTEM_RSYNC,$(IFUPDOWN_SCRIPTS_PKGDIR)/network,$(TARGET_DIR)/etc/network)
- +endef
- +
- +define IFUPDOWN_SCRIPTS_INSTALL_INIT_OPENRC
- + $(IFUPDOWN_SCRIPTS_PREAMBLE)
- + $(IFUPDOWN_SCRIPTS_DHCP)
- + $(IFUPDOWN_SCRIPTS_DHCP_OPENRC)
- +endef
- +
- +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSV
- + $(INSTALL) -D -m 0755 $(IFUPDOWN_SCRIPTS_PKGDIR)/S40network \
- + $(TARGET_DIR)/etc/init.d/S40network
- + $(IFUPDOWN_SCRIPTS_PREAMBLE)
- + $(IFUPDOWN_SCRIPTS_LOCALHOST)
- + $(IFUPDOWN_SCRIPTS_DHCP)
- +endef
- +
- +# ifupdown-scripts can not be selected when systemd-networkd is
- +# enabled, so if we are enabled with systemd, we must install our
- +# own service file.
- +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSTEMD
- + $(INSTALL) -D -m 644 $(IFUPDOWN_SCRIPTS_PKGDIR)/network.service \
- + $(TARGET_DIR)/etc/systemd/system/network.service
- + $(IFUPDOWN_SCRIPTS_PREAMBLE)
- + $(IFUPDOWN_SCRIPTS_LOCALHOST)
- + $(IFUPDOWN_SCRIPTS_DHCP)
- +endef
- +
- +$(eval $(generic-package))
- diff --git a/package/ifupdown-scripts/network.service b/package/ifupdown-scripts/network.service
- new file mode 100644
- index 0000000..0d77bb8
- --- /dev/null
- +++ b/package/ifupdown-scripts/network.service
- @@ -0,0 +1,21 @@
- +[Unit]
- +Description=Network Connectivity
- +Wants=network.target
- +Before=network.target
- +
- +[Service]
- +Type=oneshot
- +RemainAfterExit=yes
- +
- +# lo is brought up earlier, which will cause the upcoming "ifup -a" to fail
- +# with exit code 1, due to an "ip: RTNETLINK answers: File exists" error during
- +# its "ip addr add ..." command, subsequently causing this unit to fail even
- +# though it is a benign error. Flushing the lo address with the command below
- +# before ifup prevents this failure.
- +ExecStart=/sbin/ip addr flush dev lo
- +
- +ExecStart=/sbin/ifup -a
- +ExecStop=/sbin/ifdown -a
- +
- +[Install]
- +WantedBy=multi-user.target
- diff --git a/package/ifupdown-scripts/network/if-down.d/.empty b/package/ifupdown-scripts/network/if-down.d/.empty
- new file mode 100644
- index 0000000..e69de29
- diff --git a/package/ifupdown-scripts/network/if-post-down.d/.empty b/package/ifupdown-scripts/network/if-post-down.d/.empty
- new file mode 100644
- index 0000000..e69de29
- diff --git a/package/ifupdown-scripts/network/if-pre-up.d/wait_iface b/package/ifupdown-scripts/network/if-pre-up.d/wait_iface
- new file mode 100755
- index 0000000..ebccff2
- --- /dev/null
- +++ b/package/ifupdown-scripts/network/if-pre-up.d/wait_iface
- @@ -0,0 +1,21 @@
- +#!/bin/sh
- +
- +# In case we have a slow-to-appear interface (e.g. eth-over-USB),
- +# and we need to configure it, wait until it appears, but not too
- +# long either. IF_WAIT_DELAY is in seconds.
- +
- +if [ "${IF_WAIT_DELAY}" -a ! -e "/sys/class/net/${IFACE}" ]; then
- + printf "Waiting for interface %s to appear" "${IFACE}"
- + while [ ${IF_WAIT_DELAY} -gt 0 ]; do
- + if [ -e "/sys/class/net/${IFACE}" ]; then
- + printf "\n"
- + exit 0
- + fi
- + sleep 1
- + printf "."
- + : $((IF_WAIT_DELAY -= 1))
- + done
- + printf " timeout!\n"
- + exit 1
- +fi
- +
- diff --git a/package/ifupdown-scripts/network/if-up.d/.empty b/package/ifupdown-scripts/network/if-up.d/.empty
- new file mode 100644
- index 0000000..e69de29
- diff --git a/package/ifupdown-scripts/nfs_check b/package/ifupdown-scripts/nfs_check
- new file mode 100755
- index 0000000..dfa0cbf
- --- /dev/null
- +++ b/package/ifupdown-scripts/nfs_check
- @@ -0,0 +1,20 @@
- +#!/bin/sh
- +
- +# This allows NFS booting to work while also being able to configure
- +# the network interface via DHCP when not NFS booting. Otherwise, a
- +# NFS booted system will likely hang during DHCP configuration.
- +
- +# Attempting to configure the network interface used for NFS will
- +# initially bring that network down. Since the root filesystem is
- +# accessed over this network, the system hangs.
- +
- +# This script is run by ifup and will attempt to detect if a NFS root
- +# mount uses the interface to be configured (IFACE), and if so does
- +# not configure it. This should allow the same build to be disk/flash
- +# booted or NFS booted.
- +
- +nfsip=`sed -n '/^[^ ]*:.* \/ nfs.*[ ,]addr=\([0-9.]\+\).*/s//\1/p' /proc/mounts`
- +if [ -n "$nfsip" ] && ip route get to "$nfsip" | grep -q "dev $IFACE"; then
- + echo Skipping $IFACE, used for NFS from $nfsip
- + exit 1
- +fi
|