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 <gabriel.valcazar@digi.com>
This commit is contained in:
Gabriel Valcazar 2019-03-21 16:11:06 +01:00
parent 9f76a50e57
commit 12e603021c
3 changed files with 45 additions and 35 deletions

View File

@ -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

View File

@ -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

View File

@ -17,19 +17,19 @@ SRC_URI_append = " \
SRC_URI_append_ccimx6qpsbc = "\ SRC_URI_append_ccimx6qpsbc = "\
file://interfaces.wlan1.static \ file://interfaces.wlan1.static \
file://interfaces.wlan1.dhcp \ file://interfaces.wlan1.dhcp \
file://virtwlans.sh \ file://virtwlans \
" "
SRC_URI_append_ccimx6ul = "\ SRC_URI_append_ccimx6ul = "\
file://interfaces.wlan1.static \ file://interfaces.wlan1.static \
file://interfaces.wlan1.dhcp \ file://interfaces.wlan1.dhcp \
file://virtwlans.sh \ file://virtwlans \
" "
SRC_URI_append_ccimx8x = "\ SRC_URI_append_ccimx8x = "\
file://interfaces.wlan1.static \ file://interfaces.wlan1.static \
file://interfaces.wlan1.dhcp \ file://interfaces.wlan1.dhcp \
file://virtwlans.sh \ file://virtwlans \
" "
SYSTEMD_SERVICE_${PN} = "ifupdown.service" SYSTEMD_SERVICE_${PN} = "ifupdown.service"
@ -69,8 +69,9 @@ do_install_append() {
} }
install_virtwlans() { install_virtwlans() {
install -d ${D}${base_bindir} install -d ${D}${sysconfdir}/network/if-pre-up.d
install -m 0755 ${WORKDIR}/virtwlans.sh ${D}${base_bindir} 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)}" WLAN1_POST_UP_ACTION = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemctl start hostapd@wlan1.service', '/etc/init.d/hostapd start', d)}"