• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SPDX-License-Identifier: GPL-2.0-or-later
2#!/bin/sh
3# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved.
4# Copyright (c) 2017-2020 Petr Vorel <pvorel@suse.cz>
5
6SERVER=
7CLIENT=
8CLIENT_EXTRA_OPTS=
9CLEANER=
10# Program number to register the services to rpcbind
11PROGNUMNOSVC=536875000
12
13TST_TESTFUNC=do_test
14TST_USAGE=usage
15TST_OPTS="c:e:s:"
16TST_SETUP=setup
17TST_CLEANUP=cleanup
18TST_PARSE_ARGS=rpc_parse_args
19TST_NEEDS_CMDS="pkill rpcinfo"
20. rpc_lib.sh
21
22usage()
23{
24	cat << EOF
25USAGE: $0 [-s sprog] -c clprog [ -e extra ]
26
27Connect to the remote host and start sprog.
28Then execute clprog and passing it the remote host value.
29
30-c clprog client program binary
31-s sprog  server program binary
32-e extra  extra client options
33EOF
34}
35
36rpc_parse_args()
37{
38	case "$1" in
39		c) CLIENT="$OPTARG" ;;
40		e) CLIENT_EXTRA_OPTS="$OPTARG" ;;
41		s) SERVER="$OPTARG" ;;
42	esac
43}
44
45setup()
46{
47	check_portmap_rpcbind
48
49	if [ -n "$SERVER" ]; then
50		CLEANER="rpc_cleaner"
51		if echo "$SERVER" | grep -q '^tirpc'; then
52			CLEANER="tirpc_cleaner"
53		fi
54	fi
55
56	[ -n "$CLIENT" ] || tst_brk TBROK "client program not set"
57	tst_check_cmds $CLIENT $SERVER || tst_brk TCONF "LTP compiled without TI-RPC support?"
58}
59
60cleanup()
61{
62	if [ "$SERVER_STARTED" ]; then
63		pkill -13 -x $SERVER
64		$CLEANER $PROGNUMNOSVC
65	fi
66}
67
68do_test()
69{
70	local i
71
72	if [ -n "$SERVER" ]; then
73		$SERVER $PROGNUMNOSVC &
74		SERVER_STARTED=1
75
76		for i in $(seq 1 10); do
77			rpcinfo -p localhost | grep -q $PROGNUMNOSVC && break
78			[ "$i" -eq 30 ] && tst_brk TBROK "server not registered"
79			tst_sleep 100ms
80		done
81	fi
82
83	EXPECT_RHOST_PASS $CLIENT $(tst_ipaddr) $PROGNUMNOSVC $CLIENT_EXTRA_OPTS
84}
85
86tst_run
87