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