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 static const char rcsid[] = "$FreeBSD$"; 13 #endif 14 #endif /* not lint */ 15 16 /* Default timeout can be changed using clnt_control() */ 17 static struct timeval TIMEOUT = { 0, 0 }; 18 19 nlm_testres * 20 nlm_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 34 nlm_res * 35 nlm_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 52 nlm_res * 53 nlm_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 67 nlm_res * 68 nlm_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 82 nlm_res * 83 nlm_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 97 void * 98 nlm_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 112 void * 113 nlm_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 128 void * 129 nlm_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 143 void * 144 nlm_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 158 void * 159 nlm_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 173 void * 174 nlm_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 188 void * 189 nlm_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 203 void * 204 nlm_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 218 void * 219 nlm_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 233 void * 234 nlm_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 248 nlm_shareres * 249 nlm_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 263 nlm_shareres * 264 nlm_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 278 nlm_res * 279 nlm_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 293 void * 294 nlm_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 308 int 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