Lines Matching refs:xprt

158 svc_vc_xprtfree(SVCXPRT *xprt)  in svc_vc_xprtfree()  argument
161 SVCXPRT_EXT *xt = xprt ? SVCEXT(xprt) : NULL; in svc_vc_xprtfree()
162 struct cf_rendezvous *r = xprt ? in svc_vc_xprtfree()
164 (struct cf_rendezvous *)xprt->xp_p1 : NULL; in svc_vc_xprtfree()
166 if (!xprt) in svc_vc_xprtfree()
169 if (xprt->xp_tp) in svc_vc_xprtfree()
170 free(xprt->xp_tp); in svc_vc_xprtfree()
171 if (xprt->xp_netid) in svc_vc_xprtfree()
172 free(xprt->xp_netid); in svc_vc_xprtfree()
174 if (xprt->xp_ltaddr.buf) in svc_vc_xprtfree()
175 free(xprt->xp_ltaddr.buf); in svc_vc_xprtfree()
176 if (xprt->xp_rtaddr.buf) in svc_vc_xprtfree()
177 free(xprt->xp_rtaddr.buf); in svc_vc_xprtfree()
186 svc_xprt_free(xprt); in svc_vc_xprtfree()
201 SVCXPRT *xprt; in svc_vc_create_private() local
211 if ((xprt = svc_xprt_alloc()) == NULL) { in svc_vc_create_private()
217 svc_flags(xprt) |= SVC_RENDEZVOUS; in svc_vc_create_private()
223 svc_vc_xprtfree(xprt); in svc_vc_create_private()
234 svc_vc_xprtfree(xprt); in svc_vc_create_private()
247 svc_vc_xprtfree(xprt); in svc_vc_create_private()
257 svc_vc_xprtfree(xprt); in svc_vc_create_private()
268 svc_vc_xprtfree(xprt); in svc_vc_create_private()
276 xprt->xp_fd = fd; in svc_vc_create_private()
277 xprt->xp_p1 = (caddr_t)r; in svc_vc_create_private()
278 xprt->xp_p2 = NULL; in svc_vc_create_private()
279 xprt->xp_verf = _null_auth; in svc_vc_create_private()
280 xprt->xp_ops = svc_vc_rendezvous_ops(); in svc_vc_create_private()
282 SVC_XP_AUTH(xprt).svc_ah_ops = svc_auth_any_ops; in svc_vc_create_private()
284 SVC_XP_AUTH(xprt).svc_ah_private = NULL; in svc_vc_create_private()
286 return (xprt); in svc_vc_create_private()
292 SVCXPRT *xprt; in svc_vc_create() local
294 if ((xprt = svc_vc_create_private(fd, sendsize, recvsize)) != NULL) in svc_vc_create()
295 xprt_register(xprt); in svc_vc_create()
296 return (xprt); in svc_vc_create()
302 SVCXPRT *xprt; in svc_vc_xprtcopy() local
306 if ((xprt = svc_xprt_alloc()) == NULL) in svc_vc_xprtcopy()
310 SVCEXT(xprt)->parent = parent; in svc_vc_xprtcopy()
312 SVCEXT(xprt)->flags = SVCEXT(parent)->flags; in svc_vc_xprtcopy()
314 xprt->xp_fd = fd; in svc_vc_xprtcopy()
315 xprt->xp_ops = svc_vc_rendezvous_ops(); in svc_vc_xprtcopy()
317 xprt->xp_tp = (char *)strdup(parent->xp_tp); in svc_vc_xprtcopy()
318 if (xprt->xp_tp == NULL) { in svc_vc_xprtcopy()
320 svc_vc_xprtfree(xprt); in svc_vc_xprtcopy()
325 xprt->xp_netid = (char *)strdup(parent->xp_netid); in svc_vc_xprtcopy()
326 if (xprt->xp_netid == NULL) { in svc_vc_xprtcopy()
328 if (xprt->xp_tp) in svc_vc_xprtcopy()
329 free(xprt->xp_tp); in svc_vc_xprtcopy()
330 svc_vc_xprtfree(xprt); in svc_vc_xprtcopy()
338 xprt->xp_ltaddr = parent->xp_ltaddr; in svc_vc_xprtcopy()
339 xprt->xp_rtaddr = parent->xp_rtaddr; /* XXX - not used for rendezvous */ in svc_vc_xprtcopy()
340 xprt->xp_type = parent->xp_type; in svc_vc_xprtcopy()
341 xprt->xp_verf = parent->xp_verf; in svc_vc_xprtcopy()
344 svc_vc_xprtfree(xprt); in svc_vc_xprtcopy()
347 xprt->xp_p1 = (caddr_t)r; in svc_vc_xprtcopy()
360 svc_vc_xprtfree(xprt); in svc_vc_xprtcopy()
366 svc_vc_xprtfree(xprt); in svc_vc_xprtcopy()
370 return (xprt); in svc_vc_xprtcopy()
379 __svc_vc_setflag(SVCXPRT *xprt, int flag) in __svc_vc_setflag() argument
384 r = (struct cf_rendezvous *)xprt->xp_p1; in __svc_vc_setflag()
439 SVCXPRT *xprt; in svc_fd_create() local
441 if ((xprt = svc_fd_create_private(fd, sendsize, recvsize)) != NULL) in svc_fd_create()
442 xprt_register(xprt); in svc_fd_create()
443 return (xprt); in svc_fd_create()
447 svc_fd_xprtfree(SVCXPRT *xprt) in svc_fd_xprtfree() argument
450 SVCXPRT_EXT *xt = xprt ? SVCEXT(xprt) : NULL; in svc_fd_xprtfree()
452 struct cf_conn *cd = xprt ? (struct cf_conn *)xprt->xp_p1 : NULL; in svc_fd_xprtfree()
454 if (!xprt) in svc_fd_xprtfree()
457 if (xprt->xp_tp) in svc_fd_xprtfree()
458 free(xprt->xp_tp); in svc_fd_xprtfree()
459 if (xprt->xp_netid) in svc_fd_xprtfree()
460 free(xprt->xp_netid); in svc_fd_xprtfree()
462 if (xprt->xp_ltaddr.buf) in svc_fd_xprtfree()
463 free(xprt->xp_ltaddr.buf); in svc_fd_xprtfree()
464 if (xprt->xp_rtaddr.buf) in svc_fd_xprtfree()
465 free(xprt->xp_rtaddr.buf); in svc_fd_xprtfree()
471 if (xt && (xt->parent == NULL) && xprt->xp_p2) { in svc_fd_xprtfree()
473 free(((struct netbuf *)xprt->xp_p2)->buf); in svc_fd_xprtfree()
474 free(xprt->xp_p2); in svc_fd_xprtfree()
476 svc_xprt_free(xprt); in svc_fd_xprtfree()
483 SVCXPRT *xprt; in makefd_xprt() local
486 xprt = svc_xprt_alloc(); in makefd_xprt()
487 if (xprt == NULL) { in makefd_xprt()
492 svc_flags(xprt) |= SVC_CONNECTION; in makefd_xprt()
497 svc_fd_xprtfree(xprt); in makefd_xprt()
508 xdrrec_create(&(cd->xdrs), sendsize, 0, (caddr_t)xprt, in makefd_xprt()
513 svc_fd_xprtfree(xprt); in makefd_xprt()
525 svc_fd_xprtfree(xprt); in makefd_xprt()
540 svc_fd_xprtfree(xprt); in makefd_xprt()
558 svc_fd_xprtfree(xprt); in makefd_xprt()
563 xdrrec_create(svc_xdrs[fd], 0, recvsize, (caddr_t)xprt, in makefd_xprt()
570 svc_fd_xprtfree(xprt); in makefd_xprt()
576 xprt->xp_p1 = (caddr_t)cd; in makefd_xprt()
577 xprt->xp_p2 = NULL; in makefd_xprt()
578 xprt->xp_verf.oa_base = cd->verf_body; in makefd_xprt()
579 xprt->xp_ops = svc_vc_ops(); /* truely deals with calls */ in makefd_xprt()
580 xprt->xp_fd = fd; in makefd_xprt()
581 return (xprt); in makefd_xprt()
587 SVCXPRT *xprt; in svc_fd_xprtcopy() local
590 if ((xprt = svc_xprt_alloc()) == NULL) in svc_fd_xprtcopy()
594 SVCEXT(xprt)->parent = parent; in svc_fd_xprtcopy()
596 SVCEXT(xprt)->flags = SVCEXT(parent)->flags; in svc_fd_xprtcopy()
598 xprt->xp_fd = parent->xp_fd; in svc_fd_xprtcopy()
599 xprt->xp_ops = svc_vc_ops(); in svc_fd_xprtcopy()
601 xprt->xp_tp = (char *)strdup(parent->xp_tp); in svc_fd_xprtcopy()
602 if (xprt->xp_tp == NULL) { in svc_fd_xprtcopy()
604 svc_fd_xprtfree(xprt); in svc_fd_xprtcopy()
609 xprt->xp_netid = (char *)strdup(parent->xp_netid); in svc_fd_xprtcopy()
610 if (xprt->xp_netid == NULL) { in svc_fd_xprtcopy()
612 if (xprt->xp_tp) in svc_fd_xprtcopy()
613 free(xprt->xp_tp); in svc_fd_xprtcopy()
614 svc_fd_xprtfree(xprt); in svc_fd_xprtcopy()
621 xprt->xp_ltaddr = parent->xp_ltaddr; in svc_fd_xprtcopy()
622 xprt->xp_rtaddr = parent->xp_rtaddr; in svc_fd_xprtcopy()
623 xprt->xp_type = parent->xp_type; in svc_fd_xprtcopy()
626 svc_fd_xprtfree(xprt); in svc_fd_xprtcopy()
640 xdrrec_create(&(cd->xdrs), cd->sendsize, 0, (caddr_t)xprt, in svc_fd_xprtcopy()
644 svc_fd_xprtfree(xprt); in svc_fd_xprtcopy()
647 xprt->xp_verf.oa_base = cd->verf_body; in svc_fd_xprtcopy()
648 xprt->xp_p1 = (char *)cd; in svc_fd_xprtcopy()
649 xprt->xp_p2 = parent->xp_p2; /* shared */ in svc_fd_xprtcopy()
651 return (xprt); in svc_fd_xprtcopy()
666 rendezvous_request(SVCXPRT *xprt, struct rpc_msg *msg) in rendezvous_request() argument
673 r = (struct cf_rendezvous *)xprt->xp_p1; in rendezvous_request()
676 switch (t_look(xprt->xp_fd)) { in rendezvous_request()
678 (void) t_rcvdis(xprt->xp_fd, NULL); in rendezvous_request()
683 if (t_listen(xprt->xp_fd, r->t_call) == -1) { in rendezvous_request()
688 if (t_look(xprt->xp_fd) == T_DISCONNECT) in rendezvous_request()
689 (void) t_rcvdis(xprt->xp_fd, NULL); in rendezvous_request()
702 if (xprt->xp_tp) { in rendezvous_request()
703 tpname = xprt->xp_tp; in rendezvous_request()
712 if ((nconf = __rpcfd_to_nconf(xprt->xp_fd, xprt->xp_type)) in rendezvous_request()
722 do_accept(xprt->xp_fd, tpname, xprt->xp_netid, r); in rendezvous_request()
740 SVCXPRT *xprt; in do_accept() local
982 xprt = makefd_xprt(destfd, r->sendsize, r->recvsize, r->cf_tsdu, in do_accept()
984 if (xprt == NULL) { in do_accept()
996 xprt->xp_rtaddr.len = tcp->addr.len; in do_accept()
997 xprt->xp_rtaddr.maxlen = tcp->addr.len; in do_accept()
998 if ((xprt->xp_rtaddr.buf = malloc(tcp->addr.len)) == NULL) in do_accept()
1000 (void) memcpy(xprt->xp_rtaddr.buf, tcp->addr.buf, tcp->addr.len); in do_accept()
1003 xprt->xp_ltaddr.maxlen = sizeof (struct sockaddr_in); in do_accept()
1004 if ((xprt->xp_ltaddr.buf = in do_accept()
1005 malloc(xprt->xp_ltaddr.maxlen)) == NULL) in do_accept()
1007 if (t_getname(destfd, &xprt->xp_ltaddr, LOCALNAME) < 0) { in do_accept()
1013 xprt->xp_ltaddr.maxlen = sizeof (struct sockaddr_in6); in do_accept()
1014 if ((xprt->xp_ltaddr.buf = in do_accept()
1015 malloc(xprt->xp_ltaddr.maxlen)) == NULL) in do_accept()
1017 if (t_getname(destfd, &xprt->xp_ltaddr, LOCALNAME) < 0) { in do_accept()
1024 xprt->xp_tp = strdup(tpname); in do_accept()
1025 xprt->xp_netid = strdup(netid); in do_accept()
1026 if ((xprt->xp_tp == NULL) || in do_accept()
1027 (xprt->xp_netid == NULL)) { in do_accept()
1031 xprt->xp_p2 = malloc(sizeof (struct netbuf)); in do_accept()
1033 if (xprt->xp_p2 != NULL) { in do_accept()
1035 struct netbuf *netptr = (struct netbuf *)xprt->xp_p2; in do_accept()
1054 if (!svc_vc_nonblock(xprt_srcfd, xprt)) in do_accept()
1062 xprt->xp_closeclnt = xprt_srcfd->xp_closeclnt; in do_accept()
1063 xprt_register(xprt); in do_accept()
1083 if (xprt) in do_accept()
1084 svc_vc_destroy(xprt); in do_accept()
1139 rendezvous_stat(SVCXPRT *xprt) in rendezvous_stat() argument
1145 svc_vc_destroy(SVCXPRT *xprt) in svc_vc_destroy() argument
1148 _svc_vc_destroy_private(xprt, TRUE); in svc_vc_destroy()
1154 _svc_vc_destroy_private(SVCXPRT *xprt, bool_t lock_not_held) in _svc_vc_destroy_private() argument
1158 if (SVCEXT(xprt)->parent) in _svc_vc_destroy_private()
1160 xprt = SVCEXT(xprt)->parent; in _svc_vc_destroy_private()
1162 svc_flags(xprt) |= SVC_DEFUNCT; in _svc_vc_destroy_private()
1164 if (SVCEXT(xprt)->refcnt > 0) in _svc_vc_destroy_private()
1168 if (xprt->xp_closeclnt != NULL) { in _svc_vc_destroy_private()
1169 svc_errorhandler_t cb = xprt->xp_closeclnt; in _svc_vc_destroy_private()
1175 xprt->xp_closeclnt = NULL; in _svc_vc_destroy_private()
1176 cb(xprt, (xprt->xp_rtaddr.len != 0)); in _svc_vc_destroy_private()
1179 __xprt_unregister_private(xprt, lock_not_held); in _svc_vc_destroy_private()
1180 (void) t_close(xprt->xp_fd); in _svc_vc_destroy_private()
1183 svc_xprt_destroy(xprt); in _svc_vc_destroy_private()
1186 if (svc_type(xprt) == SVC_RENDEZVOUS) in _svc_vc_destroy_private()
1187 svc_vc_xprtfree(xprt); in _svc_vc_destroy_private()
1189 svc_fd_xprtfree(xprt); in _svc_vc_destroy_private()
1195 svc_vc_control(SVCXPRT *xprt, const uint_t rq, void *in) in svc_vc_control() argument
1199 xprt->xp_closeclnt = (svc_errorhandler_t)in; in svc_vc_control()
1202 *(svc_errorhandler_t *)in = xprt->xp_closeclnt; in svc_vc_control()
1205 if (xprt->xp_p1 == NULL) in svc_vc_control()
1208 *(uint32_t *)in = ((struct cf_conn *)(xprt->xp_p1))->x_id; in svc_vc_control()
1216 rendezvous_control(SVCXPRT *xprt, const uint_t rq, void *in) in rendezvous_control() argument
1223 xprt->xp_closeclnt = (svc_errorhandler_t)in; in rendezvous_control()
1226 *(svc_errorhandler_t *)in = xprt->xp_closeclnt; in rendezvous_control()
1230 r = (struct cf_rendezvous *)xprt->xp_p1; in rendezvous_control()
1245 r = (struct cf_rendezvous *)xprt->xp_p1; in rendezvous_control()
1254 r = (struct cf_rendezvous *)xprt->xp_p1; in rendezvous_control()
1291 read_vc(SVCXPRT *xprt, caddr_t buf, int len) in read_vc() argument
1293 int fd = xprt->xp_fd; in read_vc()
1302 if (svc_failed(xprt)) in read_vc()
1306 if (((struct cf_conn *)(xprt->xp_p1))->cf_conn_nonblock) { in read_vc()
1321 if ((len = t_rcvnonblock(xprt, buf, len)) >= 0) { in read_vc()
1323 update_nonblock_timestamps(xprt); in read_vc()
1357 ((struct cf_conn *)(xprt->xp_p1))->strm_stat = XPRT_DIED; in read_vc()
1359 svc_flags(xprt) |= SVC_FAILED; in read_vc()
1368 t_rcvnonblock(SVCXPRT *xprt, caddr_t buf, int len) in t_rcvnonblock() argument
1370 int fd = xprt->xp_fd; in t_rcvnonblock()
1418 SVCXPRT *xprt; in svc_timeout_nonblock_xprt_and_LRU() local
1444 if ((xprt = svc_xports[fd_idx]) == NULL) { in svc_timeout_nonblock_xprt_and_LRU()
1449 if (svc_type(xprt) != SVC_CONNECTION) { in svc_timeout_nonblock_xprt_and_LRU()
1453 cd = (struct cf_conn *)xprt->xp_p1; in svc_timeout_nonblock_xprt_and_LRU()
1460 dead_xprt[dead_idx++] = xprt; in svc_timeout_nonblock_xprt_and_LRU()
1466 candidate_xprt = xprt; in svc_timeout_nonblock_xprt_and_LRU()
1527 write_vc(SVCXPRT *xprt, caddr_t buf, int len) in write_vc() argument
1536 maxsz = ((struct cf_conn *)(xprt->xp_p1))->cf_tsdu; in write_vc()
1538 nonblock = ((struct cf_conn *)(xprt->xp_p1))->cf_conn_nonblock; in write_vc()
1542 if ((len = t_snd(xprt->xp_fd, buf, (unsigned)len, in write_vc()
1545 switch (t_look(xprt->xp_fd)) { in write_vc()
1547 (void) t_rcvdis(xprt->xp_fd, NULL); in write_vc()
1550 (void) t_rcvrel(xprt->xp_fd); in write_vc()
1551 (void) t_sndrel(xprt->xp_fd); in write_vc()
1558 ((struct cf_conn *)(xprt->xp_p1))->strm_stat = in write_vc()
1561 svc_flags(xprt) |= SVC_FAILED; in write_vc()
1570 pfd.fd = xprt->xp_fd; in write_vc()
1580 if ((i = t_snd(xprt->xp_fd, buf, in write_vc()
1583 switch (t_look(xprt->xp_fd)) { in write_vc()
1585 (void) t_rcvdis(xprt->xp_fd, NULL); in write_vc()
1588 (void) t_rcvrel(xprt->xp_fd); in write_vc()
1618 ((struct cf_conn *)(xprt->xp_p1))->strm_stat = in write_vc()
1621 svc_flags(xprt) |= SVC_FAILED; in write_vc()
1629 svc_vc_stat(SVCXPRT *xprt) in svc_vc_stat() argument
1632 SVCXPRT *parent = SVCEXT(xprt)->parent ? SVCEXT(xprt)->parent : xprt; in svc_vc_stat()
1635 if (svc_failed(parent) || svc_failed(xprt)) in svc_vc_stat()
1637 if (!xdrrec_eof(svc_xdrs[xprt->xp_fd])) in svc_vc_stat()
1644 if (svc_failed(parent) || svc_failed(xprt)) in svc_vc_stat()
1652 svc_vc_recv(SVCXPRT *xprt, struct rpc_msg *msg) in svc_vc_recv() argument
1655 struct cf_conn *cd = (struct cf_conn *)(xprt->xp_p1); in svc_vc_recv()
1656 XDR *xdrs = svc_xdrs[xprt->xp_fd]; in svc_vc_recv()
1674 svc_flags(xprt) |= SVC_FAILED; in svc_vc_recv()
1694 svc_flags(xprt) |= SVC_FAILED; in svc_vc_recv()
1701 svc_vc_getargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr) in svc_vc_getargs() argument
1706 dummy = SVCAUTH_UNWRAP(&SVC_XP_AUTH(xprt), svc_xdrs[xprt->xp_fd], in svc_vc_getargs()
1709 svc_args_done(xprt); in svc_vc_getargs()
1714 svc_vc_freeargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr) in svc_vc_freeargs() argument
1717 XDR *xdrs = &(((struct cf_conn *)(xprt->xp_p1))->xdrs); in svc_vc_freeargs()
1724 svc_vc_reply(SVCXPRT *xprt, struct rpc_msg *msg) in svc_vc_reply() argument
1727 struct cf_conn *cd = (struct cf_conn *)(xprt->xp_p1); in svc_vc_reply()
1736 (void) mutex_lock(&svc_send_mutex(SVCEXT(xprt)->parent)); in svc_vc_reply()
1752 &SVC_XP_AUTH(xprt), xdrs, xdr_results, xdr_location))) { in svc_vc_reply()
1759 (void) mutex_unlock(&svc_send_mutex(SVCEXT(xprt)->parent)); in svc_vc_reply()
1814 __svc_vc_dupcache_init(SVCXPRT *xprt, void *condition, int basis) in __svc_vc_dupcache_init() argument
1818 &(((struct cf_rendezvous *)xprt->xp_p1)->cf_cache))); in __svc_vc_dupcache_init()