xref: /freebsd/usr.sbin/rpc.statd/test.c (revision df82e9ba02c7ea6099480b44d09a741c4293ba62)
1df82e9baSPhilippe Charnier 
2df82e9baSPhilippe Charnier #ifndef lint
3df82e9baSPhilippe Charnier static const char rcsid[] =
4df82e9baSPhilippe Charnier 	"$Id$";
5df82e9baSPhilippe Charnier #endif /* not lint */
6df82e9baSPhilippe Charnier 
71494289fSPeter Wemm #include <stdio.h>
81494289fSPeter Wemm #include <rpc/rpc.h>
91494289fSPeter Wemm #include <rpcsvc/sm_inter.h>
101494289fSPeter Wemm 
111494289fSPeter Wemm 
121494289fSPeter Wemm /* Default timeout can be changed using clnt_control() */
131494289fSPeter Wemm static struct timeval TIMEOUT = { 25, 0 };
141494289fSPeter Wemm 
151494289fSPeter Wemm struct sm_stat_res *
161494289fSPeter Wemm sm_stat_1(argp, clnt)
171494289fSPeter Wemm 	struct sm_name *argp;
181494289fSPeter Wemm 	CLIENT *clnt;
191494289fSPeter Wemm {
201494289fSPeter Wemm 	static struct sm_stat_res res;
211494289fSPeter Wemm 
221494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
231494289fSPeter Wemm 	if (clnt_call(clnt, SM_STAT, xdr_sm_name, argp, xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) {
241494289fSPeter Wemm 		return (NULL);
251494289fSPeter Wemm 	}
261494289fSPeter Wemm 	return (&res);
271494289fSPeter Wemm }
281494289fSPeter Wemm 
291494289fSPeter Wemm 
301494289fSPeter Wemm struct sm_stat_res *
311494289fSPeter Wemm sm_mon_1(argp, clnt)
321494289fSPeter Wemm 	struct mon *argp;
331494289fSPeter Wemm 	CLIENT *clnt;
341494289fSPeter Wemm {
351494289fSPeter Wemm 	static struct sm_stat_res res;
361494289fSPeter Wemm 
371494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
381494289fSPeter Wemm 	if (clnt_call(clnt, SM_MON, xdr_mon, argp, xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) {
391494289fSPeter Wemm 		return (NULL);
401494289fSPeter Wemm 	}
411494289fSPeter Wemm 	return (&res);
421494289fSPeter Wemm }
431494289fSPeter Wemm 
441494289fSPeter Wemm 
451494289fSPeter Wemm struct sm_stat *
461494289fSPeter Wemm sm_unmon_1(argp, clnt)
471494289fSPeter Wemm 	struct mon_id *argp;
481494289fSPeter Wemm 	CLIENT *clnt;
491494289fSPeter Wemm {
501494289fSPeter Wemm 	static struct sm_stat res;
511494289fSPeter Wemm 
521494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
531494289fSPeter Wemm 	if (clnt_call(clnt, SM_UNMON, xdr_mon_id, argp, xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) {
541494289fSPeter Wemm 		return (NULL);
551494289fSPeter Wemm 	}
561494289fSPeter Wemm 	return (&res);
571494289fSPeter Wemm }
581494289fSPeter Wemm 
591494289fSPeter Wemm 
601494289fSPeter Wemm struct sm_stat *
611494289fSPeter Wemm sm_unmon_all_1(argp, clnt)
621494289fSPeter Wemm 	struct my_id *argp;
631494289fSPeter Wemm 	CLIENT *clnt;
641494289fSPeter Wemm {
651494289fSPeter Wemm 	static struct sm_stat res;
661494289fSPeter Wemm 
671494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
681494289fSPeter Wemm 	if (clnt_call(clnt, SM_UNMON_ALL, xdr_my_id, argp, xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) {
691494289fSPeter Wemm 		return (NULL);
701494289fSPeter Wemm 	}
711494289fSPeter Wemm 	return (&res);
721494289fSPeter Wemm }
731494289fSPeter Wemm 
741494289fSPeter Wemm 
751494289fSPeter Wemm void *
761494289fSPeter Wemm sm_simu_crash_1(argp, clnt)
771494289fSPeter Wemm 	void *argp;
781494289fSPeter Wemm 	CLIENT *clnt;
791494289fSPeter Wemm {
801494289fSPeter Wemm 	static char res;
811494289fSPeter Wemm 
821494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
831494289fSPeter Wemm 	if (clnt_call(clnt, SM_SIMU_CRASH, xdr_void, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
841494289fSPeter Wemm 		return (NULL);
851494289fSPeter Wemm 	}
861494289fSPeter Wemm 	return ((void *)&res);
871494289fSPeter Wemm }
881494289fSPeter Wemm 
891494289fSPeter Wemm 
901494289fSPeter Wemm int main(int argc, char **argv)
911494289fSPeter Wemm {
921494289fSPeter Wemm   CLIENT *cli;
931494289fSPeter Wemm   char dummy;
941494289fSPeter Wemm   void *out;
951494289fSPeter Wemm   struct mon mon;
961494289fSPeter Wemm 
971494289fSPeter Wemm   if (argc < 2)
981494289fSPeter Wemm   {
991494289fSPeter Wemm     fprintf(stderr, "usage: test <hostname> | crash\n");
100df82e9baSPhilippe Charnier     fprintf(stderr, "always talks to statd at localhost\n");
1011494289fSPeter Wemm     exit(1);
1021494289fSPeter Wemm   }
1031494289fSPeter Wemm 
1041494289fSPeter Wemm   printf("Creating client for localhost\n" );
1051494289fSPeter Wemm   cli = clnt_create("localhost", SM_PROG, SM_VERS, "udp");
1061494289fSPeter Wemm   if (!cli)
1071494289fSPeter Wemm   {
1081494289fSPeter Wemm     printf("Failed to create client\n");
1091494289fSPeter Wemm     exit(1);
1101494289fSPeter Wemm   }
1111494289fSPeter Wemm 
1121494289fSPeter Wemm   mon.mon_id.mon_name = argv[1];
1131494289fSPeter Wemm   mon.mon_id.my_id.my_name = argv[1];
1141494289fSPeter Wemm   mon.mon_id.my_id.my_prog = SM_PROG;
1151494289fSPeter Wemm   mon.mon_id.my_id.my_vers = SM_VERS;
1161494289fSPeter Wemm   mon.mon_id.my_id.my_proc = 1;	/* have it call sm_stat() !!!	*/
1171494289fSPeter Wemm 
1181494289fSPeter Wemm   if (strcmp(argv[1], "crash"))
1191494289fSPeter Wemm   {
1201494289fSPeter Wemm     /* Hostname given		*/
1211494289fSPeter Wemm     struct sm_stat_res *res;
1221494289fSPeter Wemm     if (res = sm_mon_1(&mon, cli))
1231494289fSPeter Wemm     {
1241494289fSPeter Wemm       printf("Success!\n");
1251494289fSPeter Wemm     }
1261494289fSPeter Wemm     else
1271494289fSPeter Wemm     {
1281494289fSPeter Wemm       printf("Fail\n");
1291494289fSPeter Wemm     }
1301494289fSPeter Wemm   }
1311494289fSPeter Wemm   else
1321494289fSPeter Wemm   {
1331494289fSPeter Wemm     if (out = sm_simu_crash_1(&dummy, cli))
1341494289fSPeter Wemm     {
1351494289fSPeter Wemm       printf("Success!\n");
1361494289fSPeter Wemm     }
1371494289fSPeter Wemm     else
1381494289fSPeter Wemm     {
1391494289fSPeter Wemm       printf("Fail\n");
1401494289fSPeter Wemm     }
1411494289fSPeter Wemm   }
1421494289fSPeter Wemm 
1431494289fSPeter Wemm   return 0;
1441494289fSPeter Wemm }
145