From 12e603021cd5a844207bb6571f21db63c1ffef1f Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 21 Mar 2019 16:11:06 +0100 Subject: [PATCH] init-ifupdown: add virtwlans script to pre-up and post-down hook directories This way, the wlan1 interface will only be created whenever a user wants to bring the interface up with ifupdown. Modify the script to be able to delete the interface whenever it gets brought down and remove its .sh file extension so run-parts can run it properly during the ifup process. https://jira.digi.com/browse/DEL-6353 Signed-off-by: Gabriel Valcazar --- .../init-ifupdown/init-ifupdown-1.0/virtwlans | 39 +++++++++++++++++++ .../init-ifupdown-1.0/virtwlans.sh | 30 -------------- .../init-ifupdown/init-ifupdown_1.0.bbappend | 11 +++--- 3 files changed, 45 insertions(+), 35 deletions(-) create mode 100644 meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans delete mode 100644 meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans.sh diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans new file mode 100644 index 000000000..c508c50c8 --- /dev/null +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Copyright (c) 2017-2019, Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +[ "$IFACE" = "wlan1" ] || exit 0 + +if [ "$MODE" = "start" ]; then + # Check for default MAC addresses + if [ -s "/proc/device-tree/wireless/mac-address1" ] && + [ -s "/proc/device-tree/wireless/mac-address2" ] && + [ -s "/proc/device-tree/wireless/mac-address3" ]; then + : + else + echo "[WARN] Using default MAC addresses for virtual interfaces, please program them referring to the Digi U-Boot Documentation" + fi + + if [ ! -d "/sys/class/net/wlan1" ]; then + # This will create a second wireless network device + iw dev wlan0 interface add wlan1 type __ap + fi +elif [ "$MODE" = "stop" ]; then + if [ -d "/sys/class/net/wlan1" ]; then + # Delete the wlan1 interface once it's down + iw dev wlan1 del + fi +fi diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans.sh b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans.sh deleted file mode 100644 index a3eb3dc7b..000000000 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/virtwlans.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2017, Digi International Inc. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at http://mozilla.org/MPL/2.0/. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# - -# This will create a second wireless network device -if [ -s "/proc/device-tree/wireless/mac-address1" ] && - [ -s "/proc/device-tree/wireless/mac-address2" ] && - [ -s "/proc/device-tree/wireless/mac-address3" ]; then - : -else - echo "[WARN] Using default MAC addresses for virtual interfaces, please program them referring to the Digi U-Boot Documentation" -fi - -if [ ! -d "/sys/class/net/wlan1" ]; then - # This will create a second wireless network device - iw dev wlan0 interface add wlan1 type __ap -fi 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 3fb7e09aa..7fc60a0b3 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 @@ -17,19 +17,19 @@ SRC_URI_append = " \ SRC_URI_append_ccimx6qpsbc = "\ file://interfaces.wlan1.static \ file://interfaces.wlan1.dhcp \ - file://virtwlans.sh \ + file://virtwlans \ " SRC_URI_append_ccimx6ul = "\ file://interfaces.wlan1.static \ file://interfaces.wlan1.dhcp \ - file://virtwlans.sh \ + file://virtwlans \ " SRC_URI_append_ccimx8x = "\ file://interfaces.wlan1.static \ file://interfaces.wlan1.dhcp \ - file://virtwlans.sh \ + file://virtwlans \ " SYSTEMD_SERVICE_${PN} = "ifupdown.service" @@ -69,8 +69,9 @@ do_install_append() { } install_virtwlans() { - install -d ${D}${base_bindir} - install -m 0755 ${WORKDIR}/virtwlans.sh ${D}${base_bindir} + install -d ${D}${sysconfdir}/network/if-pre-up.d + install -m 0755 ${WORKDIR}/virtwlans ${D}${sysconfdir}/network/if-pre-up.d/ + ln -s ../if-pre-up.d/virtwlans ${D}${sysconfdir}/network/if-post-down.d/virtwlans } WLAN1_POST_UP_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemctl start hostapd@wlan1.service', '/etc/init.d/hostapd start', d)}"