[ -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
}
}
append "$var" "-m comment --comment '$value'"
;;
*:tos)
- add_insmod xt_dscp
- case "$value" in
- !*) append "$var" "-m tos ! --tos $value";;
- *) append "$var" "-m tos --tos $value"
- esac
- ;;
+ add_insmod xt_dscp
+ case "$value" in
+ !*) append "$var" "-m tos ! --tos $value";;
+ *) append "$var" "-m tos --tos $value"
+ esac
+ ;;
*:dscp)
- add_insmod xt_dscp
+ add_insmod xt_dscp
dscp_option="--dscp"
- [ -z "${value%%[EBCA]*}" ] && dscp_option="--dscp-class"
+ [ -z "${value%%[EBCA]*}" ] && dscp_option="--dscp-class"
case "$value" in
- !*) append "$var" "-m dscp ! $dscp_option $value";;
- *) append "$var" "-m dscp $dscp_option $value"
- esac
- ;;
+ !*) append "$var" "-m dscp ! $dscp_option $value";;
+ *) append "$var" "-m dscp $dscp_option $value"
+ esac
+ ;;
*:direction)
value="$(echo "$value" | sed -e 's,-,:,g')"
if [ "$value" = "out" ]; then
config_get device "$1" device
[ -z "$device" ] && {
device="$(find_ifname $1)"
+ [ -z "$device" ] && exit 1
config_set "$1" device "$device"
}
}
cat <<EOF
$INSMOD
EOF
-
+
for command in $iptables; do
cat <<EOF
$command -w -t mangle -N qos_${cg}
-e 's/^-A/-D/' \
-e '${p;g}' |
# Make into proper iptables calls
- # Note: awkward in previous call due to hold space usage
+ # Note: awkward in previous call due to hold space usage
sed -n -e "s/^./${command} -w -t mangle &/p"
done
}