qos-scripts: fix interface resolving

Also ensure that the error message is actually printed to stderr and that
the rule generation is aborted if an interface cannot be resolved.

Ref: https://github.com/openwrt/luci/issues/3975
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 559b338466)
openwrt-19.07
Jo-Philipp Wich 2020-05-29 10:34:58 +02:00
parent 31de4a40e7
commit c963e4267b
2 changed files with 14 additions and 8 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=qos-scripts
PKG_VERSION:=1.3.1
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

View File

@ -22,15 +22,20 @@ add_insmod() {
[ -e /etc/config/network ] && {
# only try to parse network config on openwrt
find_ifname() {(
reset_cb
include /lib/network
scan_interfaces
config_get "$1" ifname
)}
. /lib/functions/network.sh
find_ifname() {
local ifname
if network_get_device ifname "$1"; then
echo "$ifname"
else
echo "Device for interface $1 not found." >&2
exit 1
fi
}
} || {
find_ifname() {
echo "Interface not found."
echo "Interface not found." >&2
exit 1
}
}
@ -218,6 +223,7 @@ qos_parse_config() {
config_get device "$1" device
[ -z "$device" ] && {
device="$(find_ifname $1)"
[ -z "$device" ] && exit 1
config_set "$1" device "$device"
}
}