1/* $NetBSD: test.c,v 1.2 1997/10/18 04:01:21 lukem Exp $ */ 2 3#include <sys/cdefs.h> 4#include <rpc/rpc.h> 5#include <rpcsvc/nlm_prot.h> 6#ifndef lint 7#if 0 8static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro"; 9static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC"; 10#else 11__RCSID("$NetBSD: test.c,v 1.2 1997/10/18 04:01:21 lukem Exp $"); 12static const char rcsid[] = "$FreeBSD: releng/10.2/usr.sbin/rpc.lockd/test.c 74462 2001-03-19 12:50:13Z alfred $"; 13#endif 14#endif /* not lint */ 15 16/* Default timeout can be changed using clnt_control() */ 17static struct timeval TIMEOUT = { 0, 0 }; 18 19nlm_testres * 20nlm_test_1(argp, clnt) 21 struct nlm_testargs *argp; 22 CLIENT *clnt; 23{ 24 static nlm_testres res; 25 26 bzero((char *)&res, sizeof(res)); 27 if (clnt_call(clnt, NLM_TEST, xdr_nlm_testargs, argp, xdr_nlm_testres, &res, TIMEOUT) != RPC_SUCCESS) { 28 return (NULL); 29 } 30 return (&res); 31} 32 33 34nlm_res * 35nlm_lock_1(argp, clnt) 36 struct nlm_lockargs *argp; 37 CLIENT *clnt; 38{ 39 enum clnt_stat st; 40 static nlm_res res; 41 42 bzero((char *)&res, sizeof(res)); 43 if (st = clnt_call(clnt, NLM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) { 44 printf("clnt_call returns %d\n", st); 45 clnt_perror(clnt, "humbug"); 46 return (NULL); 47 } 48 return (&res); 49} 50 51 52nlm_res * 53nlm_cancel_1(argp, clnt) 54 struct nlm_cancargs *argp; 55 CLIENT *clnt; 56{ 57 static nlm_res res; 58 59 bzero((char *)&res, sizeof(res)); 60 if (clnt_call(clnt, NLM_CANCEL, xdr_nlm_cancargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) { 61 return (NULL); 62 } 63 return (&res); 64} 65 66 67nlm_res * 68nlm_unlock_1(argp, clnt) 69 struct nlm_unlockargs *argp; 70 CLIENT *clnt; 71{ 72 static nlm_res res; 73 74 bzero((char *)&res, sizeof(res)); 75 if (clnt_call(clnt, NLM_UNLOCK, xdr_nlm_unlockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) { 76 return (NULL); 77 } 78 return (&res); 79} 80 81 82nlm_res * 83nlm_granted_1(argp, clnt) 84 struct nlm_testargs *argp; 85 CLIENT *clnt; 86{ 87 static nlm_res res; 88 89 bzero((char *)&res, sizeof(res)); 90 if (clnt_call(clnt, NLM_GRANTED, xdr_nlm_testargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) { 91 return (NULL); 92 } 93 return (&res); 94} 95 96 97void * 98nlm_test_msg_1(argp, clnt) 99 struct nlm_testargs *argp; 100 CLIENT *clnt; 101{ 102 static char res; 103 104 bzero((char *)&res, sizeof(res)); 105 if (clnt_call(clnt, NLM_TEST_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 106 return (NULL); 107 } 108 return ((void *)&res); 109} 110 111 112void * 113nlm_lock_msg_1(argp, clnt) 114 struct nlm_lockargs *argp; 115 CLIENT *clnt; 116{ 117 static char res; 118 119 bzero((char *)&res, sizeof(res)); 120 if (clnt_call(clnt, NLM_LOCK_MSG, xdr_nlm_lockargs, argp, xdr_void, NULL, TIMEOUT) != RPC_SUCCESS) { 121 clnt_perror(clnt, "nlm_lock_msg_1"); 122 return (NULL); 123 } 124 return ((void *)&res); 125} 126 127 128void * 129nlm_cancel_msg_1(argp, clnt) 130 struct nlm_cancargs *argp; 131 CLIENT *clnt; 132{ 133 static char res; 134 135 bzero((char *)&res, sizeof(res)); 136 if (clnt_call(clnt, NLM_CANCEL_MSG, xdr_nlm_cancargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 137 return (NULL); 138 } 139 return ((void *)&res); 140} 141 142 143void * 144nlm_unlock_msg_1(argp, clnt) 145 struct nlm_unlockargs *argp; 146 CLIENT *clnt; 147{ 148 static char res; 149 150 bzero((char *)&res, sizeof(res)); 151 if (clnt_call(clnt, NLM_UNLOCK_MSG, xdr_nlm_unlockargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 152 return (NULL); 153 } 154 return ((void *)&res); 155} 156 157 158void * 159nlm_granted_msg_1(argp, clnt) 160 struct nlm_testargs *argp; 161 CLIENT *clnt; 162{ 163 static char res; 164 165 bzero((char *)&res, sizeof(res)); 166 if (clnt_call(clnt, NLM_GRANTED_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 167 return (NULL); 168 } 169 return ((void *)&res); 170} 171 172 173void * 174nlm_test_res_1(argp, clnt) 175 nlm_testres *argp; 176 CLIENT *clnt; 177{ 178 static char res; 179 180 bzero((char *)&res, sizeof(res)); 181 if (clnt_call(clnt, NLM_TEST_RES, xdr_nlm_testres, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 182 return (NULL); 183 } 184 return ((void *)&res); 185} 186 187 188void * 189nlm_lock_res_1(argp, clnt) 190 nlm_res *argp; 191 CLIENT *clnt; 192{ 193 static char res; 194 195 bzero((char *)&res, sizeof(res)); 196 if (clnt_call(clnt, NLM_LOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 197 return (NULL); 198 } 199 return ((void *)&res); 200} 201 202 203void * 204nlm_cancel_res_1(argp, clnt) 205 nlm_res *argp; 206 CLIENT *clnt; 207{ 208 static char res; 209 210 bzero((char *)&res, sizeof(res)); 211 if (clnt_call(clnt, NLM_CANCEL_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 212 return (NULL); 213 } 214 return ((void *)&res); 215} 216 217 218void * 219nlm_unlock_res_1(argp, clnt) 220 nlm_res *argp; 221 CLIENT *clnt; 222{ 223 static char res; 224 225 bzero((char *)&res, sizeof(res)); 226 if (clnt_call(clnt, NLM_UNLOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 227 return (NULL); 228 } 229 return ((void *)&res); 230} 231 232 233void * 234nlm_granted_res_1(argp, clnt) 235 nlm_res *argp; 236 CLIENT *clnt; 237{ 238 static char res; 239 240 bzero((char *)&res, sizeof(res)); 241 if (clnt_call(clnt, NLM_GRANTED_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 242 return (NULL); 243 } 244 return ((void *)&res); 245} 246 247 248nlm_shareres * 249nlm_share_3(argp, clnt) 250 nlm_shareargs *argp; 251 CLIENT *clnt; 252{ 253 static nlm_shareres res; 254 255 bzero((char *)&res, sizeof(res)); 256 if (clnt_call(clnt, NLM_SHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) { 257 return (NULL); 258 } 259 return (&res); 260} 261 262 263nlm_shareres * 264nlm_unshare_3(argp, clnt) 265 nlm_shareargs *argp; 266 CLIENT *clnt; 267{ 268 static nlm_shareres res; 269 270 bzero((char *)&res, sizeof(res)); 271 if (clnt_call(clnt, NLM_UNSHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) { 272 return (NULL); 273 } 274 return (&res); 275} 276 277 278nlm_res * 279nlm_nm_lock_3(argp, clnt) 280 nlm_lockargs *argp; 281 CLIENT *clnt; 282{ 283 static nlm_res res; 284 285 bzero((char *)&res, sizeof(res)); 286 if (clnt_call(clnt, NLM_NM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) { 287 return (NULL); 288 } 289 return (&res); 290} 291 292 293void * 294nlm_free_all_3(argp, clnt) 295 nlm_notify *argp; 296 CLIENT *clnt; 297{ 298 static char res; 299 300 bzero((char *)&res, sizeof(res)); 301 if (clnt_call(clnt, NLM_FREE_ALL, xdr_nlm_notify, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 302 return (NULL); 303 } 304 return ((void *)&res); 305} 306 307 308int main(int argc, char **argv) 309{ 310 CLIENT *cli; 311 nlm_res res_block; 312 nlm_res *out; 313 nlm_lockargs arg; 314 struct timeval tim; 315 316 printf("Creating client for host %s\n", argv[1]); 317 cli = clnt_create(argv[1], NLM_PROG, NLM_VERS, "udp"); 318 if (!cli) { 319 errx(1, "Failed to create client\n"); 320 /* NOTREACHED */ 321 } 322 clnt_control(cli, CLGET_TIMEOUT, &tim); 323 printf("Default timeout was %d.%d\n", tim.tv_sec, tim.tv_usec); 324 tim.tv_usec = -1; 325 tim.tv_sec = -1; 326 clnt_control(cli, CLSET_TIMEOUT, &tim); 327 clnt_control(cli, CLGET_TIMEOUT, &tim); 328 printf("timeout now %d.%d\n", tim.tv_sec, tim.tv_usec); 329 330 331 arg.cookie.n_len = 4; 332 arg.cookie.n_bytes = "hello"; 333 arg.block = 0; 334 arg.exclusive = 0; 335 arg.reclaim = 0; 336 arg.state = 0x1234; 337 arg.alock.caller_name = "localhost"; 338 arg.alock.fh.n_len = 32; 339 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"; 340 arg.alock.oh.n_len = 8; 341 arg.alock.oh.n_bytes = "\x00\x00\x02\xff\xff\xff\xd3"; 342 arg.alock.svid = 0x5678; 343 arg.alock.l_offset = 0; 344 arg.alock.l_len = 100; 345 346 res_block.stat.stat = nlm_granted; 347 res_block.cookie.n_bytes = "hello"; 348 res_block.cookie.n_len = 5; 349 350#if 0 351 if (nlm_lock_res_1(&res_block, cli)) 352 printf("Success!\n"); 353 else 354 printf("Fail\n"); 355#else 356 if (out = nlm_lock_msg_1(&arg, cli)) { 357 printf("Success!\n"); 358 printf("out->stat = %d", out->stat); 359 } else { 360 printf("Fail\n"); 361 } 362#endif 363 364 return 0; 365} 366