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