From 559b3384666bbc6e4e9e6d86cf54bd88d30b341f Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 29 May 2020 10:34:58 +0200 Subject: [PATCH] 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 --- package/network/config/qos-scripts/Makefile | 2 +- .../qos-scripts/files/usr/lib/qos/generate.sh | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/package/network/config/qos-scripts/Makefile b/package/network/config/qos-scripts/Makefile index abaeaeb981..7d282b2db5 100644 --- a/package/network/config/qos-scripts/Makefile +++ b/package/network/config/qos-scripts/Makefile @@ -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 diff --git a/package/network/config/qos-scripts/files/usr/lib/qos/generate.sh b/package/network/config/qos-scripts/files/usr/lib/qos/generate.sh index 3ec7f80e53..024be0c170 100755 --- a/package/network/config/qos-scripts/files/usr/lib/qos/generate.sh +++ b/package/network/config/qos-scripts/files/usr/lib/qos/generate.sh @@ -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" } } -- 2.30.2