95 lines
1.8 KiB
Bash
Executable File
95 lines
1.8 KiB
Bash
Executable File
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#!/bin/sh
|
|
# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved.
|
|
# Copyright (c) 2017-2020 Petr Vorel <pvorel@suse.cz>
|
|
|
|
SERVER=
|
|
CLIENT=
|
|
CLIENT_EXTRA_OPTS=
|
|
CLEANER=
|
|
# Program number to register the services to rpcbind
|
|
PROGNUMNOSVC=536875000
|
|
|
|
TST_TESTFUNC=do_test
|
|
TST_USAGE=usage
|
|
TST_OPTS="c:e:s:"
|
|
TST_SETUP=setup
|
|
TST_CLEANUP=cleanup
|
|
TST_PARSE_ARGS=rpc_parse_args
|
|
TST_NEEDS_CMDS="pkill rpcinfo"
|
|
. rpc_lib.sh
|
|
|
|
usage()
|
|
{
|
|
cat << EOF
|
|
USAGE: $0 [-s sprog] -c clprog [ -e extra ]
|
|
|
|
Connect to the remote host and start sprog.
|
|
Then execute clprog and passing it the remote host value.
|
|
|
|
-c clprog client program binary
|
|
-s sprog server program binary
|
|
-e extra extra client options
|
|
EOF
|
|
}
|
|
|
|
rpc_parse_args()
|
|
{
|
|
case "$1" in
|
|
c) CLIENT="$OPTARG" ;;
|
|
e) tst_check_cmds sed
|
|
CLIENT_EXTRA_OPTS="$(echo $OPTARG | sed 's/,/ /')" ;;
|
|
s) SERVER="$OPTARG" ;;
|
|
esac
|
|
}
|
|
|
|
setup()
|
|
{
|
|
check_portmap_rpcbind
|
|
|
|
if [ -n "$SERVER" ]; then
|
|
CLEANER="rpc_cleaner"
|
|
if echo "$SERVER" | grep -q '^tirpc'; then
|
|
CLEANER="tirpc_cleaner"
|
|
fi
|
|
fi
|
|
|
|
[ -n "$CLIENT" ] || tst_brk TBROK "client program not set"
|
|
tst_check_cmds $CLIENT $SERVER || tst_brk TCONF "LTP compiled without TI-RPC support?"
|
|
|
|
tst_cmd_available ldd which || return
|
|
if ldd $(which $CLIENT) |grep -q /libtirpc\.so; then
|
|
tst_res TINFO "using libtirpc: yes"
|
|
else
|
|
tst_res TINFO "using libtirpc: no (probably using glibc)"
|
|
fi
|
|
}
|
|
|
|
cleanup()
|
|
{
|
|
if [ "$SERVER_STARTED" ]; then
|
|
pkill -13 -x $SERVER
|
|
$CLEANER $PROGNUMNOSVC
|
|
fi
|
|
}
|
|
|
|
do_test()
|
|
{
|
|
local i
|
|
|
|
if [ -n "$SERVER" ]; then
|
|
$SERVER $PROGNUMNOSVC &
|
|
SERVER_STARTED=1
|
|
|
|
for i in $(seq 1 10); do
|
|
rpcinfo -p localhost | grep -q $PROGNUMNOSVC && break
|
|
[ "$i" -eq 30 ] && tst_brk TBROK "server not registered"
|
|
tst_sleep 100ms
|
|
done
|
|
fi
|
|
|
|
EXPECT_RHOST_PASS $CLIENT $(tst_ipaddr) $PROGNUMNOSVC $CLIENT_EXTRA_OPTS
|
|
}
|
|
|
|
tst_run
|