blob: 9a8a5f1535e4acc43d10ac58d5c308b41489324b [file] [log] [blame]
#!/bin/sh
################################################################################
## ##
## Copyright (c) International Business Machines Corp., 2005 ##
## ##
## This program is free software; you can redistribute it and#or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of the License, or ##
## (at your option) any later version. ##
## ##
## This program is distributed in the hope that it will be useful, but ##
## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ##
## for more details. ##
## ##
## You should have received a copy of the GNU General Public License ##
## along with this program; if not, write to the Free Software ##
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ##
## ##
## ##
################################################################################
#
# File:
# ns-echoclient
#
# Description:
# Send various kind of echo request
#
# Author:
# Mitsuru Chinen <mitch@jp.ibm.com>
#
# Options:
# -S name or IP address of the server
# -f protocol family
# 4: IPv4
# 6: IPv6
# -s array of packet size
# -t timeout [sec]
# -h display this usage
#
# Outputs:
# Process ID of the TCP traffic server
#
# Exit Value:
# 0: Exit normally
# >0: Exit abnormally
#
# History:
# Oct 19 2005 - Created (Mitsuru Chinen)
#
#-----------------------------------------------------------------------
#Uncomment line below for debug output.
#trace_logic=${trace_logic:-"set -x"}
$trace_logic
#-----------------------------------------------------------------------
#
# Function: usage
#
# Description:
# Print the usage of this script, then exit
#
# Argument
# value: exit value
#
#-----------------------------------------------------------------------
usage(){
value=$1
cat << EOD >&2
ns-echoclient [OPTION]
-S name or IP address of the server
-f protocol family
4: IPv4
6: IPv6
-s array of packet size
-h display this usage
EOD
exit $value
}
#
# Main
#
family=0
while getopts 'S:f:s:h' opt ; do
case $opt in
'S')
server_name=$OPTARG
;;
'f')
family=$OPTARG
;;
's')
size_array="$OPTARG"
;;
'h')
usage 0
;;
*)
echo "Unknown option" >&2
usage 1
;;
esac
done
# Check the server name
if [ x$server_name = x ]; then
echo "server name isn't specified."
usage 1
fi
# Define the protocol family
case $family in
4)
ping_command="ping"
;;
6)
ping_command="ping6"
;;
*)
echo "protocol family should be 4 or 6."
usage 1
;;
esac
# Send the echo request
if [ x"$size_array" = x ]; then
$ping_command $server_name >/dev/null 2>&1 &
else
for size in $size_array ; do
$ping_command -s $size $server_name >/dev/null 2>&1 &
done
fi
exit 0