1/* $NetBSD: test.c,v 1.1 1997/03/10 06:28:32 scottr Exp $ */ 2 3#include <sys/cdefs.h> 4#ifndef lint 5__RCSID("$NetBSD: statd.c,v 1.4 1997/10/17 13:21:06 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() */ 14static struct timeval TIMEOUT = {25, 0}; 15 16struct sm_stat_res * 17sm_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 31struct sm_stat_res * 32sm_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 46struct sm_stat * 47sm_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 61struct sm_stat * 62sm_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 76void * 77sm_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 91int 92main(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