Ticket #10096: mask-qos-marks.patch

File mask-qos-marks.patch, 2.9 KB (added by Tobias Wolf <towolf@…>, 6 years ago)

restrict marking to lower 8 bits.

  • qos/generate.sh

    Only in package/qos-scripts/files/usr/lib/qos: .svn
    diff -u package/qos-scripts/files/usr/lib/qos/generate.sh /tmp/qos/generate.sh
    old new  
    5353        done 
    5454        config_get type "$section" TYPE 
    5555        case "$type" in 
    56                 classify) unset pkt; append "$var" "-m mark --mark 0";; 
    57                 default) pkt=1; append "$var" "-m mark --mark 0";; 
     56                classify) unset pkt; append "$var" "-m mark --mark 0/0xff";; 
     57                default) pkt=1; append "$var" "-m mark --mark 0/0xff";; 
    5858                reclassify) pkt=1;; 
    5959        esac 
    6060        append "$var" "${proto:+-p $proto}" 
     
    161161                                config_get class "${value##!}" classnr 
    162162                                [ -z "$class" ] && continue; 
    163163                                case "$value" in 
    164                                         !*) append "$var" "-m mark ! --mark $class";; 
    165                                         *) append "$var" "-m mark --mark $class";; 
     164                                        !*) append "$var" "-m mark ! --mark $class/0xff";; 
     165                                        *) append "$var" "-m mark --mark $class/0xff";; 
    166166                                esac 
    167167                        ;; 
    168168                        1:TOS) 
     
    386386                        unset iptrule 
    387387                } 
    388388 
    389                 parse_matching_rule iptrule "$rule" "$options" "$prefix" "-j MARK --set-mark $target" 
     389                parse_matching_rule iptrule "$rule" "$options" "$prefix" "-j MARK --set-mark $target/0xff" 
    390390                append "$var" "$iptrule" "$N" 
    391391        done 
    392392} 
     
    404404                config_get maxsize "$class" maxsize 
    405405                [ -z "$maxsize" -o -z "$mark" ] || { 
    406406                        add_insmod ipt_length 
    407                         append pktrules "iptables -t mangle -A ${cg} -m mark --mark $mark -m length --length $maxsize: -j MARK --set-mark 0" "$N" 
     407                        append pktrules "iptables -t mangle -A ${cg} -m mark --mark $mark/0xff -m length --length $maxsize: -j MARK --set-mark 0/0xff" "$N" 
    408408                } 
    409409        done 
    410410        add_rules pktrules "$rules" "iptables -t mangle -A ${cg}" 
     
    423423$INSMOD 
    424424iptables -t mangle -N ${cg} >&- 2>&- 
    425425iptables -t mangle -N ${cg}_ct >&- 2>&- 
    426 ${iptrules:+${iptrules}${N}iptables -t mangle -A ${cg}_ct -j CONNMARK --save-mark} 
    427 iptables -t mangle -A ${cg} -j CONNMARK --restore-mark 
    428 iptables -t mangle -A ${cg} -m mark --mark 0 -j ${cg}_ct 
     426${iptrules:+${iptrules}${N}iptables -t mangle -A ${cg}_ct -j CONNMARK --save-mark --mask 0xff} 
     427iptables -t mangle -A ${cg} -j CONNMARK --restore-mark --mask 0xff 
     428iptables -t mangle -A ${cg} -m mark --mark 0/0xff -j ${cg}_ct 
    429429$pktrules 
    430430$up$N${down:+${down}$N} 
    431431EOF 
  • qos/tcrules.awk

    diff -u package/qos-scripts/files/usr/lib/qos/tcrules.awk /tmp/qos/tcrules.awk
    old new  
    122122         
    123123        # filter rule 
    124124        for (i = 1; i <= n; i++) { 
    125                 print "tc filter add dev "device" parent 1: prio "class[i]" protocol ip handle "class[i]" fw flowid 1:"class[i] "0"  
     125                print "tc filter add dev "device" parent 1: prio "class[i]" protocol ip handle "class[i]"/0xff fw flowid 1:"class[i] "0"  
    126126                filterc=1 
    127127                if (filter[i] != "") { 
    128128                        print " tc filter add dev "device" parent "class[i]"00: handle "filterc"0 "filter[i]