}
[ -e /etc/config/network ] && {
- # only try to parse network config on openwrt
+ # only try to parse network config on librecmc
find_ifname() {(
reset_cb
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
option_cb() {
return 0
}
-
- # Section start
case "$1" in
interface)
config_set "$2" "classgroup" "Default"
;;
classify|default|reclassify)
option_cb() {
- append options "$1"
+ append "CONFIG_${CONFIG_SECTION}_options" "$1"
}
;;
esac
+}
- # Section end
- config_get TYPE "$CONFIG_SECTION" TYPE
+qos_parse_config() {
+ config_get TYPE "$1" TYPE
case "$TYPE" in
interface)
- config_get_bool enabled "$CONFIG_SECTION" enabled 1
- [ 1 -eq "$enabled" ] || return 0
- config_get classgroup "$CONFIG_SECTION" classgroup
- config_set "$CONFIG_SECTION" ifbdev "$C"
- C=$(($C+1))
- append INTERFACES "$CONFIG_SECTION"
- config_set "$classgroup" enabled 1
- config_get device "$CONFIG_SECTION" device
- [ -z "$device" ] && {
- device="$(find_ifname ${CONFIG_SECTION})"
- config_set "$CONFIG_SECTION" device "$device"
+ config_get_bool enabled "$1" enabled 1
+ [ 1 -eq "$enabled" ] && {
+ config_get classgroup "$1" classgroup
+ config_set "$1" ifbdev "$C"
+ C=$(($C+1))
+ append INTERFACES "$1"
+ config_set "$classgroup" enabled 1
+ config_get device "$1" device
+ [ -z "$device" ] && {
+ device="$(find_ifname $1)"
+ config_set "$1" device "$device"
+ }
}
;;
- classgroup) append CG "$CONFIG_SECTION";;
+ classgroup) append CG "$1";;
classify|default|reclassify)
case "$TYPE" in
classify) var="ctrules";;
*) var="rules";;
esac
- config_get target "$CONFIG_SECTION" target
- config_set "$CONFIG_SECTION" options "$options"
- append "$var" "$CONFIG_SECTION"
- unset options
+ append "$var" "$1"
;;
esac
}
-
enum_classes() {
local c="0"
config_get classes "$1" classes
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
}
[ -e ./qos.conf ] && {
. ./qos.conf
config_cb
-} || config_load qos
+} || {
+ config_load qos
+ config_foreach qos_parse_config
+}
C="0"
for iface in $INTERFACES; do