Tcp staticroute 20051208.sh: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
mNo edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
#!/bin/sh |
|||
f |
|||
######################################################################## |
|||
# tcp_throughput.sh |
|||
######################################################################## |
|||
# |
|||
# This file is executed on each test node. It is not intended for |
|||
# direct execution. See run_test.sh instead. |
|||
# |
|||
# Note: |
|||
# In order to execute all necessary commands on test nodes, add |
|||
# the following line to your sudoers (visudo): |
|||
# brn ALL = (root) NOPASSWD: /sbin/route, /sbin/ifconfig, /usr/sbin/iptables |
|||
######################################################################## |
|||
DEBUG="" |
|||
BRNSRC="" |
|||
BRNDST="" |
|||
TSTSRC="" |
|||
TSTDST="" |
|||
NODES="" |
|||
NODEDB="" |
|||
CLICK_SCRIPT=brn_master.click |
|||
CLICKPATH=/mnt/kurth |
|||
SCRIPTNAME="${0}" |
|||
TEST_ABORT=80 |
|||
CLICK_PROC=/tmp/click |
|||
CHANNEL=15 |
|||
#----------------------------------------------------------------------- |
|||
usage() |
|||
{ |
|||
echo |
|||
echo "Usage: ${SCRIPTNAME} <options> <additional nodes>" |
|||
echo " options are..." |
|||
echo " -a brn-src IP of the input node into the BRN." |
|||
echo " -b brn-dst IP of the ouput node out of the BRN." |
|||
echo " -c tst-src IP of the test source generating the traffic." |
|||
echo " -d tst-dst IP of the test destination processing the traffic." |
|||
echo " --nodedb file The nodedb file to use." |
|||
echo " --clickpath path Path to the click bin dir." |
|||
echo " --clickscript scr The click script to execute." |
|||
echo " --debug Turn on debug (optional)" |
|||
echo " add. nodes Nodes over which the traffic is relayed." |
|||
echo "" |
|||
echo " note: all used nodes must be listed in the nodedb file." |
|||
exit 1 |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
error() |
|||
{ |
|||
echo "ERROR: $1" |
|||
usage |
|||
exit 1 |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
warning() |
|||
{ |
|||
echo "WARN: $1" |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
debug() |
|||
{ |
|||
if test ! -z "$DEBUG" |
|||
then |
|||
echo "DEBUG: $1" |
|||
fi |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
nodedb_getath() |
|||
{ |
|||
RETV=`grep -e "$1" ${NODEDB} | awk '{print $5}' | egrep -e '([0-9A-Fa-f]{2}:){5}[0-9a-fA-F]'` |
|||
debug "Node $1 has ath0 mac $RETV" |
|||
if test -z ${RETV} |
|||
then |
|||
error "Could not grep ath0 address of node $1 from node-db." |
|||
fi |
|||
echo ${RETV} |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
nodedb_getmac() |
|||
{ |
|||
RETV=`grep -e "$1" ${NODEDB} | awk '{print $4}' | egrep -e '([0-9A-Fa-f]{2}:){5}[0-9a-fA-F]'` |
|||
debug "Node $1 has mac $RETV" |
|||
if test -z ${RETV} |
|||
then |
|||
error "Could not grep ether address of node $1 from node-db." |
|||
fi |
|||
echo ${RETV} |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
run_node0() |
|||
{ |
|||
# Please set the -r option for the syslogd, so that it will accept |
|||
# remote logging messges (SYSLOGD_PARAMS="-r" in /etc/sysconfig/syslog |
|||
# or corresponding entry in /etc/syslog-ng/syslog-ng.conf) |
|||
sleep 12 |
|||
debug "iperf -c ${BRNSRC} -p 4711 -t 5 -f k &" |
|||
iperf -c ${BRNSRC} -p 4711 -t 5 -f k & |
|||
sleep 15 |
|||
debug "kill %1" |
|||
kill %1 |
|||
debug "iperf -c ${BRNSRC} -p 4711 -t 30 -f k &" |
|||
sh -c "iperf -c ${BRNSRC} -p 4711 -t 30 -f k; killall sleep" & |
|||
sleep ${TEST_ABORT} |
|||
debug "killall -q -SIGKILL iperf" |
|||
killall -q -SIGKILL iperf |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
run_node1() |
|||
{ |
|||
debug "Executing iperf -s -p 4711 -f k &" |
|||
iperf -s -p 4711 -f k & |
|||
sleep ${TEST_ABORT} |
|||
debug "Executing killall -q -SIGKILL iperf" |
|||
killall -q -SIGKILL iperf |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
shutdown_click() |
|||
{ |
|||
IFCONFIG=ifconfig |
|||
UMOUNT=umount |
|||
RMMOD=rmmod |
|||
debug "Executing killall -q logserver" |
|||
killall -q -SIGKILL logserver |
|||
debug "Executing killall -q -SIGKILL click" |
|||
killall -q -SIGKILL click |
|||
debug "${IFCONFIG} ath0 down 2>&1 > /dev/null" |
|||
${IFCONFIG} ath0 down 2>&1 > /dev/null |
|||
debug "${UMOUNT} ${CLICK_PROC} 2>&1 > /dev/null" |
|||
${UMOUNT} ${CLICK_PROC} 2>&1 > /dev/null |
|||
debug "${RMMOD} click.ko" |
|||
${RMMOD} click.ko |
|||
debug "${RMMOD} proclikefs.ko" |
|||
${RMMOD} proclikefs.ko |
|||
debug "${RMMOD} ath_pci.ko" |
|||
${RMMOD} ath_pci.ko |
|||
debug "${RMMOD} ath_hal.ko" |
|||
${RMMOD} ath_hal.ko |
|||
#debug "killall -q syslogd" |
|||
#killall -q syslogd |
|||
#killall -SIGKILL -q syslogd |
|||
#debug "syslogd -C 16 < /dev/null > /dev/null 2>&1" |
|||
#syslogd -C 16 < /dev/null > /dev/null 2>&1 |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
setup_click() |
|||
{ |
|||
IFCONFIG=ifconfig |
|||
MOUNT=mount |
|||
INSMOD=insmod |
|||
IWCONFIG=/usr/sbin/iwconfig |
|||
#debug "killall -q syslogd" |
|||
#killall -q syslogd |
|||
#debug "syslogd -R ${TSTSRC} -L -C 16" |
|||
#syslogd -R ${TSTSRC} -L -C 16 |
|||
#export CLICKPATH |
|||
debug "${INSMOD} ./ath_hal.ko" |
|||
${INSMOD} ./ath_hal.ko |
|||
debug "${INSMOD} ./ath_pci.ko" |
|||
${INSMOD} ./ath_pci.ko countrycode=392 |
|||
debug "${INSMOD} ./proclikefs.ko" |
|||
${INSMOD} ./proclikefs.ko |
|||
debug "${INSMOD} ./click.ko" |
|||
${INSMOD} ./click.ko |
|||
debug "mkdir -p ${CLICK_PROC}" |
|||
mkdir -p ${CLICK_PROC} |
|||
debug "${MOUNT} -t click none ${CLICK_PROC}" |
|||
${MOUNT} -t click none ${CLICK_PROC} |
|||
debug "${IFCONFIG} ath0 up" |
|||
${IFCONFIG} ath0 up |
|||
debug "iwconfig ath0 channel ${CHANNEL}" |
|||
${IWCONFIG} ath0 channel ${CHANNEL} |
|||
debug "Executing ./logserver 7777 &" |
|||
./logserver 7777 & |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
run_node2() |
|||
{ |
|||
BRNDSTMAC=`nodedb_getmac ${BRNDST}` |
|||
BRNSRCMAC=`nodedb_getmac ${BRNSRC}` |
|||
TSTDSTMAC=`nodedb_getmac ${TSTDST}` |
|||
TSTSRCMAC=`nodedb_getmac ${TSTSRC}` |
|||
# Prepare first rewriter |
|||
debug "echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter1/ether_dst" |
|||
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter1/ether_dst |
|||
debug "echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter1/ether_src" |
|||
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter1/ether_src |
|||
debug "echo \"${TSTDST}\" > ${CLICK_PROC}/rewriter1/ip_dst" |
|||
echo "${TSTDST}" > ${CLICK_PROC}/rewriter1/ip_dst |
|||
debug "echo \"${BRNDST}\" > ${CLICK_PROC}/rewriter1/ip_src" |
|||
echo "${BRNDST}" > ${CLICK_PROC}/rewriter1/ip_src |
|||
debug "echo \"true\" > ${CLICK_PROC}/rewriter1/active" |
|||
echo "true" > ${CLICK_PROC}/rewriter1/active |
|||
# Set up second rewriter |
|||
debug "echo \"${TSTSRCMAC}\" > ${CLICK_PROC}/rewriter2/ether_dst" |
|||
echo "${TSTSRCMAC}" > ${CLICK_PROC}/rewriter2/ether_dst |
|||
debug "echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter2/ether_src" |
|||
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter2/ether_src |
|||
debug "echo \"${TSTSRC}\" > ${CLICK_PROC}/rewriter2/ip_dst" |
|||
echo "${TSTSRC}" > ${CLICK_PROC}/rewriter2/ip_dst |
|||
debug "echo \"${BRNSRC}\" > ${CLICK_PROC}/rewriter2/ip_src" |
|||
echo "${BRNSRC}" > ${CLICK_PROC}/rewriter2/ip_src |
|||
debug "echo \"true\" > ${CLICK_PROC}/rewriter2/active" |
|||
echo "true" > ${CLICK_PROC}/rewriter2/active |
|||
ROUTESTART="`nodedb_getmac ${BRNDST}` `nodedb_getath ${BRNDST}`" |
|||
ROUTEEND="`nodedb_getath ${BRNSRC}` `nodedb_getmac ${BRNSRC}`" |
|||
ROUTEINT="" |
|||
for node in ${NODES} |
|||
do |
|||
route_host=${node} |
|||
index=`expr index "${node}" "@"` |
|||
if test 0 != ${index} |
|||
then |
|||
route_host=`echo "${node}" | awk -F@ '{print $2}'` |
|||
fi |
|||
ROUTEINT="${ROUTEINT} `nodedb_getath ${route_host}`" |
|||
done |
|||
ROUTE="${ROUTESTART} ${ROUTEINT} ${ROUTEEND}" |
|||
echo "Node2 route = $ROUTE" |
|||
echo ${ROUTE} > ${CLICK_PROC}/dsr/querier/fixed_route |
|||
#echo "00:0F:B5:3F:49:EE 00:0F:B5:3F:58:49 00:0F:B5:3F:21:81 00:0F:B5:3F:21:60 00:0F:B5:3F:20:D6 00:0F:B5:3F:21:3C 00:0F:B5:3F:1E:EA 00:0F:B5:3F:1B:BF 00:0F:B5:3F:3E:D8" > ${CLICK_PROC}/dsr/querier/fixed_route |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
run_node3() |
|||
{ |
|||
BRNDSTMAC=`nodedb_getmac ${BRNDST}` |
|||
BRNSRCMAC=`nodedb_getmac ${BRNSRC}` |
|||
TSTDSTMAC=`nodedb_getmac ${TSTDST}` |
|||
TSTSRCMAC=`nodedb_getmac ${TSTSRC}` |
|||
# Prepare first rewriter |
|||
debug "Executing echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter1/ether_dst" |
|||
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter1/ether_dst |
|||
debug "Executing echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter1/ether_src" |
|||
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter1/ether_src |
|||
debug "Executing echo \"${TSTSRC}\" > ${CLICK_PROC}/rewriter1/ip_dst" |
|||
echo "${TSTSRC}" > ${CLICK_PROC}/rewriter1/ip_dst |
|||
debug "Executing echo \"${BRNSRC}\" > ${CLICK_PROC}/rewriter1/ip_src" |
|||
echo "${BRNSRC}" > ${CLICK_PROC}/rewriter1/ip_src |
|||
debug "Executing echo \"true\" > ${CLICK_PROC}/rewriter1/active" |
|||
echo "true" > ${CLICK_PROC}/rewriter1/active |
|||
# Set up second rewriter |
|||
debug "Executing echo \"${TSTDSTMAC}\" > ${CLICK_PROC}/rewriter2/ether_dst" |
|||
echo "${TSTDSTMAC}" > ${CLICK_PROC}/rewriter2/ether_dst |
|||
debug "Executing echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter2/ether_src" |
|||
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter2/ether_src |
|||
debug "Executing echo \"${TSTDST}\" > ${CLICK_PROC}/rewriter2/ip_dst" |
|||
echo "${TSTDST}" > ${CLICK_PROC}/rewriter2/ip_dst |
|||
debug "Executing echo \"${BRNDST}\" > ${CLICK_PROC}/rewriter2/ip_src" |
|||
echo "${BRNDST}" > ${CLICK_PROC}/rewriter2/ip_src |
|||
debug "Executing echo \"true\" > ${CLICK_PROC}/rewriter2/active" |
|||
echo "true" > ${CLICK_PROC}/rewriter2/active |
|||
ROUTESTART="`nodedb_getmac ${BRNSRC}` `nodedb_getath ${BRNSRC}`" |
|||
ROUTEEND="`nodedb_getath ${BRNDST}` `nodedb_getmac ${BRNDST}`" |
|||
ROUTEINT="" |
|||
for node in ${NODES} |
|||
do |
|||
route_host=${node} |
|||
index=`expr index "${node}" "@"` |
|||
if test 0 != ${index} |
|||
then |
|||
route_host=`echo "${node}" | awk -F@ '{print $2}'` |
|||
fi |
|||
ROUTEINT="${ROUTEINT} `nodedb_getath ${route_host}`" |
|||
done |
|||
ROUTE="${ROUTESTART} ${ROUTEINT} ${ROUTEEND}" |
|||
echo "Node3 route = $ROUTE" |
|||
echo ${ROUTE} > ${CLICK_PROC}/dsr/querier/fixed_route |
|||
#echo "00:0F:B5:3F:3E:D8 00:0F:B5:3F:1B:BF 00:0F:B5:3F:1E:EA 00:0F:B5:3F:21:3C 00:0F:B5:3F:20:D6 00:0F:B5:3F:21:60 00:0F:B5:3F:21:81 00:0F:B5:3F:58:49 00:0F:B5:3F:49:EE" > ${CLICK_PROC}/dsr/querier/fixed_route |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
# Runs the given click script using the click kernel module |
|||
# For the userland version, see former versions of this file. |
|||
run_others() |
|||
{ |
|||
if test ! -x ${CLICKPATH}/click-align |
|||
then |
|||
error "Could not find click-align (expected ${CLICKPATH}/click-align)." |
|||
fi |
|||
if test ! -r ${CLICK_SCRIPT} |
|||
then |
|||
error "Could not find click script (expected ${CLICK_SCRIPT})." |
|||
fi |
|||
# Clear all click |
|||
shutdown_click |
|||
# Insert modules |
|||
setup_click |
|||
# Execute the click script |
|||
debug "${CLICKPATH}/click-align ${CLICK_SCRIPT} > ${CLICK_PROC}/config" |
|||
${CLICKPATH}/click-align ${CLICK_SCRIPT} > ${CLICK_PROC}/config |
|||
sleep 8 |
|||
case "${NODE}" in |
|||
"2") |
|||
run_node2 |
|||
;; |
|||
"3") |
|||
run_node3 |
|||
;; |
|||
esac |
|||
sleep ${TEST_ABORT} |
|||
cat ${CLICK_PROC}/errors |
|||
cat ${CLICK_PROC}/messages |
|||
echo "" > ${CLICK_PROC}/config |
|||
# Clear all click |
|||
shutdown_click |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
run_test() |
|||
{ |
|||
case "${NODE}" in |
|||
"0") |
|||
run_node0 |
|||
;; |
|||
"1") |
|||
run_node1 |
|||
;; |
|||
*) |
|||
run_others |
|||
;; |
|||
esac |
|||
} |
|||
#----------------------------------------------------------------------- |
|||
# main() |
|||
#----------------------------------------------------------------------- |
|||
# Parse parameters |
|||
while [ $# -gt 0 ]; do # Until you run out of parameters . . . |
|||
case "$1" in |
|||
-a|--brn-src) |
|||
BRNSRC="$2" |
|||
shift |
|||
;; |
|||
-b|--brn-dst) |
|||
BRNDST="$2" |
|||
shift |
|||
;; |
|||
-c|--tst-src) |
|||
TSTSRC="$2" |
|||
shift |
|||
;; |
|||
-d|--tst-dst) |
|||
TSTDST="$2" |
|||
shift |
|||
;; |
|||
--clickpath) |
|||
CLICKPATH=$2 |
|||
shift |
|||
;; |
|||
--clickscript) |
|||
CLICK_SCRIPT=$2 |
|||
shift |
|||
;; |
|||
--nodedb) |
|||
NODEDB=$2 |
|||
shift |
|||
;; |
|||
--debug) |
|||
DEBUG="--debug" |
|||
;; |
|||
-h|--help) |
|||
usage |
|||
exit 1 |
|||
;; |
|||
*) |
|||
NODES="$*" |
|||
break |
|||
;; |
|||
esac |
|||
shift # Check next set of parameters. |
|||
done |
|||
debug "Param BRNSRC=${BRNSRC}" |
|||
debug "Param BRNDST=${BRNDST}" |
|||
debug "Param TSTSRC=${TSTSRC}" |
|||
debug "Param TSTDST=${TSTDST}" |
|||
debug "Param NODEDB=${NODEDB}" |
|||
debug "Param DEBUG=${DEBUG}" |
|||
debug "Param NODES=${NODES}" |
|||
debug "Param CLICKPATH=${CLICKPATH}" |
|||
debug "Param HOST=${HOST}" |
|||
debug "Param NODE=${NODE}" |
|||
debug "Param CLICK_SCRIPT=${CLICK_SCRIPT}" |
|||
debug "Param PWD=`pwd`" |
|||
# Check parameters |
|||
if test -z ${BRNSRC} |
|||
then |
|||
error "Parameter brn-src not specified." |
|||
fi |
|||
if test -z ${BRNDST} |
|||
then |
|||
error "Parameter brn-dst not specified." |
|||
fi |
|||
if test -z ${TSTDST} |
|||
then |
|||
error "Parameter tst-src not specified." |
|||
fi |
|||
if test -z ${TSTDST} |
|||
then |
|||
error "Parameter tst-dst not specified." |
|||
fi |
|||
if test ! -r ${NODEDB} |
|||
then |
|||
error "Node-DB not found (--nodedb=...)." |
|||
fi |
|||
# Run the test |
|||
run_test |
|||
exit 0 |
|||
Latest revision as of 09:24, 25 January 2006
#!/bin/sh
########################################################################
# tcp_throughput.sh
########################################################################
#
# This file is executed on each test node. It is not intended for
# direct execution. See run_test.sh instead.
#
# Note:
# In order to execute all necessary commands on test nodes, add
# the following line to your sudoers (visudo):
# brn ALL = (root) NOPASSWD: /sbin/route, /sbin/ifconfig, /usr/sbin/iptables
########################################################################
DEBUG=""
BRNSRC=""
BRNDST=""
TSTSRC=""
TSTDST=""
NODES=""
NODEDB=""
CLICK_SCRIPT=brn_master.click
CLICKPATH=/mnt/kurth
SCRIPTNAME="${0}"
TEST_ABORT=80
CLICK_PROC=/tmp/click
CHANNEL=15
#-----------------------------------------------------------------------
usage()
{
echo
echo "Usage: ${SCRIPTNAME} <options> <additional nodes>"
echo " options are..."
echo " -a brn-src IP of the input node into the BRN."
echo " -b brn-dst IP of the ouput node out of the BRN."
echo " -c tst-src IP of the test source generating the traffic."
echo " -d tst-dst IP of the test destination processing the traffic."
echo " --nodedb file The nodedb file to use."
echo " --clickpath path Path to the click bin dir."
echo " --clickscript scr The click script to execute."
echo " --debug Turn on debug (optional)"
echo " add. nodes Nodes over which the traffic is relayed."
echo ""
echo " note: all used nodes must be listed in the nodedb file."
exit 1
}
#-----------------------------------------------------------------------
error()
{
echo "ERROR: $1"
usage
exit 1
}
#-----------------------------------------------------------------------
warning()
{
echo "WARN: $1"
}
#-----------------------------------------------------------------------
debug()
{
if test ! -z "$DEBUG"
then
echo "DEBUG: $1"
fi
}
#-----------------------------------------------------------------------
nodedb_getath()
{
RETV=`grep -e "$1" ${NODEDB} | awk '{print $5}' | egrep -e '([0-9A-Fa-f]{2}:){5}[0-9a-fA-F]'`
debug "Node $1 has ath0 mac $RETV"
if test -z ${RETV}
then
error "Could not grep ath0 address of node $1 from node-db."
fi
echo ${RETV}
}
#-----------------------------------------------------------------------
nodedb_getmac()
{
RETV=`grep -e "$1" ${NODEDB} | awk '{print $4}' | egrep -e '([0-9A-Fa-f]{2}:){5}[0-9a-fA-F]'`
debug "Node $1 has mac $RETV"
if test -z ${RETV}
then
error "Could not grep ether address of node $1 from node-db."
fi
echo ${RETV}
}
#-----------------------------------------------------------------------
run_node0()
{
# Please set the -r option for the syslogd, so that it will accept
# remote logging messges (SYSLOGD_PARAMS="-r" in /etc/sysconfig/syslog
# or corresponding entry in /etc/syslog-ng/syslog-ng.conf)
sleep 12
debug "iperf -c ${BRNSRC} -p 4711 -t 5 -f k &"
iperf -c ${BRNSRC} -p 4711 -t 5 -f k &
sleep 15
debug "kill %1"
kill %1
debug "iperf -c ${BRNSRC} -p 4711 -t 30 -f k &"
sh -c "iperf -c ${BRNSRC} -p 4711 -t 30 -f k; killall sleep" &
sleep ${TEST_ABORT}
debug "killall -q -SIGKILL iperf"
killall -q -SIGKILL iperf
}
#-----------------------------------------------------------------------
run_node1()
{
debug "Executing iperf -s -p 4711 -f k &"
iperf -s -p 4711 -f k &
sleep ${TEST_ABORT}
debug "Executing killall -q -SIGKILL iperf"
killall -q -SIGKILL iperf
}
#-----------------------------------------------------------------------
shutdown_click()
{
IFCONFIG=ifconfig
UMOUNT=umount
RMMOD=rmmod
debug "Executing killall -q logserver"
killall -q -SIGKILL logserver
debug "Executing killall -q -SIGKILL click"
killall -q -SIGKILL click
debug "${IFCONFIG} ath0 down 2>&1 > /dev/null"
${IFCONFIG} ath0 down 2>&1 > /dev/null
debug "${UMOUNT} ${CLICK_PROC} 2>&1 > /dev/null"
${UMOUNT} ${CLICK_PROC} 2>&1 > /dev/null
debug "${RMMOD} click.ko"
${RMMOD} click.ko
debug "${RMMOD} proclikefs.ko"
${RMMOD} proclikefs.ko
debug "${RMMOD} ath_pci.ko"
${RMMOD} ath_pci.ko
debug "${RMMOD} ath_hal.ko"
${RMMOD} ath_hal.ko
#debug "killall -q syslogd"
#killall -q syslogd
#killall -SIGKILL -q syslogd
#debug "syslogd -C 16 < /dev/null > /dev/null 2>&1"
#syslogd -C 16 < /dev/null > /dev/null 2>&1
}
#-----------------------------------------------------------------------
setup_click()
{
IFCONFIG=ifconfig
MOUNT=mount
INSMOD=insmod
IWCONFIG=/usr/sbin/iwconfig
#debug "killall -q syslogd"
#killall -q syslogd
#debug "syslogd -R ${TSTSRC} -L -C 16"
#syslogd -R ${TSTSRC} -L -C 16
#export CLICKPATH
debug "${INSMOD} ./ath_hal.ko"
${INSMOD} ./ath_hal.ko
debug "${INSMOD} ./ath_pci.ko"
${INSMOD} ./ath_pci.ko countrycode=392
debug "${INSMOD} ./proclikefs.ko"
${INSMOD} ./proclikefs.ko
debug "${INSMOD} ./click.ko"
${INSMOD} ./click.ko
debug "mkdir -p ${CLICK_PROC}"
mkdir -p ${CLICK_PROC}
debug "${MOUNT} -t click none ${CLICK_PROC}"
${MOUNT} -t click none ${CLICK_PROC}
debug "${IFCONFIG} ath0 up"
${IFCONFIG} ath0 up
debug "iwconfig ath0 channel ${CHANNEL}"
${IWCONFIG} ath0 channel ${CHANNEL}
debug "Executing ./logserver 7777 &"
./logserver 7777 &
}
#-----------------------------------------------------------------------
run_node2()
{
BRNDSTMAC=`nodedb_getmac ${BRNDST}`
BRNSRCMAC=`nodedb_getmac ${BRNSRC}`
TSTDSTMAC=`nodedb_getmac ${TSTDST}`
TSTSRCMAC=`nodedb_getmac ${TSTSRC}`
# Prepare first rewriter
debug "echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter1/ether_dst"
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter1/ether_dst
debug "echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter1/ether_src"
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter1/ether_src
debug "echo \"${TSTDST}\" > ${CLICK_PROC}/rewriter1/ip_dst"
echo "${TSTDST}" > ${CLICK_PROC}/rewriter1/ip_dst
debug "echo \"${BRNDST}\" > ${CLICK_PROC}/rewriter1/ip_src"
echo "${BRNDST}" > ${CLICK_PROC}/rewriter1/ip_src
debug "echo \"true\" > ${CLICK_PROC}/rewriter1/active"
echo "true" > ${CLICK_PROC}/rewriter1/active
# Set up second rewriter
debug "echo \"${TSTSRCMAC}\" > ${CLICK_PROC}/rewriter2/ether_dst"
echo "${TSTSRCMAC}" > ${CLICK_PROC}/rewriter2/ether_dst
debug "echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter2/ether_src"
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter2/ether_src
debug "echo \"${TSTSRC}\" > ${CLICK_PROC}/rewriter2/ip_dst"
echo "${TSTSRC}" > ${CLICK_PROC}/rewriter2/ip_dst
debug "echo \"${BRNSRC}\" > ${CLICK_PROC}/rewriter2/ip_src"
echo "${BRNSRC}" > ${CLICK_PROC}/rewriter2/ip_src
debug "echo \"true\" > ${CLICK_PROC}/rewriter2/active"
echo "true" > ${CLICK_PROC}/rewriter2/active
ROUTESTART="`nodedb_getmac ${BRNDST}` `nodedb_getath ${BRNDST}`"
ROUTEEND="`nodedb_getath ${BRNSRC}` `nodedb_getmac ${BRNSRC}`"
ROUTEINT=""
for node in ${NODES}
do
route_host=${node}
index=`expr index "${node}" "@"`
if test 0 != ${index}
then
route_host=`echo "${node}" | awk -F@ '{print $2}'`
fi
ROUTEINT="${ROUTEINT} `nodedb_getath ${route_host}`"
done
ROUTE="${ROUTESTART} ${ROUTEINT} ${ROUTEEND}"
echo "Node2 route = $ROUTE"
echo ${ROUTE} > ${CLICK_PROC}/dsr/querier/fixed_route
#echo "00:0F:B5:3F:49:EE 00:0F:B5:3F:58:49 00:0F:B5:3F:21:81 00:0F:B5:3F:21:60 00:0F:B5:3F:20:D6 00:0F:B5:3F:21:3C 00:0F:B5:3F:1E:EA 00:0F:B5:3F:1B:BF 00:0F:B5:3F:3E:D8" > ${CLICK_PROC}/dsr/querier/fixed_route
}
#-----------------------------------------------------------------------
run_node3()
{
BRNDSTMAC=`nodedb_getmac ${BRNDST}`
BRNSRCMAC=`nodedb_getmac ${BRNSRC}`
TSTDSTMAC=`nodedb_getmac ${TSTDST}`
TSTSRCMAC=`nodedb_getmac ${TSTSRC}`
# Prepare first rewriter
debug "Executing echo \"${BRNSRCMAC}\" > ${CLICK_PROC}/rewriter1/ether_dst"
echo "${BRNSRCMAC}" > ${CLICK_PROC}/rewriter1/ether_dst
debug "Executing echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter1/ether_src"
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter1/ether_src
debug "Executing echo \"${TSTSRC}\" > ${CLICK_PROC}/rewriter1/ip_dst"
echo "${TSTSRC}" > ${CLICK_PROC}/rewriter1/ip_dst
debug "Executing echo \"${BRNSRC}\" > ${CLICK_PROC}/rewriter1/ip_src"
echo "${BRNSRC}" > ${CLICK_PROC}/rewriter1/ip_src
debug "Executing echo \"true\" > ${CLICK_PROC}/rewriter1/active"
echo "true" > ${CLICK_PROC}/rewriter1/active
# Set up second rewriter
debug "Executing echo \"${TSTDSTMAC}\" > ${CLICK_PROC}/rewriter2/ether_dst"
echo "${TSTDSTMAC}" > ${CLICK_PROC}/rewriter2/ether_dst
debug "Executing echo \"${BRNDSTMAC}\" > ${CLICK_PROC}/rewriter2/ether_src"
echo "${BRNDSTMAC}" > ${CLICK_PROC}/rewriter2/ether_src
debug "Executing echo \"${TSTDST}\" > ${CLICK_PROC}/rewriter2/ip_dst"
echo "${TSTDST}" > ${CLICK_PROC}/rewriter2/ip_dst
debug "Executing echo \"${BRNDST}\" > ${CLICK_PROC}/rewriter2/ip_src"
echo "${BRNDST}" > ${CLICK_PROC}/rewriter2/ip_src
debug "Executing echo \"true\" > ${CLICK_PROC}/rewriter2/active"
echo "true" > ${CLICK_PROC}/rewriter2/active
ROUTESTART="`nodedb_getmac ${BRNSRC}` `nodedb_getath ${BRNSRC}`"
ROUTEEND="`nodedb_getath ${BRNDST}` `nodedb_getmac ${BRNDST}`"
ROUTEINT=""
for node in ${NODES}
do
route_host=${node}
index=`expr index "${node}" "@"`
if test 0 != ${index}
then
route_host=`echo "${node}" | awk -F@ '{print $2}'`
fi
ROUTEINT="${ROUTEINT} `nodedb_getath ${route_host}`"
done
ROUTE="${ROUTESTART} ${ROUTEINT} ${ROUTEEND}"
echo "Node3 route = $ROUTE"
echo ${ROUTE} > ${CLICK_PROC}/dsr/querier/fixed_route
#echo "00:0F:B5:3F:3E:D8 00:0F:B5:3F:1B:BF 00:0F:B5:3F:1E:EA 00:0F:B5:3F:21:3C 00:0F:B5:3F:20:D6 00:0F:B5:3F:21:60 00:0F:B5:3F:21:81 00:0F:B5:3F:58:49 00:0F:B5:3F:49:EE" > ${CLICK_PROC}/dsr/querier/fixed_route
}
#-----------------------------------------------------------------------
# Runs the given click script using the click kernel module
# For the userland version, see former versions of this file.
run_others()
{
if test ! -x ${CLICKPATH}/click-align
then
error "Could not find click-align (expected ${CLICKPATH}/click-align)."
fi
if test ! -r ${CLICK_SCRIPT}
then
error "Could not find click script (expected ${CLICK_SCRIPT})."
fi
# Clear all click
shutdown_click
# Insert modules
setup_click
# Execute the click script
debug "${CLICKPATH}/click-align ${CLICK_SCRIPT} > ${CLICK_PROC}/config"
${CLICKPATH}/click-align ${CLICK_SCRIPT} > ${CLICK_PROC}/config
sleep 8
case "${NODE}" in
"2")
run_node2
;;
"3")
run_node3
;;
esac
sleep ${TEST_ABORT}
cat ${CLICK_PROC}/errors
cat ${CLICK_PROC}/messages
echo "" > ${CLICK_PROC}/config
# Clear all click
shutdown_click
}
#-----------------------------------------------------------------------
run_test()
{
case "${NODE}" in
"0")
run_node0
;;
"1")
run_node1
;;
*)
run_others
;;
esac
}
#-----------------------------------------------------------------------
# main()
#-----------------------------------------------------------------------
# Parse parameters
while [ $# -gt 0 ]; do # Until you run out of parameters . . .
case "$1" in
-a|--brn-src)
BRNSRC="$2"
shift
;;
-b|--brn-dst)
BRNDST="$2"
shift
;;
-c|--tst-src)
TSTSRC="$2"
shift
;;
-d|--tst-dst)
TSTDST="$2"
shift
;;
--clickpath)
CLICKPATH=$2
shift
;;
--clickscript)
CLICK_SCRIPT=$2
shift
;;
--nodedb)
NODEDB=$2
shift
;;
--debug)
DEBUG="--debug"
;;
-h|--help)
usage
exit 1
;;
*)
NODES="$*"
break
;;
esac
shift # Check next set of parameters.
done
debug "Param BRNSRC=${BRNSRC}"
debug "Param BRNDST=${BRNDST}"
debug "Param TSTSRC=${TSTSRC}"
debug "Param TSTDST=${TSTDST}"
debug "Param NODEDB=${NODEDB}"
debug "Param DEBUG=${DEBUG}"
debug "Param NODES=${NODES}"
debug "Param CLICKPATH=${CLICKPATH}"
debug "Param HOST=${HOST}"
debug "Param NODE=${NODE}"
debug "Param CLICK_SCRIPT=${CLICK_SCRIPT}"
debug "Param PWD=`pwd`"
# Check parameters
if test -z ${BRNSRC}
then
error "Parameter brn-src not specified."
fi
if test -z ${BRNDST}
then
error "Parameter brn-dst not specified."
fi
if test -z ${TSTDST}
then
error "Parameter tst-src not specified."
fi
if test -z ${TSTDST}
then
error "Parameter tst-dst not specified."
fi
if test ! -r ${NODEDB}
then
error "Node-DB not found (--nodedb=...)."
fi
# Run the test
run_test
exit 0