All of lore.kernel.org
 help / color / mirror / Atom feed
From: raptor <raptor@tvskat.net>
To: lartc@vger.kernel.org
Subject: [LARTC] [tcng] sysVinit script
Date: Fri, 11 Oct 2002 08:18:33 +0000	[thread overview]
Message-ID: <marc-lartc-103432431207468@msgid-missing> (raw)

hi below is sysvinit script for handling tcng-script .... please excuse my bad bash skils, correct me where i'm doing stupid things :")

what is left... many things, if i have time i will implement them too :

- start [devices] - and then correct handling of service lock files i.e. per device lock file
- stats blah ... - all ideas are welcome !!
- test  or some such, i mean the ability to use temprary config file and restore back original if something
goes wrong.. ideas?  Or something like last-good-known config/s

And u normaly start this on sysv system like this :

service tcng [command] [subcommands|devices]

Don't forget to set correct paths to "tc, tcc and tcng-config"....

PS. probably the script can be easly tweaked to work also as pure TC -service !! 

#========sample output=================
[root@qos tcng]# ./tcng 
*** Usage: 
	    tcng {start|stop|status|restart} [devices]
	    tcng show [all|qdisc|class|filter] [devices]


[root@qos tcng]# ./tcng stop
Stopping some/all tcng services: 
No traffic control running on : eth0
Flushing : eth1
No traffic control running on : hdlc0
No traffic control running on : hdlc1
No traffic control running on : pvc0
No traffic control running on : pvc1
[root@qos tcng]# ./tcng start
Starting tcng services: 
Execute :  qdisc add dev eth1 handle 1:0 root dsmark indices 4 default_index 0:
Execute :  qdisc add dev eth1 handle 2:0 parent 1:0 htb:
Execute :  class add dev eth1 parent 2:0 classid 2:1 htb rate 56000bps:
Execute :  class add dev eth1 parent 2:1 classid 2:2 htb rate 125bps ceil 2400bps:
..................................
[root@qos tcng]# ./tcng status 
traffic control on eth0: [OFF]
traffic control on eth1 : [ON]
traffic control on hdlc0: [OFF]
traffic control on hdlc1: [OFF]
traffic control on pvc0: [OFF]
traffic control on pvc1: [OFF]
[root@qos tcng]# ./tcng status eth1
traffic control on eth1 : [ON]
[root@qos tcng]# ./tcng show class eth1

class htb 2:1 root rate 56000bps ceil 56000bps burst 2159b cburst 2159b 
class htb 2:2 parent 2:1 prio 0 rate 125bps ceil 2400bps burst 1600b cburst 1623b 
class htb 2:3 parent 2:1 leaf 3: prio 0 rate 125bps ceil 4200bps burst 1600b cburst 1641b 

[root@qos tcng]# ./tcng show           
qdisc sfq 3: limit 128p quantum 1514b 
qdisc htb 2: r2q 10 default 0 direct_packets_stat 0
qdisc dsmark 1: indices 0x0004 default_index 0x0000 
class htb 2:1 root rate 56000bps ceil 56000bps burst 2159b cburst 2159b 
.......................
[root@qos tcng]# 

#=========THE SCRIPT==========
#!/bin/sh
#
# tcng:       Starts the tcng Server
#
# Version:      @(#) /etc/rc.d/init.d/tcng 0.1
#
# chkconfig: 2345 90 10
# description: Starts and stops the tcng at boot time and shutdown.
#
# processname: tcng
#
# created : from Raptor
#

#path to the tc command
tc=/sbin/tc
#path to the tcc command
tcc=/arh/bin/com.pl
#where is the tcng config file
tcngConf=/etc/sysconfig/tcng

offMsg=OFF
onMsg=ON
debug=1

# Source function library.
. /etc/rc.d/init.d/functions

isUp () {
    res=`$tc qdisc show dev $1`
    if [ -z "$res" ]; then return 1; fi
    return 0
}

start () {
    gprintf "Starting tcng services: "; echo
    OLDIFS="$IFS"
    IFS="
"
    cmds=`$tcc $tcngConf | grep -v "^#" | sed -e "s/^tc//"`
    for cmd in $cmds; do
        [ $debug -eq 1 ] && gprintf "Execute : $cmd:" && echo; 
        eval "$tc $cmd"
    done
    touch /var/lock/subsys/tcng
    IFS="$OLDIFS"
}


stop () {
    gprintf "Stopping some/all tcng services: "
    echo
    #if explictly specified shut only these devices
    if [ "$1" ]; then devs=$*; fi
#	echo $devs
    for d in $devs; do
        if isUp $d ; then 
    	    gprintf "Flushing : $d"; echo
    	    $tc qdisc del dev $d root
	else gprintf "No traffic control running on : $d"; echo
        fi
#    	    rm -f /var/lock/subsys/tcng-$d	    
    done	
    rm -f /var/lock/subsys/tcng;#this is not the correct behavior 	
}


status () {
    if [ "$1" ]; then devs=$*; fi	
#    echo $devs
    for d in $devs; do
        if isUp $d ; 
    	    then gprintf "traffic control on $d : [$onMsg]"; echo;
	    else gprintf "traffic control on $d: [$offMsg]"; echo;
	fi
    done		
}

show () {
    if [ -z "$1" ]; then what=all; else what=$1; fi
    shift
    if [ "$1" ]; then devs=$*; fi	
    for d in $devs; do
	if isUp $d; then
    	    [ "$what" = "all" ] || [ "$what" = "qdisc" ] && gprintf "`$tc qdisc show dev $d`"; echo    
    	    [ "$what" = "all" ] || [ "$what" = "class" ] && gprintf "`$tc class show dev $d`"; echo    	
    	    [ "$what" = "all" ] || [ "$what" = "filter" ] && gprintf "`$tc filter show dev $d`"; echo    	
	fi
    done
}


devs=`ifconfig -a | grep '^\w' | grep -v lo | cut -f 1 -d ' '`
command=$1
shift;

case "$command" in
  start) start ;;
  stop)	stop $@ ;;
  status) status $@ ;;
  show) show $@ ;;	
  restart)
	gprintf "Restarting tcng. "; echo
	stop $@
	start $@
	;;
  *)
	gprintf "*** Usage: 
	    tcng {start|stop|status|restart} [devices]
	    tcng show [all|qdisc|class|filter] [devices]
	"; echo
	exit 1
esac

exit 0
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

                 reply	other threads:[~2002-10-11  8:18 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-lartc-103432431207468@msgid-missing \
    --to=raptor@tvskat.net \
    --cc=lartc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.