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