diff options
author | Jo-Philipp Wich <jo@mein.io> | 2020-05-29 10:34:58 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2020-05-29 10:37:13 +0200 |
commit | c963e4267b916fa3b074b5ae1f5b5d2b9fc0af68 (patch) | |
tree | d8deb19a196211a34bbd85dd87c7c852ce58c5f9 | |
parent | 31de4a40e758f384e89b592806a64130833cac35 (diff) | |
download | upstream-c963e4267b916fa3b074b5ae1f5b5d2b9fc0af68.tar.gz upstream-c963e4267b916fa3b074b5ae1f5b5d2b9fc0af68.tar.bz2 upstream-c963e4267b916fa3b074b5ae1f5b5d2b9fc0af68.zip |
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 559b3384666bbc6e4e9e6d86cf54bd88d30b341f)
-rw-r--r-- | package/network/config/qos-scripts/Makefile | 2 | ||||
-rwxr-xr-x | package/network/config/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 <nbd@nbd.name> 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" } } |