[Buildroot] [PATCH v3 2/3] package/wpa_supplicant: adding ifupdown support
Angelo Compagnucci
angelo at amarulasolutions.com
Wed Jun 8 12:00:27 UTC 2022
Actually, configuring a wifi interface as per "interfaces" man:
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant.conf
doesn't work on buildroot because the line wpa-conf is ignored due to
the lack of a proper ifupdown script to handle the wpa_supplicant
initialization.
Signed-off-by: Angelo Compagnucci <angelo at amarulasolutions.com>
---
v1 -> v2:
* Simplify script to the minimum to have the service started (Thomas,
Nicolas)
v2 -> v3:
* Move IF_WPA_CONF check early (Nicolas)
package/wpa_supplicant/ifupdown.sh | 49 ++++++++++++++++++++++++
package/wpa_supplicant/wpa_supplicant.mk | 9 +++++
2 files changed, 58 insertions(+)
create mode 100755 package/wpa_supplicant/ifupdown.sh
diff --git a/package/wpa_supplicant/ifupdown.sh b/package/wpa_supplicant/ifupdown.sh
new file mode 100755
index 0000000000..569344b683
--- /dev/null
+++ b/package/wpa_supplicant/ifupdown.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# This file is executed by ifupdown in pre-up, post-up, pre-down and
+# post-down phases of network interface configuration.
+
+WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
+
+# run this script only for interfaces which have wpa-conf option
+[ -z "$IF_WPA_CONF" ] && exit 0
+
+# Allow wpa_supplicant interface to be specified via wpa-iface
+# useful for starting wpa_supplicant on one interface of a bridge
+if [ -n "$IF_WPA_IFACE" ]; then
+ WPA_IFACE="$IF_WPA_IFACE"
+else
+ WPA_IFACE="$IFACE"
+fi
+
+WPA_SUP_PIDFILE="/run/wpa_supplicant.${WPA_IFACE}.pid"
+
+do_start () {
+ if [ ! -s "$IF_WPA_CONF" ]; then
+ echo "cannot read contents of $IF_WPA_CONF"
+ exit 1
+ fi
+ WPA_SUP_CONF="-c $IF_WPA_CONF"
+}
+
+case "$MODE" in
+ start)
+ do_start
+ case "$PHASE" in
+ post-up)
+ start-stop-daemon -S -q -x ${WPA_SUP_BIN} \
+ -- -B -i ${WPA_IFACE} ${WPA_SUP_CONF} -P ${WPA_SUP_PIDFILE}
+ ;;
+ esac
+ ;;
+
+ stop)
+ case "$PHASE" in
+ pre-down)
+ start-stop-daemon -K -p ${WPA_SUP_PIDFILE}
+ ;;
+ esac
+ ;;
+esac
+
+exit 0
diff --git a/package/wpa_supplicant/wpa_supplicant.mk b/package/wpa_supplicant/wpa_supplicant.mk
index c4cfe03371..af97f36eda 100644
--- a/package/wpa_supplicant/wpa_supplicant.mk
+++ b/package/wpa_supplicant/wpa_supplicant.mk
@@ -250,6 +250,14 @@ define WPA_SUPPLICANT_INSTALL_STAGING_CMDS
$(WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO)
endef
+ifeq ($(BR2_PACKAGE_IFUPDOWN_SCRIPTS),y)
+define WPA_SUPPLICANT_INSTALL_IFUP_SCRIPTS
+ $(INSTALL) -m 0755 -D package/wpa_supplicant/ifupdown.sh \
+ $(TARGET_DIR)/etc/network/if-up.d/wpasupplicant
+ ln -sf ../if-up.d/wpasupplicant $(TARGET_DIR)/etc/network/if-down.d/wpasupplicant
+endef
+endif
+
define WPA_SUPPLICANT_INSTALL_TARGET_CMDS
$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_supplicant \
$(TARGET_DIR)/usr/sbin/wpa_supplicant
@@ -259,6 +267,7 @@ define WPA_SUPPLICANT_INSTALL_TARGET_CMDS
$(WPA_SUPPLICANT_INSTALL_PASSPHRASE)
$(WPA_SUPPLICANT_INSTALL_DBUS)
$(WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO)
+ $(WPA_SUPPLICANT_INSTALL_IFUP_SCRIPTS)
endef
define WPA_SUPPLICANT_INSTALL_INIT_SYSTEMD
--
2.25.1
More information about the buildroot
mailing list