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