Lines Matching defs:cu
168 struct cu_data *cu = NULL; /* private data */
241 cu = malloc(sizeof (*cu) + sendsz + recvsz);
242 if (cu == NULL)
244 memset(cu, 0, sizeof(*cu));
245 (void) memcpy(&cu->cu_raddr, svcaddr->buf, (size_t)svcaddr->len);
246 cu->cu_rlen = svcaddr->len;
247 cu->cu_outbuf = &cu->cu_inbuf[recvsz];
250 cu->cu_wait.tv_sec = 15; /* heuristically chosen */
251 cu->cu_wait.tv_usec = 0;
253 cu->cu_wait.tv_sec = 0; /* for testing, 10x / second */
254 cu->cu_wait.tv_usec = 100000;
256 cu->cu_total.tv_sec = -1;
257 cu->cu_total.tv_usec = -1;
258 cu->cu_sendsz = sendsz;
259 cu->cu_recvsz = recvsz;
263 xdrmem_create(&(cu->cu_outxdrs), cu->cu_outbuf, sendsz, XDR_ENCODE);
264 if (! xdr_callhdr(&(cu->cu_outxdrs), &call_msg)) {
269 cu->cu_xdrpos = XDR_GETPOS(&(cu->cu_outxdrs));
282 cu->cu_closeit = FALSE;
283 cu->cu_fd = fd;
284 cu->cu_pfdp.fd = cu->cu_fd;
285 cu->cu_pfdp.events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND;
287 cl->cl_private = (caddr_t)(void *)cu;
302 if (cu)
303 mem_free(cu, sizeof (*cu) + sendsz + recvsz);
318 struct cu_data *cu;
340 cu = (struct cu_data *)cl->cl_private;
345 while (dg_fd_locks[cu->cu_fd])
346 cond_wait(&dg_cv[cu->cu_fd], &clnt_fd_lock);
347 dg_fd_locks[cu->cu_fd] = __rpc_lock_value;
349 if (cu->cu_total.tv_usec == -1) {
352 timeout = cu->cu_total; /* use default timeout */
357 retransmit_time = next_sendtime = cu->cu_wait;
361 xdrs = &(cu->cu_outxdrs);
363 XDR_SETPOS(xdrs, cu->cu_xdrpos);
367 (*(u_int32_t *)(void *)(cu->cu_outbuf))++;
371 cu->cu_error.re_status = RPC_CANTENCODEARGS;
377 if ((size_t)sendto(cu->cu_fd, cu->cu_outbuf, outlen, 0,
378 (struct sockaddr *)(void *)&cu->cu_raddr, (socklen_t)cu->cu_rlen)
380 cu->cu_error.re_errno = errno;
381 cu->cu_error.re_status = RPC_CANTSEND;
389 cu->cu_error.re_status = RPC_TIMEDOUT;
412 n = pollts(&cu->cu_pfdp, 1, &ts, maskp);
416 recvlen = recvfrom(cu->cu_fd, cu->cu_inbuf,
417 cu->cu_recvsz, 0, NULL, NULL);
421 cu->cu_error.re_errno = errno;
422 cu->cu_error.re_status = RPC_CANTRECV;
426 if (memcmp(cu->cu_inbuf, cu->cu_outbuf,
433 cu->cu_error.re_errno = errno;
434 cu->cu_error.re_status = RPC_CANTRECV;
443 cu->cu_error.re_status = RPC_TIMEDOUT;
463 xdrmem_create(&reply_xdrs, cu->cu_inbuf, (u_int)recvlen, XDR_DECODE);
469 cu->cu_error.re_status = RPC_SUCCESS;
471 _seterr_reply(&reply_msg, &(cu->cu_error));
473 if (cu->cu_error.re_status == RPC_SUCCESS) {
476 cu->cu_error.re_status = RPC_AUTHERROR;
477 cu->cu_error.re_why = AUTH_INVALIDRESP;
489 else if (cu->cu_error.re_status == RPC_AUTHERROR)
498 cu->cu_error.re_status = RPC_CANTDECODERES;
502 release_fd_lock(cu->cu_fd, mask);
503 return (cu->cu_error.re_status);
509 struct cu_data *cu;
514 cu = (struct cu_data *)cl->cl_private;
515 *errp = cu->cu_error;
521 struct cu_data *cu;
530 cu = (struct cu_data *)cl->cl_private;
531 xdrs = &(cu->cu_outxdrs);
536 while (dg_fd_locks[cu->cu_fd])
537 cond_wait(&dg_cv[cu->cu_fd], &clnt_fd_lock);
542 cond_signal(&dg_cv[cu->cu_fd]);
555 struct cu_data *cu;
565 cu = (struct cu_data *)cl->cl_private;
570 while (dg_fd_locks[cu->cu_fd])
571 cond_wait(&dg_cv[cu->cu_fd], &clnt_fd_lock);
572 dg_fd_locks[cu->cu_fd] = __rpc_lock_value;
576 cu
577 release_fd_lock(cu->cu_fd, mask);
580 cu->cu_closeit = FALSE;
581 release_fd_lock(cu->cu_fd, mask);
587 release_fd_lock(cu->cu_fd, mask);
593 release_fd_lock(cu->cu_fd, mask);
596 cu->cu_total = *(struct timeval *)(void *)info;
599 *(struct timeval *)(void *)info = cu->cu_total;
603 (void) memcpy(info, &cu->cu_raddr, (size_t)cu->cu_rlen);
607 release_fd_lock(cu->cu_fd, mask);
610 cu->cu_wait = *(struct timeval *)(void *)info;
613 *(struct timeval *)(void *)info = cu->cu_wait;
616 *(int *)(void *)info = cu->cu_fd;
620 addr->buf = &cu->cu_raddr;
621 addr->len = cu->cu_rlen;
622 addr->maxlen = sizeof cu->cu_raddr;
626 if (addr->len < sizeof cu->cu_raddr) {
627 release_fd_lock(cu->cu_fd, mask);
630 (void) memcpy(&cu->cu_raddr, addr->buf, (size_t)addr->len);
631 cu->cu_rlen = addr->len;
640 ntohl(*(u_int32_t *)(void *)cu->cu_outbuf);
645 *(u_int32_t *)(void *)cu->cu_outbuf =
658 ntohl(*(u_int32_t *)(void *)(cu->cu_outbuf +
663 *(u_int32_t *)(void *)(cu->cu_outbuf + 4 * BYTES_PER_XDR_UNIT)
675 ntohl(*(u_int32_t *)(void *)(cu->cu_outbuf +
680 *(u_int32_t *)(void *)(cu->cu_outbuf + 3 * BYTES_PER_XDR_UNIT)
685 release_fd_lock(cu->cu_fd, mask);
688 release_fd_lock(cu->cu_fd, mask);
695 struct cu_data *cu;
704 cu = (struct cu_data *)cl->cl_private;
705 cu_fd = cu->cu_fd;
712 if (cu->cu_closeit)
714 XDR_DESTROY(&(cu->cu_outxdrs));
715 mem_free(cu, (sizeof (*cu) + cu->cu_sendsz + cu->cu_recvsz));