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>
This commit is contained in:
		@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user