Lines Matching refs:xprt

70 #define	rpc_buffer(xprt) ((xprt)->xp_p1)  argument
93 svc_dg_xprtfree(SVCXPRT *xprt) in svc_dg_xprtfree() argument
96 SVCXPRT_EXT *xt = xprt ? SVCEXT(xprt) : NULL; in svc_dg_xprtfree()
98 struct svc_dg_data *su = xprt ? get_svc_dg_data(xprt) : NULL; in svc_dg_xprtfree()
100 if (xprt == NULL) in svc_dg_xprtfree()
102 if (xprt->xp_netid) in svc_dg_xprtfree()
103 free(xprt->xp_netid); in svc_dg_xprtfree()
104 if (xprt->xp_tp) in svc_dg_xprtfree()
105 free(xprt->xp_tp); in svc_dg_xprtfree()
107 if (xprt->xp_ltaddr.buf) in svc_dg_xprtfree()
108 free(xprt->xp_ltaddr.buf); in svc_dg_xprtfree()
109 if (xprt->xp_rtaddr.buf) in svc_dg_xprtfree()
110 free(xprt->xp_rtaddr.buf); in svc_dg_xprtfree()
115 if (rpc_buffer(xprt)) in svc_dg_xprtfree()
116 free(rpc_buffer(xprt)); in svc_dg_xprtfree()
117 svc_xprt_free(xprt); in svc_dg_xprtfree()
123 SVCXPRT *xprt; in svc_dg_create_private() local
149 if ((xprt = svc_xprt_alloc()) == NULL) in svc_dg_create_private()
152 svc_flags(xprt) |= SVC_DGRAM; in svc_dg_create_private()
158 if ((rpc_buffer(xprt) = malloc(su->su_iosz)) == NULL) in svc_dg_create_private()
160 xdrmem_create(&(su->su_xdrs), rpc_buffer(xprt), su->su_iosz, in svc_dg_create_private()
163 xprt->xp_fd = fd; in svc_dg_create_private()
164 xprt->xp_p2 = (caddr_t)su; in svc_dg_create_private()
165 xprt->xp_verf.oa_base = su->su_verfbody; in svc_dg_create_private()
166 xprt->xp_ops = svc_dg_ops(); in svc_dg_create_private()
170 su->su_tudata.udata.buf = (char *)rpc_buffer(xprt); in svc_dg_create_private()
175 SVC_XP_AUTH(xprt).svc_ah_ops = svc_auth_any_ops; in svc_dg_create_private()
177 SVC_XP_AUTH(xprt).svc_ah_private = NULL; in svc_dg_create_private()
178 return (xprt); in svc_dg_create_private()
181 if (xprt) in svc_dg_create_private()
182 svc_dg_xprtfree(xprt); in svc_dg_create_private()
189 SVCXPRT *xprt; in svc_dg_create() local
191 if ((xprt = svc_dg_create_private(fd, sendsize, recvsize)) != NULL) in svc_dg_create()
192 xprt_register(xprt); in svc_dg_create()
193 return (xprt); in svc_dg_create()
199 SVCXPRT *xprt; in svc_dg_xprtcopy() local
203 if ((xprt = svc_xprt_alloc()) == NULL) in svc_dg_xprtcopy()
207 SVCEXT(xprt)->parent = parent; in svc_dg_xprtcopy()
209 SVCEXT(xprt)->flags = SVCEXT(parent)->flags; in svc_dg_xprtcopy()
211 xprt->xp_fd = parent->xp_fd; in svc_dg_xprtcopy()
212 xprt->xp_port = parent->xp_port; in svc_dg_xprtcopy()
213 xprt->xp_ops = svc_dg_ops(); in svc_dg_xprtcopy()
215 xprt->xp_tp = (char *)strdup(parent->xp_tp); in svc_dg_xprtcopy()
216 if (xprt->xp_tp == NULL) { in svc_dg_xprtcopy()
218 svc_dg_xprtfree(xprt); in svc_dg_xprtcopy()
223 xprt->xp_netid = (char *)strdup(parent->xp_netid); in svc_dg_xprtcopy()
224 if (xprt->xp_netid == NULL) { in svc_dg_xprtcopy()
228 svc_dg_xprtfree(xprt); in svc_dg_xprtcopy()
232 xprt->xp_ltaddr = parent->xp_ltaddr; /* shared with parent */ in svc_dg_xprtcopy()
234 xprt->xp_rtaddr = parent->xp_rtaddr; in svc_dg_xprtcopy()
235 xprt->xp_rtaddr.buf = malloc(xprt->xp_rtaddr.maxlen); in svc_dg_xprtcopy()
236 if (xprt->xp_rtaddr.buf == NULL) { in svc_dg_xprtcopy()
237 svc_dg_xprtfree(xprt); in svc_dg_xprtcopy()
240 (void) memcpy(xprt->xp_rtaddr.buf, parent->xp_rtaddr.buf, in svc_dg_xprtcopy()
241 xprt->xp_rtaddr.maxlen); in svc_dg_xprtcopy()
242 xprt->xp_type = parent->xp_type; in svc_dg_xprtcopy()
245 svc_dg_xprtfree(xprt); in svc_dg_xprtcopy()
250 if ((rpc_buffer(xprt) = malloc(su->su_iosz)) == NULL) { in svc_dg_xprtcopy()
251 svc_dg_xprtfree(xprt); in svc_dg_xprtcopy()
255 xdrmem_create(&(su->su_xdrs), rpc_buffer(xprt), su->su_iosz, in svc_dg_xprtcopy()
259 su->su_tudata.udata.buf = (char *)rpc_buffer(xprt); in svc_dg_xprtcopy()
263 xprt->xp_p2 = (caddr_t)su; /* get_svc_dg_data(xprt) = su */ in svc_dg_xprtcopy()
264 xprt->xp_verf.oa_base = su->su_verfbody; in svc_dg_xprtcopy()
266 return (xprt); in svc_dg_xprtcopy()
271 svc_dg_stat(SVCXPRT *xprt) in svc_dg_stat() argument
312 set_src_addr(SVCXPRT *xprt, struct netbuf *opt) in set_src_addr() argument
321 nbufp = (struct netbuf *)xprt->xp_p2; in set_src_addr()
322 ltaddr = &xprt->xp_ltaddr; in set_src_addr()
360 svc_dg_recv(SVCXPRT *xprt, struct rpc_msg *msg) in svc_dg_recv() argument
363 struct svc_dg_data *su = get_svc_dg_data(xprt); in svc_dg_recv()
372 tu_data->addr = xprt->xp_rtaddr; in svc_dg_recv()
379 if (t_rcvudata(xprt->xp_fd, tu_data, &moreflag) == -1) { in svc_dg_recv()
387 lookres = t_look(xprt->xp_fd); in svc_dg_recv()
389 (t_rcvuderr(xprt->xp_fd, in svc_dg_recv()
415 xprt->xp_rtaddr.len = tu_data->addr.len; in svc_dg_recv()
425 if (cache_get(xprt, msg, &reply, &replylen)) { in svc_dg_recv()
430 set_src_addr(xprt, &tu_data->opt); in svc_dg_recv()
431 (void) t_sndudata(xprt->xp_fd, tu_data); in svc_dg_recv()
432 tu_data->udata.buf = (char *)rpc_buffer(xprt); in svc_dg_recv()
442 if ((nconf = getnetconfigent(xprt->xp_netid)) != NULL) { in svc_dg_recv()
447 nbufp = (struct netbuf *)(xprt->xp_p2); in svc_dg_recv()
449 &xprt->xp_ltaddr) < 0) { in svc_dg_recv()
475 svc_dg_reply(SVCXPRT *xprt, struct rpc_msg *msg) in svc_dg_reply() argument
478 struct svc_dg_data *su = get_svc_dg_data(xprt); in svc_dg_reply()
500 SVCAUTH_WRAP(&SVC_XP_AUTH(xprt), xdrs, xdr_results, in svc_dg_reply()
508 set_src_addr(xprt, &tu_data->opt); in svc_dg_reply()
510 if (t_sndudata(xprt->xp_fd, tu_data) == 0) { in svc_dg_reply()
513 cache_set(xprt, (uint32_t)slen); in svc_dg_reply()
529 svc_dg_getargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr) in svc_dg_getargs() argument
532 svc_args_done(xprt); in svc_dg_getargs()
534 return (SVCAUTH_UNWRAP(&SVC_XP_AUTH(xprt), in svc_dg_getargs()
535 &(get_svc_dg_data(xprt)->su_xdrs), xdr_args, args_ptr)); in svc_dg_getargs()
539 svc_dg_freeargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr) in svc_dg_freeargs() argument
542 XDR *xdrs = &(get_svc_dg_data(xprt)->su_xdrs); in svc_dg_freeargs()
549 svc_dg_destroy(SVCXPRT *xprt) in svc_dg_destroy() argument
552 _svc_dg_destroy_private(xprt); in svc_dg_destroy()
557 _svc_dg_destroy_private(SVCXPRT *xprt) in _svc_dg_destroy_private() argument
561 if (SVCEXT(xprt)->parent) in _svc_dg_destroy_private()
563 xprt = SVCEXT(xprt)->parent; in _svc_dg_destroy_private()
565 svc_flags(xprt) |= SVC_DEFUNCT; in _svc_dg_destroy_private()
567 if (SVCEXT(xprt)->refcnt > 0) in _svc_dg_destroy_private()
571 xprt_unregister(xprt); in _svc_dg_destroy_private()
572 (void) t_close(xprt->xp_fd); in _svc_dg_destroy_private()
575 svc_xprt_destroy(xprt); in _svc_dg_destroy_private()
577 svc_dg_xprtfree(xprt); in _svc_dg_destroy_private()
582 svc_dg_control(SVCXPRT *xprt, const uint_t rq, void *in) in svc_dg_control() argument
586 if (xprt->xp_p2 == NULL) in svc_dg_control()
589 *(uint32_t *)in = ((struct svc_dg_data *)(xprt->xp_p2))->su_xid; in svc_dg_control()
687 svc_dg_enablecache(SVCXPRT *xprt, const uint_t size) in svc_dg_enablecache() argument
694 if (svc_mt_mode != RPC_SVC_MT_NONE && SVCEXT(xprt)->parent != NULL) in svc_dg_enablecache()
696 transp = SVCEXT(xprt)->parent; in svc_dg_enablecache()
698 transp = xprt; in svc_dg_enablecache()
752 cache_set(SVCXPRT *xprt, uint32_t replylen) in cache_set() argument
768 if (svc_mt_mode != RPC_SVC_MT_NONE && SVCEXT(xprt)->parent != NULL) in cache_set()
770 parent = SVCEXT(xprt)->parent; in cache_set()
772 parent = xprt; in cache_set()
774 su = get_svc_dg_data(xprt); in cache_set()
819 if (nconf = getnetconfigent(xprt->xp_netid)) { in cache_set()
820 uaddr = taddr2uaddr(nconf, &xprt->xp_rtaddr); in cache_set()
828 newbuf2 = malloc(sizeof (char) * xprt->xp_rtaddr.len); in cache_set()
839 victim->cache_reply = rpc_buffer(xprt); in cache_set()
840 rpc_buffer(xprt) = newbuf; in cache_set()
841 xdrmem_create(&(su->su_xdrs), rpc_buffer(xprt), su->su_iosz, in cache_set()
843 su->su_tudata.udata.buf = (char *)rpc_buffer(xprt); in cache_set()
848 victim->cache_addr = xprt->xp_rtaddr; in cache_set()
850 (void) memcpy(victim->cache_addr.buf, xprt->xp_rtaddr.buf, in cache_set()
851 (int)xprt->xp_rtaddr.len); in cache_set()
866 cache_get(SVCXPRT *xprt, struct rpc_msg *msg, char **replyp, in cache_get() argument
880 if (svc_mt_mode != RPC_SVC_MT_NONE && SVCEXT(xprt)->parent != NULL) in cache_get()
882 parent = SVCEXT(xprt)->parent; in cache_get()
884 parent = xprt; in cache_get()
886 su = get_svc_dg_data(xprt); in cache_get()
898 ent->cache_addr.len == xprt->xp_rtaddr.len && in cache_get()
899 (memcmp(ent->cache_addr.buf, xprt->xp_rtaddr.buf, in cache_get()
900 xprt->xp_rtaddr.len) == 0)) { in cache_get()
902 if (nconf = getnetconfigent(xprt->xp_netid)) { in cache_get()
903 uaddr = taddr2uaddr(nconf, &xprt->xp_rtaddr); in cache_get()