xref: /freebsd/usr.sbin/rpc.statd/test.c (revision 685e059d948f77d33a05d7eaece0fe155ba897f4)
1df82e9baSPhilippe Charnier #ifndef lint
2df82e9baSPhilippe Charnier static const char rcsid[] =
397d92980SPeter Wemm   "$FreeBSD$";
4df82e9baSPhilippe Charnier #endif /* not lint */
5df82e9baSPhilippe Charnier 
61494289fSPeter Wemm #include <stdio.h>
7*685e059dSHiroki Sato #include <stdlib.h>
8*685e059dSHiroki Sato #include <string.h>
91494289fSPeter Wemm #include <rpc/rpc.h>
101494289fSPeter Wemm #include <rpcsvc/sm_inter.h>
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));
23*685e059dSHiroki Sato 	if (clnt_call(clnt, SM_STAT, (xdrproc_t)xdr_sm_name, argp,
24*685e059dSHiroki Sato 	    (xdrproc_t)xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) {
251494289fSPeter Wemm 		return (NULL);
261494289fSPeter Wemm 	}
271494289fSPeter Wemm 	return (&res);
281494289fSPeter Wemm }
291494289fSPeter Wemm 
301494289fSPeter Wemm 
311494289fSPeter Wemm struct sm_stat_res *
321494289fSPeter Wemm sm_mon_1(argp, clnt)
331494289fSPeter Wemm 	struct mon *argp;
341494289fSPeter Wemm 	CLIENT *clnt;
351494289fSPeter Wemm {
361494289fSPeter Wemm 	static struct sm_stat_res res;
371494289fSPeter Wemm 
381494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
39*685e059dSHiroki Sato 	if (clnt_call(clnt, SM_MON, (xdrproc_t)xdr_mon, argp,
40*685e059dSHiroki Sato 	    (xdrproc_t)xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) {
411494289fSPeter Wemm 		return (NULL);
421494289fSPeter Wemm 	}
431494289fSPeter Wemm 	return (&res);
441494289fSPeter Wemm }
451494289fSPeter Wemm 
461494289fSPeter Wemm 
471494289fSPeter Wemm struct sm_stat *
481494289fSPeter Wemm sm_unmon_1(argp, clnt)
491494289fSPeter Wemm 	struct mon_id *argp;
501494289fSPeter Wemm 	CLIENT *clnt;
511494289fSPeter Wemm {
521494289fSPeter Wemm 	static struct sm_stat res;
531494289fSPeter Wemm 
541494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
55*685e059dSHiroki Sato 	if (clnt_call(clnt, SM_UNMON, (xdrproc_t)xdr_mon_id, argp,
56*685e059dSHiroki Sato 	    (xdrproc_t)xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) {
571494289fSPeter Wemm 		return (NULL);
581494289fSPeter Wemm 	}
591494289fSPeter Wemm 	return (&res);
601494289fSPeter Wemm }
611494289fSPeter Wemm 
621494289fSPeter Wemm 
631494289fSPeter Wemm struct sm_stat *
641494289fSPeter Wemm sm_unmon_all_1(argp, clnt)
651494289fSPeter Wemm 	struct my_id *argp;
661494289fSPeter Wemm 	CLIENT *clnt;
671494289fSPeter Wemm {
681494289fSPeter Wemm 	static struct sm_stat res;
691494289fSPeter Wemm 
701494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
71*685e059dSHiroki Sato 	if (clnt_call(clnt, SM_UNMON_ALL, (xdrproc_t)xdr_my_id, argp,
72*685e059dSHiroki Sato 	    (xdrproc_t)xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) {
731494289fSPeter Wemm 		return (NULL);
741494289fSPeter Wemm 	}
751494289fSPeter Wemm 	return (&res);
761494289fSPeter Wemm }
771494289fSPeter Wemm 
781494289fSPeter Wemm 
791494289fSPeter Wemm void *
801494289fSPeter Wemm sm_simu_crash_1(argp, clnt)
811494289fSPeter Wemm 	void *argp;
821494289fSPeter Wemm 	CLIENT *clnt;
831494289fSPeter Wemm {
841494289fSPeter Wemm 	static char res;
851494289fSPeter Wemm 
861494289fSPeter Wemm 	bzero((char *)&res, sizeof(res));
87*685e059dSHiroki Sato 	if (clnt_call(clnt, SM_SIMU_CRASH, (xdrproc_t)xdr_void, argp,
88*685e059dSHiroki Sato 	    (xdrproc_t)xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
891494289fSPeter Wemm 		return (NULL);
901494289fSPeter Wemm 	}
911494289fSPeter Wemm 	return ((void *)&res);
921494289fSPeter Wemm }
931494289fSPeter Wemm 
941494289fSPeter Wemm 
951494289fSPeter Wemm int main(int argc, char **argv)
961494289fSPeter Wemm {
971494289fSPeter Wemm   CLIENT *cli;
981494289fSPeter Wemm   char dummy;
991494289fSPeter Wemm   void *out;
1001494289fSPeter Wemm   struct mon mon;
1011494289fSPeter Wemm 
1021494289fSPeter Wemm   if (argc < 2)
1031494289fSPeter Wemm   {
1041494289fSPeter Wemm     fprintf(stderr, "usage: test <hostname> | crash\n");
105df82e9baSPhilippe Charnier     fprintf(stderr, "always talks to statd at localhost\n");
1061494289fSPeter Wemm     exit(1);
1071494289fSPeter Wemm   }
1081494289fSPeter Wemm 
1091494289fSPeter Wemm   printf("Creating client for localhost\n" );
1101494289fSPeter Wemm   cli = clnt_create("localhost", SM_PROG, SM_VERS, "udp");
1111494289fSPeter Wemm   if (!cli)
1121494289fSPeter Wemm   {
1131494289fSPeter Wemm     printf("Failed to create client\n");
1141494289fSPeter Wemm     exit(1);
1151494289fSPeter Wemm   }
1161494289fSPeter Wemm 
1171494289fSPeter Wemm   mon.mon_id.mon_name = argv[1];
1181494289fSPeter Wemm   mon.mon_id.my_id.my_name = argv[1];
1191494289fSPeter Wemm   mon.mon_id.my_id.my_prog = SM_PROG;
1201494289fSPeter Wemm   mon.mon_id.my_id.my_vers = SM_VERS;
1211494289fSPeter Wemm   mon.mon_id.my_id.my_proc = 1;	/* have it call sm_stat() !!!	*/
1221494289fSPeter Wemm 
1231494289fSPeter Wemm   if (strcmp(argv[1], "crash"))
1241494289fSPeter Wemm   {
1251494289fSPeter Wemm     /* Hostname given		*/
1261494289fSPeter Wemm     struct sm_stat_res *res;
127*685e059dSHiroki Sato 
128*685e059dSHiroki Sato     res = sm_mon_1(&mon, cli);
129*685e059dSHiroki Sato     if (res)
1301494289fSPeter Wemm       printf("Success!\n");
1311494289fSPeter Wemm     else
1321494289fSPeter Wemm       printf("Fail\n");
1331494289fSPeter Wemm   }
1341494289fSPeter Wemm   else
1351494289fSPeter Wemm   {
136*685e059dSHiroki Sato     out = sm_simu_crash_1(&dummy, cli);
137*685e059dSHiroki Sato     if (out)
1381494289fSPeter Wemm       printf("Success!\n");
1391494289fSPeter Wemm     else
1401494289fSPeter Wemm       printf("Fail\n");
1411494289fSPeter Wemm   }
1421494289fSPeter Wemm 
1431494289fSPeter Wemm   return 0;
1441494289fSPeter Wemm }
145