#----------------------------------------------------------------------------
# /etc/rc.d/rc.qos - configuration of OPT_QOS Version 0.4
#
# Creation:     02.05.2001  he
# Last Update:  27.10.2003  Joachim Kluge
# Für Burständerungen bitte nur innerhalb "## Burst:..." editieren
#----------------------------------------------------------------------------

if [ "$QOS_DO_DEBUG" = yes ]
then
    set -x
fi

/usr/local/bin/colecho "changing Quality of Service ..." gn


TC=/sbin/tc
IC=/sbin/ipchains

## Burst: hier $minrate und Burstrate der Klassen eingeben, deren Burst geändert werden soll

QOS_TOBURST_BANDWIDTH_A="243kbit"
QOS_TOBURST_RATE_A="400k"

QOS_TOBURST_BANDWIDTH_B="29079kbit"
QOS_TOBURST_RATE_B="400k"

QOS_TOBURST_BANDWIDTH_C="24789kbit"
QOS_TOBURST_RATE_C="400k"


## --- global settings --- ##

burst="2k"
mtu="1500b"
perturb="10"

## --- initialize vars --- ##

idx_down=1
idx_up=1


## --- Klassen einrichten --- ##

idx=1

while [ "$idx" -le "$QOS_CLASS_N" ]
do
  eval parent='$QOS_CLASS_'$idx'_PARENT'
  eval maxband='$QOS_CLASS_'$idx'_MAXBANDWIDTH'
  eval minband='$QOS_CLASS_'$idx'_MINBANDWIDTH'
  eval direction='$QOS_CLASS_'$idx'_DIRECTION'
  eval prio='$QOS_CLASS_'$idx'_PRIO'

  if [ "$prio" = "" ]
  then
    prio=""
  else
    prio='prio '$prio
  fi

  if [ "$maxband" != "" ]
  then
    maxband='ceil '$maxband
  else
    maxband=""
  fi

  if [ "$direction" = "up" ]
    then
  
      class=`/usr/bin/expr $idx + 1`
      eval class='20:'$class
  
      if [ "$parent" = "0" ]
      then
        parent="20:1"
      else
        parent=`/usr/bin/expr $parent + 1`
        eval parent='20:'$parent
      fi
    
    if [ "$minband" = "$QOS_TOBURST_BANDWIDTH_A" ]
    then
      doburst='burst '$QOS_TOBURST_RATE_A
    else
      if [ "$minband" = "$QOS_TOBURST_BANDWIDTH_B" ] 
      then
        doburst='burst '$QOS_TOBURST_RATE_B
      else
        if [ "$minband" = "$QOS_TOBURST_BANDWIDTH_C" ]
        then
          doburst='burst '$QOS_TOBURST_RATE_C
        else
          doburst='burst '$burst
        fi
      fi
    fi
    
      
      ## hier werden die Klassen durch "change" geändert
      
      $TC class change dev $QOS_INTERNET_DEV parent $parent classid $class htb \
      rate $minband $maxband $doburst $prio
      
      echo "$TC class change dev $QOS_INTERNET_DEV parent $parent classid $class htb \
      rate $minband $maxband $doburst $prio"
  fi

  idx=`/usr/bin/expr $idx + 1`
done


#$IC -A qosout -j RETURN

set +x

/usr/local/bin/colecho "... finished" gn