Lines Matching defs:xprt

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