qos-scripts: fix interface resolving
authorJo-Philipp Wich <jo@mein.io>
Fri, 29 May 2020 08:34:58 +0000 (10:34 +0200)
committerRISCi_ATOM <Bob@bobcall.me>
Sat, 30 May 2020 15:30:03 +0000 (15:30 +0000)
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)

package/network/config/qos-scripts/Makefile
package/network/config/qos-scripts/files/usr/lib/qos/generate.sh

index abaeaeb9813f409d79491d39ca3e4cc944b5370c..7d282b2db56d66db106296be5ac97c6ef45f1dda 100644 (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>
index 74f9c6911a5b758d2fdaea2928fddd10327cb4c6..64dec96d014e13032549e4063f7dd4c4994df9ca 100755 (executable)
@@ -22,15 +22,20 @@ add_insmod() {
 [ -e /etc/config/network ] && {
        # only try to parse network config on librecmc
 
-       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"
                                }
                        }