2 * @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro
3 * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC
4 * $NetBSD: test.c,v 1.2 1997/10/18 04:01:21 lukem Exp $
5 * $FreeBSD: src/usr.sbin/rpc.lockd/test.c,v 1.5 2001/03/19 12:50:09 alfred Exp $
6 * $DragonFly: src/usr.sbin/rpc.lockd/test.c,v 1.3 2005/11/25 00:32:49 swildner Exp $
10 #include <rpcsvc/nlm_prot.h>
12 /* Default timeout can be changed using clnt_control() */
13 static struct timeval TIMEOUT
= { 0, 0 };
16 nlm_test_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
18 static nlm_testres res
;
20 bzero((char *)&res
, sizeof(res
));
21 if (clnt_call(clnt
, NLM_TEST
, xdr_nlm_testargs
, argp
, xdr_nlm_testres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
29 nlm_lock_1(struct nlm_lockargs
*argp
, CLIENT
*clnt
)
34 bzero((char *)&res
, sizeof(res
));
35 if (st
= clnt_call(clnt
, NLM_LOCK
, xdr_nlm_lockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
36 printf("clnt_call returns %d\n", st
);
37 clnt_perror(clnt
, "humbug");
45 nlm_cancel_1(struct nlm_cancargs
*argp
, CLIENT
*clnt
)
49 bzero((char *)&res
, sizeof(res
));
50 if (clnt_call(clnt
, NLM_CANCEL
, xdr_nlm_cancargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
58 nlm_unlock_1(struct nlm_unlockargs
*argp
, CLIENT
*clnt
)
62 bzero((char *)&res
, sizeof(res
));
63 if (clnt_call(clnt
, NLM_UNLOCK
, xdr_nlm_unlockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
71 nlm_granted_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
75 bzero((char *)&res
, sizeof(res
));
76 if (clnt_call(clnt
, NLM_GRANTED
, xdr_nlm_testargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
84 nlm_test_msg_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
88 bzero((char *)&res
, sizeof(res
));
89 if (clnt_call(clnt
, NLM_TEST_MSG
, xdr_nlm_testargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
92 return ((void *)&res
);
97 nlm_lock_msg_1(struct nlm_lockargs
*argp
, CLIENT
*clnt
)
101 bzero((char *)&res
, sizeof(res
));
102 if (clnt_call(clnt
, NLM_LOCK_MSG
, xdr_nlm_lockargs
, argp
, xdr_void
, NULL
, TIMEOUT
) != RPC_SUCCESS
) {
103 clnt_perror(clnt
, "nlm_lock_msg_1");
106 return ((void *)&res
);
111 nlm_cancel_msg_1(struct nlm_cancargs
*argp
, CLIENT
*clnt
)
115 bzero((char *)&res
, sizeof(res
));
116 if (clnt_call(clnt
, NLM_CANCEL_MSG
, xdr_nlm_cancargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
119 return ((void *)&res
);
124 nlm_unlock_msg_1(struct nlm_unlockargs
*argp
, CLIENT
*clnt
)
128 bzero((char *)&res
, sizeof(res
));
129 if (clnt_call(clnt
, NLM_UNLOCK_MSG
, xdr_nlm_unlockargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
132 return ((void *)&res
);
137 nlm_granted_msg_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
141 bzero((char *)&res
, sizeof(res
));
142 if (clnt_call(clnt
, NLM_GRANTED_MSG
, xdr_nlm_testargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
145 return ((void *)&res
);
150 nlm_test_res_1(nlm_testres
*argp
, CLIENT
*clnt
)
154 bzero((char *)&res
, sizeof(res
));
155 if (clnt_call(clnt
, NLM_TEST_RES
, xdr_nlm_testres
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
158 return ((void *)&res
);
163 nlm_lock_res_1(nlm_res
*argp
, CLIENT
*clnt
)
167 bzero((char *)&res
, sizeof(res
));
168 if (clnt_call(clnt
, NLM_LOCK_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
171 return ((void *)&res
);
176 nlm_cancel_res_1(nlm_res
*argp
, CLIENT
*clnt
)
180 bzero((char *)&res
, sizeof(res
));
181 if (clnt_call(clnt
, NLM_CANCEL_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
184 return ((void *)&res
);
189 nlm_unlock_res_1(nlm_res
*argp
, CLIENT
*clnt
)
193 bzero((char *)&res
, sizeof(res
));
194 if (clnt_call(clnt
, NLM_UNLOCK_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
197 return ((void *)&res
);
202 nlm_granted_res_1(nlm_res
*argp
, CLIENT
*clnt
)
206 bzero((char *)&res
, sizeof(res
));
207 if (clnt_call(clnt
, NLM_GRANTED_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
210 return ((void *)&res
);
215 nlm_share_3(nlm_shareargs
*argp
, CLIENT
*clnt
)
217 static nlm_shareres res
;
219 bzero((char *)&res
, sizeof(res
));
220 if (clnt_call(clnt
, NLM_SHARE
, xdr_nlm_shareargs
, argp
, xdr_nlm_shareres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
228 nlm_unshare_3(nlm_shareargs
*argp
, CLIENT
*clnt
)
230 static nlm_shareres res
;
232 bzero((char *)&res
, sizeof(res
));
233 if (clnt_call(clnt
, NLM_UNSHARE
, xdr_nlm_shareargs
, argp
, xdr_nlm_shareres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
241 nlm_nm_lock_3(nlm_lockargs
*argp
, CLIENT
*clnt
)
245 bzero((char *)&res
, sizeof(res
));
246 if (clnt_call(clnt
, NLM_NM_LOCK
, xdr_nlm_lockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
254 nlm_free_all_3(nlm_notify
*argp
, CLIENT
*clnt
)
258 bzero((char *)&res
, sizeof(res
));
259 if (clnt_call(clnt
, NLM_FREE_ALL
, xdr_nlm_notify
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
262 return ((void *)&res
);
267 main(int argc
, char **argv
)
275 printf("Creating client for host %s\n", argv
[1]);
276 cli
= clnt_create(argv
[1], NLM_PROG
, NLM_VERS
, "udp");
278 errx(1, "Failed to create client\n");
281 clnt_control(cli
, CLGET_TIMEOUT
, &tim
);
282 printf("Default timeout was %d.%d\n", tim
.tv_sec
, tim
.tv_usec
);
285 clnt_control(cli
, CLSET_TIMEOUT
, &tim
);
286 clnt_control(cli
, CLGET_TIMEOUT
, &tim
);
287 printf("timeout now %d.%d\n", tim
.tv_sec
, tim
.tv_usec
);
290 arg
.cookie
.n_len
= 4;
291 arg
.cookie
.n_bytes
= "hello";
296 arg
.alock
.caller_name
= "localhost";
297 arg
.alock
.fh
.n_len
= 32;
298 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";
299 arg
.alock
.oh
.n_len
= 8;
300 arg
.alock
.oh
.n_bytes
= "\x00\x00\x02\xff\xff\xff\xd3";
301 arg
.alock
.svid
= 0x5678;
302 arg
.alock
.l_offset
= 0;
303 arg
.alock
.l_len
= 100;
305 res_block
.stat
.stat
= nlm_granted
;
306 res_block
.cookie
.n_bytes
= "hello";
307 res_block
.cookie
.n_len
= 5;
310 if (nlm_lock_res_1(&res_block
, cli
))
311 printf("Success!\n");
315 if (out
= nlm_lock_msg_1(&arg
, cli
)) {
316 printf("Success!\n");
317 printf("out->stat = %d", out
->stat
);