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