1f08c3bdfSopenharmony_ci#!/bin/sh
2f08c3bdfSopenharmony_ci
3f08c3bdfSopenharmony_ci################################################################################
4f08c3bdfSopenharmony_ci##                                                                            ##
5f08c3bdfSopenharmony_ci## Copyright (c) International Business Machines  Corp., 2005                 ##
6f08c3bdfSopenharmony_ci##                                                                            ##
7f08c3bdfSopenharmony_ci## This program is free software;  you can redistribute it and#or modify      ##
8f08c3bdfSopenharmony_ci## it under the terms of the GNU General Public License as published by       ##
9f08c3bdfSopenharmony_ci## the Free Software Foundation; either version 2 of the License, or          ##
10f08c3bdfSopenharmony_ci## (at your option) any later version.                                        ##
11f08c3bdfSopenharmony_ci##                                                                            ##
12f08c3bdfSopenharmony_ci## This program is distributed in the hope that it will be useful, but        ##
13f08c3bdfSopenharmony_ci## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
14f08c3bdfSopenharmony_ci## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
15f08c3bdfSopenharmony_ci## for more details.                                                          ##
16f08c3bdfSopenharmony_ci##                                                                            ##
17f08c3bdfSopenharmony_ci## You should have received a copy of the GNU General Public License          ##
18f08c3bdfSopenharmony_ci## along with this program;  if not, write to the Free Software               ##
19f08c3bdfSopenharmony_ci## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
20f08c3bdfSopenharmony_ci##                                                                            ##
21f08c3bdfSopenharmony_ci##                                                                            ##
22f08c3bdfSopenharmony_ci################################################################################
23f08c3bdfSopenharmony_ci#
24f08c3bdfSopenharmony_ci# File:
25f08c3bdfSopenharmony_ci#   ns-echoclient
26f08c3bdfSopenharmony_ci#
27f08c3bdfSopenharmony_ci# Description:
28f08c3bdfSopenharmony_ci#   Send various kind of echo request
29f08c3bdfSopenharmony_ci#
30f08c3bdfSopenharmony_ci# Author:
31f08c3bdfSopenharmony_ci#   Mitsuru Chinen <mitch@jp.ibm.com>
32f08c3bdfSopenharmony_ci#
33f08c3bdfSopenharmony_ci# Options:
34f08c3bdfSopenharmony_ci#   -S name or IP address of the server
35f08c3bdfSopenharmony_ci#   -f protocol family
36f08c3bdfSopenharmony_ci#	4: IPv4
37f08c3bdfSopenharmony_ci#	6: IPv6
38f08c3bdfSopenharmony_ci#   -s array of packet size
39f08c3bdfSopenharmony_ci#   -t timeout [sec]
40f08c3bdfSopenharmony_ci#   -h display this usage
41f08c3bdfSopenharmony_ci#
42f08c3bdfSopenharmony_ci# Outputs:
43f08c3bdfSopenharmony_ci#   Process ID of the TCP traffic server
44f08c3bdfSopenharmony_ci#
45f08c3bdfSopenharmony_ci# Exit Value:
46f08c3bdfSopenharmony_ci#    0: Exit normally
47f08c3bdfSopenharmony_ci#   >0: Exit abnormally
48f08c3bdfSopenharmony_ci#
49f08c3bdfSopenharmony_ci# History:
50f08c3bdfSopenharmony_ci#   Oct 19 2005 - Created (Mitsuru Chinen)
51f08c3bdfSopenharmony_ci#
52f08c3bdfSopenharmony_ci#-----------------------------------------------------------------------
53f08c3bdfSopenharmony_ci#Uncomment line below for debug output.
54f08c3bdfSopenharmony_ci#trace_logic=${trace_logic:-"set -x"}
55f08c3bdfSopenharmony_ci$trace_logic
56f08c3bdfSopenharmony_ci
57f08c3bdfSopenharmony_ci#-----------------------------------------------------------------------
58f08c3bdfSopenharmony_ci#
59f08c3bdfSopenharmony_ci# Function: usage
60f08c3bdfSopenharmony_ci#
61f08c3bdfSopenharmony_ci# Description:
62f08c3bdfSopenharmony_ci#   Print the usage of this script, then exit
63f08c3bdfSopenharmony_ci#
64f08c3bdfSopenharmony_ci# Argument
65f08c3bdfSopenharmony_ci#   value: exit value
66f08c3bdfSopenharmony_ci#
67f08c3bdfSopenharmony_ci#-----------------------------------------------------------------------
68f08c3bdfSopenharmony_ciusage(){
69f08c3bdfSopenharmony_ci    value=$1
70f08c3bdfSopenharmony_ci    cat << EOD >&2
71f08c3bdfSopenharmony_cins-echoclient [OPTION]
72f08c3bdfSopenharmony_ci	-S name or IP address of the server
73f08c3bdfSopenharmony_ci	-f protocol family
74f08c3bdfSopenharmony_ci		4: IPv4
75f08c3bdfSopenharmony_ci		6: IPv6
76f08c3bdfSopenharmony_ci	-s array of packet size
77f08c3bdfSopenharmony_ci	-h display this usage
78f08c3bdfSopenharmony_ciEOD
79f08c3bdfSopenharmony_ci
80f08c3bdfSopenharmony_ci    exit $value
81f08c3bdfSopenharmony_ci}
82f08c3bdfSopenharmony_ci
83f08c3bdfSopenharmony_ci
84f08c3bdfSopenharmony_ci#
85f08c3bdfSopenharmony_ci# Main
86f08c3bdfSopenharmony_ci#
87f08c3bdfSopenharmony_ci
88f08c3bdfSopenharmony_cifamily=0
89f08c3bdfSopenharmony_ci
90f08c3bdfSopenharmony_ciwhile getopts 'S:f:s:h' opt ; do
91f08c3bdfSopenharmony_ci    case $opt in
92f08c3bdfSopenharmony_ci	'S')
93f08c3bdfSopenharmony_ci	server_name=$OPTARG
94f08c3bdfSopenharmony_ci	;;
95f08c3bdfSopenharmony_ci	'f')
96f08c3bdfSopenharmony_ci	family=$OPTARG
97f08c3bdfSopenharmony_ci	;;
98f08c3bdfSopenharmony_ci	's')
99f08c3bdfSopenharmony_ci	size_array="$OPTARG"
100f08c3bdfSopenharmony_ci	;;
101f08c3bdfSopenharmony_ci	'h')
102f08c3bdfSopenharmony_ci	usage 0
103f08c3bdfSopenharmony_ci	;;
104f08c3bdfSopenharmony_ci	*)
105f08c3bdfSopenharmony_ci	echo "Unknown option" >&2
106f08c3bdfSopenharmony_ci	usage 1
107f08c3bdfSopenharmony_ci	;;
108f08c3bdfSopenharmony_ci    esac
109f08c3bdfSopenharmony_cidone
110f08c3bdfSopenharmony_ci
111f08c3bdfSopenharmony_ci# Check the server name
112f08c3bdfSopenharmony_ciif [ x$server_name = x ]; then
113f08c3bdfSopenharmony_ci    echo "server name isn't specified."
114f08c3bdfSopenharmony_ci    usage 1
115f08c3bdfSopenharmony_cifi
116f08c3bdfSopenharmony_ci
117f08c3bdfSopenharmony_ci# Define the protocol family
118f08c3bdfSopenharmony_cicase $family in
119f08c3bdfSopenharmony_ci    4)
120f08c3bdfSopenharmony_ci    ping_command="ping"
121f08c3bdfSopenharmony_ci    ;;
122f08c3bdfSopenharmony_ci    6)
123f08c3bdfSopenharmony_ci    ping_command="ping6"
124f08c3bdfSopenharmony_ci    ;;
125f08c3bdfSopenharmony_ci    *)
126f08c3bdfSopenharmony_ci    echo "protocol family should be 4 or 6."
127f08c3bdfSopenharmony_ci    usage 1
128f08c3bdfSopenharmony_ci    ;;
129f08c3bdfSopenharmony_ciesac
130f08c3bdfSopenharmony_ci
131f08c3bdfSopenharmony_ci# Send the echo request
132f08c3bdfSopenharmony_ciif [ x"$size_array" = x ]; then
133f08c3bdfSopenharmony_ci    $ping_command $server_name >/dev/null 2>&1 &
134f08c3bdfSopenharmony_cielse
135f08c3bdfSopenharmony_ci    for size in $size_array ; do
136f08c3bdfSopenharmony_ci	$ping_command -s $size $server_name >/dev/null 2>&1 &
137f08c3bdfSopenharmony_ci    done
138f08c3bdfSopenharmony_cifi
139f08c3bdfSopenharmony_ci
140f08c3bdfSopenharmony_ciexit 0
141