From b957f0ef75fc68f0e12142221cfbd4cae483029b Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 13 Mar 2019 11:01:07 +0100 Subject: [PATCH] hostapd: add systemd support When using systemd, putting the wlan1 interface up wasn't working because it was relying on initscripts that are no longer in the filesystem. Add a parametrized version of the upstream hostapd service to be able to use a configuration that's different from the default one. Also, modify the generation of the wlan1 entry in /etc/network/interfaces to be able to use different post-up/pre-down hooks depending on the init manager that's being used. https://jira.digi.com/browse/DEL-6504 Signed-off-by: Gabriel Valcazar --- .../hostapd/hostapd/hostapd@.service | 11 +++++++++++ .../recipes-connectivity/hostapd/hostapd_%.bbappend | 12 ++++++++++-- .../init-ifupdown-1.0/interfaces.wlan1.dhcp | 4 ++-- .../init-ifupdown-1.0/interfaces.wlan1.static | 4 ++-- .../init-ifupdown/init-ifupdown_1.0.bbappend | 7 ++++++- 5 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 meta-digi-dey/recipes-connectivity/hostapd/hostapd/hostapd@.service diff --git a/meta-digi-dey/recipes-connectivity/hostapd/hostapd/hostapd@.service b/meta-digi-dey/recipes-connectivity/hostapd/hostapd/hostapd@.service new file mode 100644 index 000000000..6e10fa9c4 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/hostapd/hostapd/hostapd@.service @@ -0,0 +1,11 @@ +[Unit] +Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator (%i) +After=network.target + +[Service] +Type=forking +PIDFile=/run/hostapd.%i.pid +ExecStart=@SBINDIR@/hostapd @SYSCONFDIR@/hostapd_%i.conf -P /run/hostapd.%i.pid -B + +[Install] +WantedBy=multi-user.target diff --git a/meta-digi-dey/recipes-connectivity/hostapd/hostapd_%.bbappend b/meta-digi-dey/recipes-connectivity/hostapd/hostapd_%.bbappend index 71e703e80..30f44dfea 100644 --- a/meta-digi-dey/recipes-connectivity/hostapd/hostapd_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/hostapd/hostapd_%.bbappend @@ -1,17 +1,25 @@ -# Copyright (C) 2016-2018 Digi International. +# Copyright (C) 2016-2019 Digi International. FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI_append = " file://hostapd_wlan0.conf" +SRC_URI_append = " \ + file://hostapd_wlan0.conf \ + file://hostapd@.service \ +" SRC_URI_append_ccimx6ul = " file://hostapd_wlan1.conf" SRC_URI_append_ccimx6qpsbc = " file://hostapd_wlan1.conf" SRC_URI_append_ccimx8x = " file://hostapd_wlan1.conf" +SYSTEMD_SERVICE_${PN}_append = " hostapd@.service" + do_install_append() { # Remove the default hostapd.conf rm -f ${WORKDIR}/hostapd.conf # Install custom hostapd_IFACE.conf file install -m 0644 ${WORKDIR}/hostapd_wlan0.conf ${D}${sysconfdir} + # Install interface-specific systemd service + install -m 0644 ${WORKDIR}/hostapd@.service ${D}${systemd_unitdir}/system/ + sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/hostapd@.service } do_install_append_ccimx6ul() { diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.dhcp b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.dhcp index 245b973f0..3bd859e9e 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.dhcp +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.dhcp @@ -2,5 +2,5 @@ auto wlan1 iface wlan1 inet dhcp udhcpc_opts -S -b >/dev/null & - post-up /etc/init.d/hostapd start - pre-down /etc/init.d/hostapd stop + post-up ##WLAN1_POST_UP_ACTION## + pre-down ##WLAN1_PRE_DOWN_ACTION## diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.static b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.static index 664542efe..f842c1193 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.static +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan1.static @@ -5,5 +5,5 @@ iface wlan1 inet static netmask ##WLAN1_STATIC_NETMASK## gateway ##WLAN1_STATIC_GATEWAY## dns-nameservers ##WLAN1_STATIC_DNS## - post-up /etc/init.d/hostapd start - pre-down /etc/init.d/hostapd stop + post-up ##WLAN1_POST_UP_ACTION## + pre-down ##WLAN1_PRE_DOWN_ACTION## diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend index bd4224f38..b4e0020c3 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2018 Digi International Inc. +# Copyright (C) 2013-2019 Digi International Inc. FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" @@ -64,6 +64,9 @@ install_virtwlans() { install -m 0755 ${WORKDIR}/virtwlans.sh ${D}${base_bindir} } +WLAN1_POST_UP_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemctl start hostapd@wlan1.service', '/etc/init.d/hostapd start', d)}" +WLAN1_PRE_DOWN_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemctl stop hostapd@wlan1.service', '/etc/init.d/hostapd stop', d)}" + install_wlan1() { if [ -n "${HAVE_WIFI}" ]; then cat ${WORKDIR}/interfaces.wlan1.${WLAN1_MODE} >> ${D}${sysconfdir}/network/interfaces @@ -80,6 +83,8 @@ install_wlan1() { sed -i -e "s,##WLAN1_STATIC_NETMASK##,${WLAN1_STATIC_NETMASK},g" ${D}${sysconfdir}/network/interfaces sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN1_POST_UP_ACTION##,${WLAN1_POST_UP_ACTION},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN1_PRE_DOWN_ACTION##,${WLAN1_PRE_DOWN_ACTION},g" ${D}${sysconfdir}/network/interfaces } do_install_append_ccimx6qpsbc() {