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