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