18360efbdSAlfred Perlstein /* $NetBSD: test.c,v 1.2 1997/10/18 04:01:21 lukem Exp $ */
28360efbdSAlfred Perlstein
38360efbdSAlfred Perlstein #include <sys/cdefs.h>
48360efbdSAlfred Perlstein #include <rpc/rpc.h>
58360efbdSAlfred Perlstein #include <rpcsvc/nlm_prot.h>
6df82e9baSPhilippe Charnier
7503d2aa8SPeter Wemm /* Default timeout can be changed using clnt_control() */
8503d2aa8SPeter Wemm static struct timeval TIMEOUT = { 0, 0 };
9503d2aa8SPeter Wemm
10503d2aa8SPeter Wemm nlm_testres *
nlm_test_1(argp,clnt)11503d2aa8SPeter Wemm nlm_test_1(argp, clnt)
12503d2aa8SPeter Wemm struct nlm_testargs *argp;
13503d2aa8SPeter Wemm CLIENT *clnt;
14503d2aa8SPeter Wemm {
15503d2aa8SPeter Wemm static nlm_testres res;
16503d2aa8SPeter Wemm
17503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
18503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_TEST, xdr_nlm_testargs, argp, xdr_nlm_testres, &res, TIMEOUT) != RPC_SUCCESS) {
19503d2aa8SPeter Wemm return (NULL);
20503d2aa8SPeter Wemm }
21503d2aa8SPeter Wemm return (&res);
22503d2aa8SPeter Wemm }
23503d2aa8SPeter Wemm
24503d2aa8SPeter Wemm
25503d2aa8SPeter Wemm nlm_res *
nlm_lock_1(argp,clnt)26503d2aa8SPeter Wemm nlm_lock_1(argp, clnt)
27503d2aa8SPeter Wemm struct nlm_lockargs *argp;
28503d2aa8SPeter Wemm CLIENT *clnt;
29503d2aa8SPeter Wemm {
30503d2aa8SPeter Wemm enum clnt_stat st;
31503d2aa8SPeter Wemm static nlm_res res;
32503d2aa8SPeter Wemm
33503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
34503d2aa8SPeter Wemm if (st = clnt_call(clnt, NLM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
35503d2aa8SPeter Wemm printf("clnt_call returns %d\n", st);
36503d2aa8SPeter Wemm clnt_perror(clnt, "humbug");
37503d2aa8SPeter Wemm return (NULL);
38503d2aa8SPeter Wemm }
39503d2aa8SPeter Wemm return (&res);
40503d2aa8SPeter Wemm }
41503d2aa8SPeter Wemm
42503d2aa8SPeter Wemm
43503d2aa8SPeter Wemm nlm_res *
nlm_cancel_1(argp,clnt)44503d2aa8SPeter Wemm nlm_cancel_1(argp, clnt)
45503d2aa8SPeter Wemm struct nlm_cancargs *argp;
46503d2aa8SPeter Wemm CLIENT *clnt;
47503d2aa8SPeter Wemm {
48503d2aa8SPeter Wemm static nlm_res res;
49503d2aa8SPeter Wemm
50503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
51503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_CANCEL, xdr_nlm_cancargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
52503d2aa8SPeter Wemm return (NULL);
53503d2aa8SPeter Wemm }
54503d2aa8SPeter Wemm return (&res);
55503d2aa8SPeter Wemm }
56503d2aa8SPeter Wemm
57503d2aa8SPeter Wemm
58503d2aa8SPeter Wemm nlm_res *
nlm_unlock_1(argp,clnt)59503d2aa8SPeter Wemm nlm_unlock_1(argp, clnt)
60503d2aa8SPeter Wemm struct nlm_unlockargs *argp;
61503d2aa8SPeter Wemm CLIENT *clnt;
62503d2aa8SPeter Wemm {
63503d2aa8SPeter Wemm static nlm_res res;
64503d2aa8SPeter Wemm
65503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
66503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_UNLOCK, xdr_nlm_unlockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
67503d2aa8SPeter Wemm return (NULL);
68503d2aa8SPeter Wemm }
69503d2aa8SPeter Wemm return (&res);
70503d2aa8SPeter Wemm }
71503d2aa8SPeter Wemm
72503d2aa8SPeter Wemm
73503d2aa8SPeter Wemm nlm_res *
nlm_granted_1(argp,clnt)74503d2aa8SPeter Wemm nlm_granted_1(argp, clnt)
75503d2aa8SPeter Wemm struct nlm_testargs *argp;
76503d2aa8SPeter Wemm CLIENT *clnt;
77503d2aa8SPeter Wemm {
78503d2aa8SPeter Wemm static nlm_res res;
79503d2aa8SPeter Wemm
80503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
81503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_GRANTED, xdr_nlm_testargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
82503d2aa8SPeter Wemm return (NULL);
83503d2aa8SPeter Wemm }
84503d2aa8SPeter Wemm return (&res);
85503d2aa8SPeter Wemm }
86503d2aa8SPeter Wemm
87503d2aa8SPeter Wemm
88503d2aa8SPeter Wemm void *
nlm_test_msg_1(argp,clnt)89503d2aa8SPeter Wemm nlm_test_msg_1(argp, clnt)
90503d2aa8SPeter Wemm struct nlm_testargs *argp;
91503d2aa8SPeter Wemm CLIENT *clnt;
92503d2aa8SPeter Wemm {
93503d2aa8SPeter Wemm static char res;
94503d2aa8SPeter Wemm
95503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
96503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_TEST_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
97503d2aa8SPeter Wemm return (NULL);
98503d2aa8SPeter Wemm }
99503d2aa8SPeter Wemm return ((void *)&res);
100503d2aa8SPeter Wemm }
101503d2aa8SPeter Wemm
102503d2aa8SPeter Wemm
103503d2aa8SPeter Wemm void *
nlm_lock_msg_1(argp,clnt)104503d2aa8SPeter Wemm nlm_lock_msg_1(argp, clnt)
105503d2aa8SPeter Wemm struct nlm_lockargs *argp;
106503d2aa8SPeter Wemm CLIENT *clnt;
107503d2aa8SPeter Wemm {
108503d2aa8SPeter Wemm static char res;
109503d2aa8SPeter Wemm
110503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
111503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_LOCK_MSG, xdr_nlm_lockargs, argp, xdr_void, NULL, TIMEOUT) != RPC_SUCCESS) {
112503d2aa8SPeter Wemm clnt_perror(clnt, "nlm_lock_msg_1");
113503d2aa8SPeter Wemm return (NULL);
114503d2aa8SPeter Wemm }
115503d2aa8SPeter Wemm return ((void *)&res);
116503d2aa8SPeter Wemm }
117503d2aa8SPeter Wemm
118503d2aa8SPeter Wemm
119503d2aa8SPeter Wemm void *
nlm_cancel_msg_1(argp,clnt)120503d2aa8SPeter Wemm nlm_cancel_msg_1(argp, clnt)
121503d2aa8SPeter Wemm struct nlm_cancargs *argp;
122503d2aa8SPeter Wemm CLIENT *clnt;
123503d2aa8SPeter Wemm {
124503d2aa8SPeter Wemm static char res;
125503d2aa8SPeter Wemm
126503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
127503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_CANCEL_MSG, xdr_nlm_cancargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
128503d2aa8SPeter Wemm return (NULL);
129503d2aa8SPeter Wemm }
130503d2aa8SPeter Wemm return ((void *)&res);
131503d2aa8SPeter Wemm }
132503d2aa8SPeter Wemm
133503d2aa8SPeter Wemm
134503d2aa8SPeter Wemm void *
nlm_unlock_msg_1(argp,clnt)135503d2aa8SPeter Wemm nlm_unlock_msg_1(argp, clnt)
136503d2aa8SPeter Wemm struct nlm_unlockargs *argp;
137503d2aa8SPeter Wemm CLIENT *clnt;
138503d2aa8SPeter Wemm {
139503d2aa8SPeter Wemm static char res;
140503d2aa8SPeter Wemm
141503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
142503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_UNLOCK_MSG, xdr_nlm_unlockargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
143503d2aa8SPeter Wemm return (NULL);
144503d2aa8SPeter Wemm }
145503d2aa8SPeter Wemm return ((void *)&res);
146503d2aa8SPeter Wemm }
147503d2aa8SPeter Wemm
148503d2aa8SPeter Wemm
149503d2aa8SPeter Wemm void *
nlm_granted_msg_1(argp,clnt)150503d2aa8SPeter Wemm nlm_granted_msg_1(argp, clnt)
151503d2aa8SPeter Wemm struct nlm_testargs *argp;
152503d2aa8SPeter Wemm CLIENT *clnt;
153503d2aa8SPeter Wemm {
154503d2aa8SPeter Wemm static char res;
155503d2aa8SPeter Wemm
156503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
157503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_GRANTED_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
158503d2aa8SPeter Wemm return (NULL);
159503d2aa8SPeter Wemm }
160503d2aa8SPeter Wemm return ((void *)&res);
161503d2aa8SPeter Wemm }
162503d2aa8SPeter Wemm
163503d2aa8SPeter Wemm
164503d2aa8SPeter Wemm void *
nlm_test_res_1(argp,clnt)165503d2aa8SPeter Wemm nlm_test_res_1(argp, clnt)
166503d2aa8SPeter Wemm nlm_testres *argp;
167503d2aa8SPeter Wemm CLIENT *clnt;
168503d2aa8SPeter Wemm {
169503d2aa8SPeter Wemm static char res;
170503d2aa8SPeter Wemm
171503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
172503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_TEST_RES, xdr_nlm_testres, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
173503d2aa8SPeter Wemm return (NULL);
174503d2aa8SPeter Wemm }
175503d2aa8SPeter Wemm return ((void *)&res);
176503d2aa8SPeter Wemm }
177503d2aa8SPeter Wemm
178503d2aa8SPeter Wemm
179503d2aa8SPeter Wemm void *
nlm_lock_res_1(argp,clnt)180503d2aa8SPeter Wemm nlm_lock_res_1(argp, clnt)
181503d2aa8SPeter Wemm nlm_res *argp;
182503d2aa8SPeter Wemm CLIENT *clnt;
183503d2aa8SPeter Wemm {
184503d2aa8SPeter Wemm static char res;
185503d2aa8SPeter Wemm
186503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
187503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_LOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
188503d2aa8SPeter Wemm return (NULL);
189503d2aa8SPeter Wemm }
190503d2aa8SPeter Wemm return ((void *)&res);
191503d2aa8SPeter Wemm }
192503d2aa8SPeter Wemm
193503d2aa8SPeter Wemm
194503d2aa8SPeter Wemm void *
nlm_cancel_res_1(argp,clnt)195503d2aa8SPeter Wemm nlm_cancel_res_1(argp, clnt)
196503d2aa8SPeter Wemm nlm_res *argp;
197503d2aa8SPeter Wemm CLIENT *clnt;
198503d2aa8SPeter Wemm {
199503d2aa8SPeter Wemm static char res;
200503d2aa8SPeter Wemm
201503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
202503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_CANCEL_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
203503d2aa8SPeter Wemm return (NULL);
204503d2aa8SPeter Wemm }
205503d2aa8SPeter Wemm return ((void *)&res);
206503d2aa8SPeter Wemm }
207503d2aa8SPeter Wemm
208503d2aa8SPeter Wemm
209503d2aa8SPeter Wemm void *
nlm_unlock_res_1(argp,clnt)210503d2aa8SPeter Wemm nlm_unlock_res_1(argp, clnt)
211503d2aa8SPeter Wemm nlm_res *argp;
212503d2aa8SPeter Wemm CLIENT *clnt;
213503d2aa8SPeter Wemm {
214503d2aa8SPeter Wemm static char res;
215503d2aa8SPeter Wemm
216503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
217503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_UNLOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
218503d2aa8SPeter Wemm return (NULL);
219503d2aa8SPeter Wemm }
220503d2aa8SPeter Wemm return ((void *)&res);
221503d2aa8SPeter Wemm }
222503d2aa8SPeter Wemm
223503d2aa8SPeter Wemm
224503d2aa8SPeter Wemm void *
nlm_granted_res_1(argp,clnt)225503d2aa8SPeter Wemm nlm_granted_res_1(argp, clnt)
226503d2aa8SPeter Wemm nlm_res *argp;
227503d2aa8SPeter Wemm CLIENT *clnt;
228503d2aa8SPeter Wemm {
229503d2aa8SPeter Wemm static char res;
230503d2aa8SPeter Wemm
231503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
232503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_GRANTED_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
233503d2aa8SPeter Wemm return (NULL);
234503d2aa8SPeter Wemm }
235503d2aa8SPeter Wemm return ((void *)&res);
236503d2aa8SPeter Wemm }
237503d2aa8SPeter Wemm
238503d2aa8SPeter Wemm
239503d2aa8SPeter Wemm nlm_shareres *
nlm_share_3(argp,clnt)240503d2aa8SPeter Wemm nlm_share_3(argp, clnt)
241503d2aa8SPeter Wemm nlm_shareargs *argp;
242503d2aa8SPeter Wemm CLIENT *clnt;
243503d2aa8SPeter Wemm {
244503d2aa8SPeter Wemm static nlm_shareres res;
245503d2aa8SPeter Wemm
246503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
247503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_SHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) {
248503d2aa8SPeter Wemm return (NULL);
249503d2aa8SPeter Wemm }
250503d2aa8SPeter Wemm return (&res);
251503d2aa8SPeter Wemm }
252503d2aa8SPeter Wemm
253503d2aa8SPeter Wemm
254503d2aa8SPeter Wemm nlm_shareres *
nlm_unshare_3(argp,clnt)255503d2aa8SPeter Wemm nlm_unshare_3(argp, clnt)
256503d2aa8SPeter Wemm nlm_shareargs *argp;
257503d2aa8SPeter Wemm CLIENT *clnt;
258503d2aa8SPeter Wemm {
259503d2aa8SPeter Wemm static nlm_shareres res;
260503d2aa8SPeter Wemm
261503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
262503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_UNSHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) {
263503d2aa8SPeter Wemm return (NULL);
264503d2aa8SPeter Wemm }
265503d2aa8SPeter Wemm return (&res);
266503d2aa8SPeter Wemm }
267503d2aa8SPeter Wemm
268503d2aa8SPeter Wemm
269503d2aa8SPeter Wemm nlm_res *
nlm_nm_lock_3(argp,clnt)270503d2aa8SPeter Wemm nlm_nm_lock_3(argp, clnt)
271503d2aa8SPeter Wemm nlm_lockargs *argp;
272503d2aa8SPeter Wemm CLIENT *clnt;
273503d2aa8SPeter Wemm {
274503d2aa8SPeter Wemm static nlm_res res;
275503d2aa8SPeter Wemm
276503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
277503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_NM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
278503d2aa8SPeter Wemm return (NULL);
279503d2aa8SPeter Wemm }
280503d2aa8SPeter Wemm return (&res);
281503d2aa8SPeter Wemm }
282503d2aa8SPeter Wemm
283503d2aa8SPeter Wemm
284503d2aa8SPeter Wemm void *
nlm_free_all_3(argp,clnt)285503d2aa8SPeter Wemm nlm_free_all_3(argp, clnt)
286503d2aa8SPeter Wemm nlm_notify *argp;
287503d2aa8SPeter Wemm CLIENT *clnt;
288503d2aa8SPeter Wemm {
289503d2aa8SPeter Wemm static char res;
290503d2aa8SPeter Wemm
291503d2aa8SPeter Wemm bzero((char *)&res, sizeof(res));
292503d2aa8SPeter Wemm if (clnt_call(clnt, NLM_FREE_ALL, xdr_nlm_notify, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
293503d2aa8SPeter Wemm return (NULL);
294503d2aa8SPeter Wemm }
295503d2aa8SPeter Wemm return ((void *)&res);
296503d2aa8SPeter Wemm }
297503d2aa8SPeter Wemm
298503d2aa8SPeter Wemm
main(int argc,char ** argv)299503d2aa8SPeter Wemm int main(int argc, char **argv)
300503d2aa8SPeter Wemm {
301503d2aa8SPeter Wemm CLIENT *cli;
302503d2aa8SPeter Wemm nlm_res res_block;
303503d2aa8SPeter Wemm nlm_res *out;
304503d2aa8SPeter Wemm nlm_lockargs arg;
305503d2aa8SPeter Wemm struct timeval tim;
306503d2aa8SPeter Wemm
307503d2aa8SPeter Wemm printf("Creating client for host %s\n", argv[1]);
308503d2aa8SPeter Wemm cli = clnt_create(argv[1], NLM_PROG, NLM_VERS, "udp");
3098360efbdSAlfred Perlstein if (!cli) {
3108360efbdSAlfred Perlstein errx(1, "Failed to create client\n");
3118360efbdSAlfred Perlstein /* NOTREACHED */
312503d2aa8SPeter Wemm }
313503d2aa8SPeter Wemm clnt_control(cli, CLGET_TIMEOUT, &tim);
314503d2aa8SPeter Wemm printf("Default timeout was %d.%d\n", tim.tv_sec, tim.tv_usec);
315503d2aa8SPeter Wemm tim.tv_usec = -1;
316503d2aa8SPeter Wemm tim.tv_sec = -1;
317503d2aa8SPeter Wemm clnt_control(cli, CLSET_TIMEOUT, &tim);
318ce81d24bSPeter Wemm clnt_control(cli, CLGET_TIMEOUT, &tim);
319ce81d24bSPeter Wemm printf("timeout now %d.%d\n", tim.tv_sec, tim.tv_usec);
320ce81d24bSPeter Wemm
321503d2aa8SPeter Wemm
322503d2aa8SPeter Wemm arg.cookie.n_len = 4;
323503d2aa8SPeter Wemm arg.cookie.n_bytes = "hello";
324503d2aa8SPeter Wemm arg.block = 0;
325503d2aa8SPeter Wemm arg.exclusive = 0;
326503d2aa8SPeter Wemm arg.reclaim = 0;
327503d2aa8SPeter Wemm arg.state = 0x1234;
328503d2aa8SPeter Wemm arg.alock.caller_name = "localhost";
329503d2aa8SPeter Wemm arg.alock.fh.n_len = 32;
330503d2aa8SPeter Wemm arg.alock.fh.n_bytes = "\x04\x04\x02\x00\x01\x00\x00\x00\x0c\x00\x00\x00\xff\xff\xff\xd0\x16\x00\x00\x5b\x7c\xff\xff\xff\xec\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x54\xef\xbf\xd7\x94";
331503d2aa8SPeter Wemm arg.alock.oh.n_len = 8;
332503d2aa8SPeter Wemm arg.alock.oh.n_bytes = "\x00\x00\x02\xff\xff\xff\xd3";
333503d2aa8SPeter Wemm arg.alock.svid = 0x5678;
334503d2aa8SPeter Wemm arg.alock.l_offset = 0;
335503d2aa8SPeter Wemm arg.alock.l_len = 100;
336503d2aa8SPeter Wemm
337503d2aa8SPeter Wemm res_block.stat.stat = nlm_granted;
338503d2aa8SPeter Wemm res_block.cookie.n_bytes = "hello";
339503d2aa8SPeter Wemm res_block.cookie.n_len = 5;
340503d2aa8SPeter Wemm
341503d2aa8SPeter Wemm #if 0
3428360efbdSAlfred Perlstein if (nlm_lock_res_1(&res_block, cli))
3438360efbdSAlfred Perlstein printf("Success!\n");
3448360efbdSAlfred Perlstein else
3458360efbdSAlfred Perlstein printf("Fail\n");
346503d2aa8SPeter Wemm #else
3478360efbdSAlfred Perlstein if (out = nlm_lock_msg_1(&arg, cli)) {
348503d2aa8SPeter Wemm printf("Success!\n");
349503d2aa8SPeter Wemm printf("out->stat = %d", out->stat);
3508360efbdSAlfred Perlstein } else {
351503d2aa8SPeter Wemm printf("Fail\n");
352503d2aa8SPeter Wemm }
353503d2aa8SPeter Wemm #endif
354503d2aa8SPeter Wemm
355503d2aa8SPeter Wemm return 0;
356503d2aa8SPeter Wemm }
357