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 * $FreeBSD: src/usr.sbin/rpc.lockd/test.c,v 1.4.2.1 2001/08/01 06:39:36 alfred Exp $
5 * $DragonFly: src/usr.sbin/rpc.lockd/test.c,v 1.3 2005/11/25 00:32:49 swildner Exp $
9 #include <rpcsvc/nlm_prot.h>
11 /* Default timeout can be changed using clnt_control() */
12 static struct timeval TIMEOUT
= { 0, 0 };
15 nlm_test_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
17 static nlm_testres res
;
19 bzero((char *)&res
, sizeof(res
));
20 if (clnt_call(clnt
, NLM_TEST
, xdr_nlm_testargs
, argp
, xdr_nlm_testres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
28 nlm_lock_1(struct nlm_lockargs
*argp
, CLIENT
*clnt
)
33 bzero((char *)&res
, sizeof(res
));
34 if (st
= clnt_call(clnt
, NLM_LOCK
, xdr_nlm_lockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
35 printf("clnt_call returns %d\n", st
);
36 clnt_perror(clnt
, "humbug");
44 nlm_cancel_1(struct nlm_cancargs
*argp
, CLIENT
*clnt
)
48 bzero((char *)&res
, sizeof(res
));
49 if (clnt_call(clnt
, NLM_CANCEL
, xdr_nlm_cancargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
57 nlm_unlock_1(struct nlm_unlockargs
*argp
, CLIENT
*clnt
)
61 bzero((char *)&res
, sizeof(res
));
62 if (clnt_call(clnt
, NLM_UNLOCK
, xdr_nlm_unlockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
70 nlm_granted_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
74 bzero((char *)&res
, sizeof(res
));
75 if (clnt_call(clnt
, NLM_GRANTED
, xdr_nlm_testargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
83 nlm_test_msg_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
87 bzero((char *)&res
, sizeof(res
));
88 if (clnt_call(clnt
, NLM_TEST_MSG
, xdr_nlm_testargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
91 return ((void *)&res
);
96 nlm_lock_msg_1(struct nlm_lockargs
*argp
, CLIENT
*clnt
)
100 bzero((char *)&res
, sizeof(res
));
101 if (clnt_call(clnt
, NLM_LOCK_MSG
, xdr_nlm_lockargs
, argp
, xdr_void
, NULL
, TIMEOUT
) != RPC_SUCCESS
) {
102 clnt_perror(clnt
, "nlm_lock_msg_1");
105 return ((void *)&res
);
110 nlm_cancel_msg_1(struct nlm_cancargs
*argp
, CLIENT
*clnt
)
114 bzero((char *)&res
, sizeof(res
));
115 if (clnt_call(clnt
, NLM_CANCEL_MSG
, xdr_nlm_cancargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
118 return ((void *)&res
);
123 nlm_unlock_msg_1(struct nlm_unlockargs
*argp
, CLIENT
*clnt
)
127 bzero((char *)&res
, sizeof(res
));
128 if (clnt_call(clnt
, NLM_UNLOCK_MSG
, xdr_nlm_unlockargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
131 return ((void *)&res
);
136 nlm_granted_msg_1(struct nlm_testargs
*argp
, CLIENT
*clnt
)
140 bzero((char *)&res
, sizeof(res
));
141 if (clnt_call(clnt
, NLM_GRANTED_MSG
, xdr_nlm_testargs
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
144 return ((void *)&res
);
149 nlm_test_res_1(nlm_testres
*argp
, CLIENT
*clnt
)
153 bzero((char *)&res
, sizeof(res
));
154 if (clnt_call(clnt
, NLM_TEST_RES
, xdr_nlm_testres
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
157 return ((void *)&res
);
162 nlm_lock_res_1(nlm_res
*argp
, CLIENT
*clnt
)
166 bzero((char *)&res
, sizeof(res
));
167 if (clnt_call(clnt
, NLM_LOCK_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
170 return ((void *)&res
);
175 nlm_cancel_res_1(nlm_res
*argp
, CLIENT
*clnt
)
179 bzero((char *)&res
, sizeof(res
));
180 if (clnt_call(clnt
, NLM_CANCEL_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
183 return ((void *)&res
);
188 nlm_unlock_res_1(nlm_res
*argp
, CLIENT
*clnt
)
192 bzero((char *)&res
, sizeof(res
));
193 if (clnt_call(clnt
, NLM_UNLOCK_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
196 return ((void *)&res
);
201 nlm_granted_res_1(nlm_res
*argp
, CLIENT
*clnt
)
205 bzero((char *)&res
, sizeof(res
));
206 if (clnt_call(clnt
, NLM_GRANTED_RES
, xdr_nlm_res
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
209 return ((void *)&res
);
214 nlm_share_3(nlm_shareargs
*argp
, CLIENT
*clnt
)
216 static nlm_shareres res
;
218 bzero((char *)&res
, sizeof(res
));
219 if (clnt_call(clnt
, NLM_SHARE
, xdr_nlm_shareargs
, argp
, xdr_nlm_shareres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
227 nlm_unshare_3(nlm_shareargs
*argp
, CLIENT
*clnt
)
229 static nlm_shareres res
;
231 bzero((char *)&res
, sizeof(res
));
232 if (clnt_call(clnt
, NLM_UNSHARE
, xdr_nlm_shareargs
, argp
, xdr_nlm_shareres
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
240 nlm_nm_lock_3(nlm_lockargs
*argp
, CLIENT
*clnt
)
244 bzero((char *)&res
, sizeof(res
));
245 if (clnt_call(clnt
, NLM_NM_LOCK
, xdr_nlm_lockargs
, argp
, xdr_nlm_res
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
253 nlm_free_all_3(nlm_notify
*argp
, CLIENT
*clnt
)
257 bzero((char *)&res
, sizeof(res
));
258 if (clnt_call(clnt
, NLM_FREE_ALL
, xdr_nlm_notify
, argp
, xdr_void
, &res
, TIMEOUT
) != RPC_SUCCESS
) {
261 return ((void *)&res
);
266 main(int argc
, char **argv
)
276 printf("usage: %s <lockd hostname>\n", argv
[0]);
281 printf("Creating client for host %s\n", argv
[1]);
282 cli
= clnt_create(argv
[1], NLM_PROG
, NLM_VERS
, "udp");
285 printf("Failed to create client\n");
290 clnt_control(cli
, CLGET_TIMEOUT
, &tim
);
291 printf("Default timeout was %d.%d\n", tim
.tv_sec
, tim
.tv_usec
);
294 clnt_control(cli
, CLSET_TIMEOUT
, &tim
);
295 clnt_control(cli
, CLGET_TIMEOUT
, &tim
);
296 printf("timeout now %d.%d\n", tim
.tv_sec
, tim
.tv_usec
);
299 arg
.cookie
.n_len
= 4;
300 arg
.cookie
.n_bytes
= "hello";
305 arg
.alock
.caller_name
= "localhost";
306 arg
.alock
.fh
.n_len
= 32;
307 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";
308 arg
.alock
.oh
.n_len
= 8;
309 arg
.alock
.oh
.n_bytes
= "\x00\x00\x02\xff\xff\xff\xd3";
310 arg
.alock
.svid
= 0x5678;
311 arg
.alock
.l_offset
= 0;
312 arg
.alock
.l_len
= 100;
314 res_block
.stat
.stat
= nlm_granted
;
315 res_block
.cookie
.n_bytes
= "hello";
316 res_block
.cookie
.n_len
= 5;
319 if (nlm_lock_res_1(&res_block
, cli
)) printf("Success!\n");
320 else printf("Fail\n");
322 if (out
= nlm_lock_msg_1(&arg
, cli
))
324 printf("Success!\n");
325 printf("out->stat = %d", out
->stat
);