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