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.