Home | History | Annotate | Download | only in rpc

Lines Matching defs:xprt

98 struct cf_rendezvous { /* kept in xprt->xp_p1 for rendezvouser */
104 struct cf_conn { /* kept in xprt->xp_p1 for actual connection */
118 * xprt = svc_vc_create(sock, send_buf_size, recv_buf_size);
121 * Once *xprt is initialized, it is registered as a transporter
135 SVCXPRT *xprt;
153 xprt = mem_alloc(sizeof(SVCXPRT));
154 if (xprt == NULL) {
158 xprt->xp_tp = NULL;
159 xprt->xp_p1 = (caddr_t)(void *)r;
160 xprt->xp_p2 = NULL;
161 xprt->xp_p3 = NULL;
162 xprt->xp_verf = _null_auth;
163 svc_vc_rendezvous_ops(xprt);
164 xprt->xp_port = (u_short)-1; /* It is the rendezvouser */
165 xprt->xp_fd = fd;
181 xprt->xp_ltaddr.maxlen = xprt->xp_ltaddr.len = sslocal.ss_len;
182 xprt->xp_ltaddr.buf = mem_alloc((size_t)sslocal.ss_len);
183 if (xprt->xp_ltaddr.buf == NULL) {
187 memcpy(xprt->xp_ltaddr.buf, &sslocal, (size_t)sslocal.ss_len);
189 xprt->xp_rtaddr.maxlen = sizeof (struct sockaddr_storage);
190 if (!xprt_register(xprt))
192 return xprt;
194 if (xprt)
195 mem_free(xprt, sizeof(*xprt));
262 SVCXPRT *xprt;
269 xprt = mem_alloc(sizeof(SVCXPRT));
270 if (xprt == NULL)
272 memset(xprt, 0, sizeof *xprt);
278 (caddr_t)(void *)xprt, read_vc, write_vc);
279 xprt->xp_p1 = (caddr_t)(void *)cd;
280 xprt->xp_verf.oa_base = cd->verf_body;
281 svc_vc_ops(xprt); /* truely deals with calls */
282 xprt->xp_port = 0; /* this is a connection, not a rendezvouser */
283 xprt->xp_fd = fd;
285 if ((xprt->xp_netid = strdup(netid)) == NULL)
288 if (!xprt_register(xprt))
290 return xprt;
295 if (xprt)
296 mem_free(xprt, sizeof(SVCXPRT));
302 rendezvous_request(SVCXPRT *xprt, struct rpc_msg *msg)
312 _DIAGASSERT(xprt != NULL);
315 r = (struct cf_rendezvous *)xprt->xp_p1;
318 if ((sock = accept(xprt->xp_fd, (struct sockaddr *)(void *)&addr,
333 * make a new transporter (re-uses xprt)
381 rendezvous_stat(SVCXPRT *xprt)
388 svc_vc_destroy(SVCXPRT *xprt)
390 _DIAGASSERT(xprt != NULL);
392 xprt_unregister(xprt);
393 __svc_vc_dodestroy(xprt);
397 __svc_vc_dodestroy(SVCXPRT *xprt)
402 cd = (struct cf_conn *)xprt->xp_p1;
404 if (xprt->xp_fd != RPC_ANYFD)
405 (void)close(xprt->xp_fd);
406 if (xprt->xp_port != 0) {
408 r = (struct cf_rendezvous *)xprt->xp_p1;
410 xprt->xp_port = 0;
416 if (xprt->xp_rtaddr.buf)
417 mem_free(xprt->xp_rtaddr.buf, xprt->xp_rtaddr.maxlen);
418 if (xprt->xp_ltaddr.buf)
419 mem_free(xprt->xp_ltaddr.buf, xprt->xp_ltaddr.maxlen);
420 if (xprt->xp_tp)
421 free(xprt->xp_tp);
422 if (xprt->xp_netid)
423 free(xprt->xp_netid);
424 mem_free(xprt, sizeof(SVCXPRT));
429 svc_vc_control(SVCXPRT *xprt, const u_int rq, void *in)
436 svc_vc_rendezvous_control(SVCXPRT *xprt, const u_int rq, void *in)
440 cfp = (struct cf_rendezvous *)xprt->xp_p1;
466 SVCXPRT *xprt;
478 xprt = (SVCXPRT *)(void *)xprtp;
479 _DIAGASSERT(xprt != NULL);
481 sock = xprt->xp_fd;
483 sa = (struct sockaddr *)xprt->xp_rtaddr.buf;
484 if (sa->sa_family == AF_LOCAL && xprt->xp_p2 == NULL) {
509 xprt->xp_p2 = mem_alloc(SOCKCREDSIZE(sc->sc_ngroups));
510 if (xprt->xp_p2 == NULL)
513 memcpy(xprt->xp_p2, sc, SOCKCREDSIZE(sc->sc_ngroups));
518 cfp = (struct cf_conn *)xprt->xp_p1;
558 ((struct cf_conn *)(xprt->xp_p1))->strm_stat = XPRT_DIED;
569 SVCXPRT *xprt;
574 xprt = (SVCXPRT *)(void *)xprtp;
575 _DIAGASSERT(xprt != NULL);
577 cd = (struct cf_conn *)xprt->xp_p1;
583 if ((i = (int)write(xprt->xp_fd, buf, (size_t)cnt)) < 0) {
609 svc_vc_stat(SVCXPRT *xprt)
613 _DIAGASSERT(xprt != NULL);
615 cd = (struct cf_conn *)(xprt->xp_p1);
625 svc_vc_recv(SVCXPRT *xprt, struct rpc_msg *msg)
630 _DIAGASSERT(xprt != NULL);
633 cd = (struct cf_conn *)(xprt->xp_p1);
653 svc_vc_getargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr)
656 xprt != NULL);
659 return (*xdr_args)(&(((struct cf_conn *)(xprt->xp_p1))->xdrs),
664 svc_vc_freeargs(SVCXPRT *xprt, xdrproc_t xdr_args, caddr_t args_ptr)
668 _DIAGASSERT(xprt != NULL);
671 xdrs = &(((struct cf_conn *)(xprt->xp_p1))->xdrs);
678 svc_vc_reply(SVCXPRT *xprt, struct rpc_msg *msg)
684 _DIAGASSERT(xprt != NULL);
687 cd = (struct cf_conn *)(xprt->xp_p1);
698 svc_vc_ops(SVCXPRT *xprt)
715 xprt->xp_ops = &ops;
716 xprt->xp_ops2 = &ops2;
721 svc_vc_rendezvous_ops(SVCXPRT *xprt)
739 xprt->xp_ops = &ops;
740 xprt->xp_ops2 = &ops2;
754 SVCXPRT *xprt, *least_active;
774 xprt = __svc_xports[i];
775 if (xprt == NULL || xprt->xp_ops == NULL ||
776 xprt->xp_ops->xp_recv != svc_vc_recv)
779 cd = (struct cf_conn *)xprt->xp_p1;
787 least_active = xprt;
793 __xprt_unregister_unlocked(xprt);
794 __svc_vc_dodestroy(xprt);