Lines Matching defs:xprt

41  * There are two sets of procedures here.  The xprt routines are
75 static void xprt_unregister_locked(SVCXPRT *xprt);
181 SVCXPRT *xprt, *nxprt;
192 while ((xprt = TAILQ_FIRST(&grp->sg_xlist)) != NULL) {
193 xprt_unregister_locked(xprt);
194 TAILQ_INSERT_TAIL(&cleanup, xprt, xp_link);
198 TAILQ_FOREACH_SAFE(xprt, &cleanup, xp_link, nxprt) {
199 SVC_RELEASE(xprt);
303 xprt_register(SVCXPRT *xprt)
305 SVCPOOL *pool = xprt->xp_pool;
309 SVC_ACQUIRE(xprt);
311 xprt->xp_group = grp = &pool->sp_groups[g];
313 xprt->xp_registered = TRUE;
314 xprt->xp_active = FALSE;
315 TAILQ_INSERT_TAIL(&grp->sg_xlist, xprt, xp_link);
325 xprt_unregister_locked(SVCXPRT *xprt)
327 SVCGROUP *grp = xprt->xp_group;
330 KASSERT(xprt->xp_registered == TRUE,
332 xprt_inactive_locked(xprt);
333 TAILQ_REMOVE(&grp->sg_xlist, xprt, xp_link);
334 xprt->xp_registered = FALSE;
338 xprt_unregister(SVCXPRT *xprt)
340 SVCGROUP *grp = xprt->xp_group;
343 if (xprt->xp_registered == FALSE) {
348 xprt_unregister_locked(xprt);
351 SVC_RELEASE(xprt);
358 xprt_assignthread(SVCXPRT *xprt)
360 SVCGROUP *grp = xprt->xp_group;
367 SVC_ACQUIRE(xprt);
368 xprt->xp_thread = st;
369 st->st_xprt = xprt;
391 xprt_active(SVCXPRT *xprt)
393 SVCGROUP *grp = xprt->xp_group;
397 if (!xprt->xp_registered) {
405 if (!xprt->xp_active) {
406 xprt->xp_active = TRUE;
407 if (xprt->xp_thread == NULL) {
408 if (!svc_request_space_available(xprt->xp_pool) ||
409 !xprt_assignthread(xprt))
410 TAILQ_INSERT_TAIL(&grp->sg_active, xprt,
419 xprt_inactive_locked(SVCXPRT *xprt)
421 SVCGROUP *grp = xprt->xp_group;
424 if (xprt->xp_active) {
425 if (xprt->xp_thread == NULL)
426 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
427 xprt->xp_active = FALSE;
432 xprt_inactive(SVCXPRT *xprt)
434 SVCGROUP *grp = xprt->xp_group;
437 xprt_inactive_locked(xprt);
446 xprt_inactive_self(SVCXPRT *xprt)
449 KASSERT(xprt->xp_thread != NULL,
450 ("xprt_inactive_self(%p) with NULL xp_thread", xprt));
451 xprt->xp_active = FALSE;
460 svc_reg(SVCXPRT *xprt, const rpcprog_t prog, const rpcvers_t vers,
464 SVCPOOL *pool = xprt->xp_pool;
471 if (xprt->xp_netid) {
472 netid = strdup(xprt->xp_netid, M_RPC);
505 if ((xprt->xp_netid == NULL) && (flag == 1) && netid)
506 ((SVCXPRT *) xprt)->xp_netid = strdup(netid, M_RPC);
516 nb.buf = &xprt->xp_ltaddr;
517 nb.len = xprt->xp_ltaddr.ss_len;
549 svc_loss_reg(SVCXPRT *xprt, void (*dispatch)(SVCXPRT *))
551 SVCPOOL *pool = xprt->xp_pool;
621 SVCXPRT *xprt = rqstp->rq_xprt;
629 if (xprt->xp_pool->sp_rcache)
630 replay_setreply(xprt->xp_pool->sp_rcache,
636 ok = SVC_REPLY(xprt, rply, rqstp->rq_addr, body, &rqstp->rq_reply_seq);
699 SVCXPRT *xprt = rqstp->rq_xprt;
708 if (xprt->xp_pool->sp_rcache)
709 replay_setreply(xprt->xp_pool->sp_rcache,
721 SVCXPRT *xprt = rqstp->rq_xprt;
730 if (xprt->xp_pool->sp_rcache)
731 replay_setreply(xprt->xp_pool->sp_rcache,
732 &rply, (struct sockaddr *) &xprt->xp_rtaddr, NULL);
743 SVCXPRT *xprt = rqstp->rq_xprt;
752 if (xprt->xp_pool->sp_rcache)
753 replay_setreply(xprt->xp_pool->sp_rcache,
765 SVCXPRT *xprt = rqstp->rq_xprt;
774 if (xprt->xp_pool->sp_rcache)
775 replay_setreply(xprt->xp_pool->sp_rcache,
797 SVCXPRT *xprt = rqstp->rq_xprt;
806 if (xprt->xp_pool->sp_rcache)
807 replay_setreply(xprt->xp_pool->sp_rcache,
819 SVCXPRT *xprt = rqstp->rq_xprt;
830 if (xprt->xp_pool->sp_rcache)
831 replay_setreply(xprt->xp_pool->sp_rcache,
846 SVCXPRT *xprt;
849 xprt = mem_alloc(sizeof(SVCXPRT));
851 xprt->xp_p3 = ext;
852 refcount_init(&xprt->xp_refs, 1);
854 return (xprt);
861 svc_xprt_free(SVCXPRT *xprt)
864 mem_free(xprt->xp_p3, sizeof(SVCXPRT_EXT));
865 mem_free(xprt, sizeof(SVCXPRT));
876 svc_getreq(SVCXPRT *xprt, struct svc_req **rqstp_ret)
878 SVCPOOL *pool = xprt->xp_pool;
891 if (SVC_RECV(xprt, &msg, &r->rq_addr, &args)) {
898 SVC_ACQUIRE(xprt);
899 r->rq_xprt = xprt;
910 SVC_REPLY(xprt, &repmsg, r->rq_addr,
960 if ((stat = SVC_STAT(xprt)) == XPRT_DIED) {
962 (*s->slc_dispatch)(xprt);
963 xprt_unregister(xprt);
972 SVCXPRT *xprt = rqstp->rq_xprt;
973 SVCPOOL *pool = xprt->xp_pool;
991 (*s->sc_dispatch)(rqstp, xprt);
1017 SVCXPRT *xprt, *nxprt;
1022 TAILQ_FOREACH_SAFE(xprt, &grp->sg_xlist, xp_link, nxprt) {
1027 if (!xprt->xp_idletimeout || xprt->xp_thread)
1030 timo = xprt->xp_lastactive + xprt->xp_idletimeout;
1032 xprt_unregister_locked(xprt);
1033 TAILQ_INSERT_TAIL(&cleanup, xprt, xp_link);
1038 TAILQ_FOREACH_SAFE(xprt, &cleanup, xp_link, nxprt) {
1039 SVC_RELEASE(xprt);
1048 SVCXPRT *xprt;
1054 while ((xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) {
1055 if (xprt_assignthread(xprt))
1056 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
1099 SVCXPRT *xprt;
1143 xprt = st->st_xprt;
1144 if (!xprt) {
1157 (xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) {
1158 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
1159 SVC_ACQUIRE(xprt);
1160 xprt->xp_thread = st;
1161 st->st_xprt = xprt;
1210 xprt->xp_lastactive = time_uptime;
1215 stat = svc_getreq(xprt, &rqstp);
1246 xprt->xp_thread = NULL;
1248 if (xprt->xp_active) {
1250 !xprt_assignthread(xprt))
1252 xprt, xp_alink);
1255 SVC_RELEASE(xprt);
1274 xprt = st->st_xprt;
1276 SVC_RELEASE(xprt);