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)
master
Jo-Philipp Wich 5 years ago
parent 31de4a40e7
commit c963e4267b
  1. 2
      package/network/config/qos-scripts/Makefile
  2. 20
      package/network/config/qos-scripts/files/usr/lib/qos/generate.sh

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

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

Loading…
Cancel
Save