Home | History | Annotate | Line # | Download | only in rpc.statd
test.c revision 1.2
      1 /*	$NetBSD: test.c,v 1.2 1997/10/17 16:03:09 lukem Exp $	*/
      2 
      3 #include <sys/cdefs.h>
      4 #ifndef lint
      5 __RCSID("$NetBSD: test.c,v 1.2 1997/10/17 16:03:09 lukem Exp $");
      6 #endif
      7 
      8 #include <stdio.h>
      9 #include <rpc/rpc.h>
     10 #include <rpcsvc/sm_inter.h>
     11 
     12 
     13 /* Default timeout can be changed using clnt_control() */
     14 static struct timeval TIMEOUT = {25, 0};
     15 
     16 struct sm_stat_res *
     17 sm_stat_1(argp, clnt)
     18 	struct sm_name *argp;
     19 	CLIENT *clnt;
     20 {
     21 	static struct sm_stat_res res;
     22 
     23 	bzero((char *) &res, sizeof(res));
     24 	if (clnt_call(clnt, SM_STAT, xdr_sm_name, argp, xdr_sm_stat_res,
     25 	    &res, TIMEOUT) != RPC_SUCCESS)
     26 		return (NULL);
     27 	return (&res);
     28 }
     29 
     30 
     31 struct sm_stat_res *
     32 sm_mon_1(argp, clnt)
     33 	struct mon *argp;
     34 	CLIENT *clnt;
     35 {
     36 	static struct sm_stat_res res;
     37 
     38 	bzero((char *) &res, sizeof(res));
     39 	if (clnt_call(clnt, SM_MON, xdr_mon, argp, xdr_sm_stat_res,
     40 	    &res, TIMEOUT) != RPC_SUCCESS)
     41 		return (NULL);
     42 	return (&res);
     43 }
     44 
     45 
     46 struct sm_stat *
     47 sm_unmon_1(argp, clnt)
     48 	struct mon_id *argp;
     49 	CLIENT *clnt;
     50 {
     51 	static struct sm_stat res;
     52 
     53 	bzero((char *) &res, sizeof(res));
     54 	if (clnt_call(clnt, SM_UNMON, xdr_mon_id, argp, xdr_sm_stat,
     55 	    &res, TIMEOUT) != RPC_SUCCESS)
     56 		return (NULL);
     57 	return (&res);
     58 }
     59 
     60 
     61 struct sm_stat *
     62 sm_unmon_all_1(argp, clnt)
     63 	struct my_id *argp;
     64 	CLIENT *clnt;
     65 {
     66 	static struct sm_stat res;
     67 
     68 	bzero((char *) &res, sizeof(res));
     69 	if (clnt_call(clnt, SM_UNMON_ALL, xdr_my_id, argp, xdr_sm_stat,
     70 	    &res, TIMEOUT) != RPC_SUCCESS)
     71 		return (NULL);
     72 	return (&res);
     73 }
     74 
     75 
     76 void *
     77 sm_simu_crash_1(argp, clnt)
     78 	void   *argp;
     79 	CLIENT *clnt;
     80 {
     81 	static char res;
     82 
     83 	bzero((char *) &res, sizeof(res));
     84 	if (clnt_call(clnt, SM_SIMU_CRASH, xdr_void, argp, xdr_void,
     85 	    &res, TIMEOUT) != RPC_SUCCESS)
     86 		return (NULL);
     87 	return ((void *) &res);
     88 }
     89 
     90 
     91 int
     92 main(argc, argv)
     93 	int argc;
     94 	char **argv;
     95 {
     96 	CLIENT *cli;
     97 	char dummy;
     98 	void *out;
     99 	struct mon mon;
    100 
    101 	if (argc < 2) {
    102 		warnx("usage: test {<hostname> | crash}");
    103 		errx(1, "Always talks to statd at localhost");
    104 	}
    105 	printf("Creating client for localhost\n");
    106 	cli = clnt_create("localhost", SM_PROG, SM_VERS, "udp");
    107 	if (!cli) {
    108 		errx(1, "Failed to create client");
    109 	}
    110 	mon.mon_id.mon_name = argv[1];
    111 	mon.mon_id.my_id.my_name = argv[1];
    112 	mon.mon_id.my_id.my_prog = SM_PROG;
    113 	mon.mon_id.my_id.my_vers = SM_VERS;
    114 	mon.mon_id.my_id.my_proc = 1;	/* have it call sm_stat() !!! */
    115 
    116 	if (strcmp(argv[1], "crash")) {
    117 		/* Hostname given */
    118 		struct sm_stat_res *res;
    119 		if (res = sm_mon_1(&mon, cli))
    120 			printf("Success!\n");
    121 		else
    122 			printf("Fail\n");
    123 	} else {
    124 		if (out = sm_simu_crash_1(&dummy, cli))
    125 			printf("Success!\n");
    126 		else
    127 			printf("Fail\n");
    128 	}
    129 
    130 	return 0;
    131 }
    132