1c864960ed4bfa8d119afbc1a7f92be5ca590ec89subrata_modak#!/bin/sh
2fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj################################################################################
3fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj##                                                                            ##
4fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## Copyright (c) International Business Machines  Corp., 2001                 ##
5fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj##                                                                            ##
6fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## This program is free software;  you can redistribute it and#or modify      ##
7fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## it under the terms of the GNU General Public License as published by       ##
8fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## the Free Software Foundation; either version 2 of the License, or          ##
9fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## (at your option) any later version.                                        ##
10fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj##                                                                            ##
11fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## This program is distributed in the hope that it will be useful, but        ##
12fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
13fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
14fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## for more details.                                                          ##
15fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj##                                                                            ##
16fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## You should have received a copy of the GNU General Public License          ##
17fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## along with this program;  if not, write to the Free Software               ##
184548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
19fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj##                                                                            ##
20fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj################################################################################
21fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
22fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# File :         xinetd_tests.sh
23fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
24fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description:   Test Basic functionality of xinetd command.
25fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#                Test #1: xinetd starts programs that provide Internet services.
26fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
27fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Author:        Manoj Iyer, manjo@mail.utexas.edu
28fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
29fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# History:       Mar 04 2003 - Created - Manoj Iyer.
30fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
31fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function:     chk_ifexists
32fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
33fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description:  - Check if command required for this test exits.
34fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
35fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Input:        - $1 - calling test case.
36fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - $2 - command that needs to be checked.
3737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#
38fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return:       - zero on success.
39fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - non-zero on failure.
40fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojchk_ifexists()
41fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{
42a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    which $2 > $LTPTMP/tst_xinetd.err 2>&1
43a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
44fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
45fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
46fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brkm TBROK NULL "$1: command $2 not found."
47fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
48fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    return $RC
49fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj}
50fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
51fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
52fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: init
53fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
54fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description:  - Check if command required for this test exits.
5537550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#               - Create temporary directories required for this test.
56fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - Initialize global variables.
5737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#
58fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return:       - zero on success.
59fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - non-zero on failure.
60fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojinit()
61fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{
62fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # Initialize global variables.
63fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    export TST_TOTAL=2
64fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    export TCID="xinetd"
65fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    export TST_COUNT=0
667ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu    . daemonlib.sh
67fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
6854305b281dbcad520eae016d13e85d5142574611Alexey Kodanev    if [ -f "/usr/lib/systemd/system/telnet.socket" ]; then
6954305b281dbcad520eae016d13e85d5142574611Alexey Kodanev        tst_brkm TCONF NULL "xinetd doesn't manage telnet"
7054305b281dbcad520eae016d13e85d5142574611Alexey Kodanev        exit $?
7154305b281dbcad520eae016d13e85d5142574611Alexey Kodanev    fi
7254305b281dbcad520eae016d13e85d5142574611Alexey Kodanev
73fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # Inititalize cleanup function.
74fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    trap "cleanup" 0
75fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
76fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # create the temporary directory used by this testcase
77fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ -z $TMP ]
78fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
79fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        LTPTMP=/tmp/tst_xinetd.$$
80fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    else
81fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        LTPTMP=$TMP/tst_xinetd.$$
82fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
83fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
84a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    mkdir -p $LTPTMP > /dev/null 2>&1
85a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
86fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
87fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
88fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj         tst_brkm TBROK NULL "INIT: Unable to create temporary directory"
89fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj         return $RC
90fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
91fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
92d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    # sometimes the default telnet may be /usr/kerberos/bin/telnet
93d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    TELNET_COMM='/usr/bin/telnet'
94d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
95fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # check if commands tst_*, xinetd, awk exists.
96fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    chk_ifexists INIT tst_resm   || return $RC
97fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    chk_ifexists INIT xinetd     || return $RC
98fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    chk_ifexists INIT diff       || return $RC
99d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    chk_ifexists INIT ip         || return $RC
100d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    chk_ifexists INIT $TELNET_COMM || return $RC
101d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
102d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    IPV6_ENABLED=0
103d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    ip a | grep inet6 > /dev/null 2>&1
104d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    if [ $? -eq 0 ]
105d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    then
106d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        IPV6_ENABLED=1
107d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    fi
108fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
1093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # Create custom xinetd.conf file.
1103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # tst_xinetd.conf.1 config file has telnet service disabled.
111a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    cat > $LTPTMP/tst_xinetd.conf.1 <<-EOF
1123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults
1133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{
1143db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    instances      = 25
1153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    log_type       = FILE /var/log/servicelog
1163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    log_on_success = HOST PID
117a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    log_on_failure = HOST
1183db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    disabled       = telnet
1193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun}
1203db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF
121a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
1223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
1233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # tst_xinetd.conf.2 config file has telnet enabled.
124a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    cat > $LTPTMP/tst_xinetd.conf.2 <<-EOF
1253db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults
1263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{
1273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    instances      = 25
1283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    log_type       = FILE /var/log/servicelog
1293db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    log_on_success = HOST PID
1303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    log_on_failure = HOST
1313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # disabled       = telnet
1323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun}
1333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
1343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyunservice telnet
1353db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{
1363db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    socket_type     = stream
1373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    protocol        = tcp
1383db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    wait            = no
1393db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    user            = root
1403db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    server          = /usr/sbin/in.telnetd
1413db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    server_args     = -n
1423db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    no_access       =
14373469b59c5f779cdfb9ecd9f2fb5e2cb262f0341Simon Xu    flags           = IPv6
1443db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun}
1453db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF
146a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
147fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
148fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # Create expected file with telnet disabled.
149a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    cat > $LTPTMP/tst_xinetd.exp.1 <<-EOF
150d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address 127.0.0.1: Connection refused
1513db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF
152a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
153fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
154fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
155fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
156fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brkm TBROK  NULL \
157fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1"
158fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
159fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
160fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
161d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    if [ $IPV6_ENABLED -eq 1 ]
162d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    then
163a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        cat > $LTPTMP/tst_xinetd.exp.1.ipv6 <<-EOF
164d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address ::1: Connection refused
165d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF
166a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
167d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
168d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        if [ $RC -ne 0 ]
169d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        then
170d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            tst_brkm TBROK NULL \
171d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun                "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1"
172d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        fi
173d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    fi
174d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
175fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # Create expected file with telnet enabled.
176a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    cat > $LTPTMP/tst_xinetd.exp.2 <<-EOF
1773db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunTrying 127.0.0.1...
178d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to 127.0.0.1.
1793db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEscape character is '^]'.
1803db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunConnection closed by foreign host.
1813db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF
182a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
183fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
184fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
185fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
186fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brkm TBROK  NULL \
187d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2"
188fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
189fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
190fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
191d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    if [ $IPV6_ENABLED -eq 1 ]
192d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    then
193a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        cat > $LTPTMP/tst_xinetd.exp.2.ipv6 <<-EOF
194d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunTrying ::1...
195d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to ::1.
196d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEscape character is '^]'.
197d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnection closed by foreign host.
198d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF
199a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$?
200d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
201d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        if [ $RC -ne 0 ]
202d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        then
203d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            tst_brkm TBROK NULL \
204d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun                "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2.ipv6"
205d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        fi
206d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    fi
207d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
208fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    return $RC
209fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj}
210fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
211fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
212fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function:     cleanup
213fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
21437550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Description:  - remove temporaty files and directories.
215fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
216fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return:       - zero on success.
217fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - non-zero on failure.
218fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojcleanup()
219fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{
2203db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # restore the original xinetd.conf if a back up exits.
2213db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    if [ -f /etc/xinetd.conf.orig ]
2223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    then
2233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        mv /etc/xinetd.conf.orig /etc/xinetd.conf \
224a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu            > $LTPTMP/tst_xinetd.err 2>&1
225a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
2263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        if [ $RC -ne 0 ]
2273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        then
2283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_res TINFO $LTPTMP/tst_xinetd.err \
2293db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            "CLEANUP: failed restoring original xinetd.conf RC=$RC. Details:"
2303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        fi
2313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
2323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        sleep 1s
2333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
2343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        # restoring original services
2357ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu        restart_daemon xinetd > $LTPTMP/tst_xinetd.err 2>&1
236a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
2373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        if [ $RC -ne 0 ]
2383db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        then
2393db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_res TINFO $LTPTMP/tst_xinetd.err \
2403db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            "CLEANUP: failed restoring original services RC=$RC. Details:"
2413db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        fi
2423db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    fi
243fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
244fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    # remove all the temporary files created by this test.
245fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    tst_resm TINFO "CLEAN: removing $LTPTMP"
246fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    rm -fr $LTPTMP
247fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj}
248fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
249fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
250fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function:     test01
251fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
252fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description:  - Test that xinetd reads the configuration file and starts or
253fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#                 stops services.
254fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - restart xinetd with configuration file with telnet disabled.
255fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - telnet to locahost should fail.
256fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - restart xinetd with configuration file with telnet enabled.
257fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - telnet to locahost should work.
25837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#
259fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return:       - zero on success.
260fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - non-zero on failure.
261fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01()
262fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{
263fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    TCID=xinetd01
264fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    TST_COUNT=1
265fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    nhops=0             # Number of hops required to get to host.
266fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
267fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    tst_resm TINFO "Test #1: restart xinetd with telnet disabled."
26837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
2693db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # create a backup of the original xinetd.conf file.
270a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    mv /etc/xinetd.conf /etc/xinetd.conf.orig > $LTPTMP/tst_xinetd.err 2>&1
271a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
272fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
273fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
274fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \
275fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: Failed while backing up original xinetd.conf. Details"
276fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
277fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
278fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
2793db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # install the new config file with telnet disabled.
280a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    mv $LTPTMP/tst_xinetd.conf.1 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1
281a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
282fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
283fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
284fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \
285fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: Failed installing new xinetd.conf in /etc. Details:"
286fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
287fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
288fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
289fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    tst_resm TINFO "Test #1: new xinetd.conf installed with telnet disabled."
290fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
2913db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    sleep 1s
292fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
2933db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # restart xinetd to re-start the services
2947ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu    restart_daemon xinetd > $LTPTMP/tst_xinetd.out 2>&1
295a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
296fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
297fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
298fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_res TFAIL $LTPTMP/tst_xinetd.out \
299fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj       "Test #1: unable to restart service with telnet disabled. Details:"
300fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
3013db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    else
3023db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        # even if xinetd restart has zero exit value,
3033db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        # make certain there was no failure.
304a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1
305a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
3063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        if [ $RC -eq 0 ]
3073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        then
3083db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_res TFAIL $LTPTMP/tst_xinetd.err \
3093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun                "Test #1: xinetd failed to restart. Details"
3103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            return $RC
3113db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        else
3123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            RC=0
3133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_resm TINFO \
3143db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun                "Test #1: xinetd re-started successfully with telnet disabled."
3153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        fi
3163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    fi
3173db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
3183db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # Not checking for exit code from telnet command because telnet is
3193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # not terminated by the test gracefully.
320d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    if [ $IPV6_ENABLED -eq 1 ]
321d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    then
322491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu        tst_retry "echo '' | $TELNET_COMM ::1 2>$LTPTMP/tst_xinetd.out.ipv6 \
323491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu            1>/dev/null"
324d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        diff -iwB $LTPTMP/tst_xinetd.out.ipv6  $LTPTMP/tst_xinetd.exp.1.ipv6 \
325a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu            > $LTPTMP/tst_xinetd.err.ipv6 2>&1
326a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
327d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        if [ $RC -ne 0 ]
328d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        then
329d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \
330d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun                "Test #1: with telnet diabled expected out differs RC=$RC. Details:"
331d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            return $RC
332d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        fi
333d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    fi
334d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
335491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu    tst_retry "echo "" | $TELNET_COMM 127.0.0.1 2>$LTPTMP/tst_xinetd.out \
336491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu        1>/dev/null"
3373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    diff -iwB $LTPTMP/tst_xinetd.out  $LTPTMP/tst_xinetd.exp.1 \
338a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        > $LTPTMP/tst_xinetd.err 2>&1
339a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
340fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
341fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
342fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_res TFAIL $LTPTMP/tst_xinetd.err \
343fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: with telnet diabled expected out differs RC=$RC. Details:"
344fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
345fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
346fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
347fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    tst_resm TINFO "Test #1: restart xinetd with telnet enabled."
3483db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # install the xinetd config file with telnet enabled.
349a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    mv $LTPTMP/tst_xinetd.conf.2 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1
350a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
351fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
352fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
353fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \
354fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: Failed installing new xinetd.conf in /etc. Details:"
355fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
356fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
357fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
358fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    tst_resm TINFO "Test #1: new xinetd.conf installed with telnet enabled."
35937550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
3603db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    sleep 1s
361fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
3623db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # restart services.
3637ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu    restart_daemon xinetd > $LTPTMP/tst_xinetd.out 2>&1
364a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
365fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
366fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
367fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_res TFAIL $LTPTMP/tst_xinetd.out \
368fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: unable to restart services with telnet enabled. Details:"
369fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
3703db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    else
3713db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        # even if restart has a zero exit value double check for failure.
372a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1
373a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
3743db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        if [ $RC -eq 0 ]
3753db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        then
3763db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_res TFAIL $LTPTMP/tst_xinetd.err \
3773db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun                "Test #1: xinetd failed to restart. Details"
3783db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            return $RC
3793db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        else
3803db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            RC=0
3813db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun            tst_resm TINFO \
3823db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun                "Test #1: xinetd re-started successfully with telnet enabled."
3833db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        fi
3843db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    fi
3853db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
3863db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # Not checking for exit code from telnet command because telnet is
3873db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    # not terminated by the test gracefully.
388d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    if [ $IPV6_ENABLED -eq 1 ]
389d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    then
390491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu        tst_retry "echo '' | $TELNET_COMM ::1 2>$LTPTMP/tst_xinetd.out.ipv6 2>&1"
391d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        diff -iwB $LTPTMP/tst_xinetd.out.ipv6  $LTPTMP/tst_xinetd.exp.2.ipv6 \
392a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu            > $LTPTMP/tst_xinetd.err.ipv6 2>&1
393a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        RC=$?
394d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        if [ $RC -ne 0 ]
395d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        then
396d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \
397d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun                "Test #1: with telnet diabled expected out differs RC=$RC. Details:"
398d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            return $RC
399d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        else
400d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            tst_resm TPASS \
401d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun            "Test #1: xinetd reads the config file and starts or stops IPv6 services."
402d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun        fi
403d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun    fi
404d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun
405491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu    test_retry "echo '' | $TELNET_COMM 127.0.0.1 2>$LTPTMP/tst_xinetd.out 2>&1"
4063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun
4073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    diff -iwB $LTPTMP/tst_xinetd.out  $LTPTMP/tst_xinetd.exp.2 \
408a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu        > $LTPTMP/tst_xinetd.err 2>&1
409a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu    RC=$?
410fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    if [ $RC -ne 0 ]
411fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    then
412fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        tst_res TFAIL $LTPTMP/tst_xinetd.err \
413fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj            "Test #1: expected output differes from actual. Details:"
414fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj        return $RC
4153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun    else
4163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        tst_resm TPASS \
4173db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun        "Test #1: xinetd reads the config file and starts or stops services."
418fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj    fi
419fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
42037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman    return $RC
421fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj}
422fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
423fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
424fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function:    main
425fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
426fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description:    - Execute all tests and report results.
427fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#
42837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Exit:            - zero on success
429fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj#               - non-zero on failure.
430fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
431fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojinit || exit $?
432fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
433fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01 || RC=$?
434fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj
435fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojexit $RC
436