Lines Matching +full:always +full:- +full:wait +full:- +full:for +full:- +full:ack
3 /*-
4 * SPDX-License-Identifier: BSD-3-Clause
11 * - Redistributions of source code must retain the above copyright notice,
13 * - Redistributions in binary form must reproduce the above copyright notice,
16 * - Neither the name of Sun Microsystems, Inc. nor the names of its
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
34 * svc.h, Server-side remote procedure call interface.
36 * Copyright (C) 1986-1993 by Sun Microsystems, Inc.
83 * Operations for rpc_control().
111 /* catch-all function */
122 /* free mem allocated for args */
131 /* catch-all function */
145 * worker threads plus one for the service pool's reference.
146 * For NFSv4.1 sessions, a reference is also held for a backchannel.
147 * xp_p2 - Points to the CLIENT structure for the RPC server end
148 * (the client end for callbacks).
149 * Points to the private structure (cl_private) for the
150 * CLIENT structure for the RPC client end (the server
151 * end for callbacks).
169 void *xp_p1; /* private: for use by svc ops */
170 void *xp_p2; /* private: for use by svc ops */
171 void *xp_p3; /* private: for use by svc lib */
180 uint32_t xp_tls; /* RPC-over-TLS on socket */
195 /* XXX - fvdl stick this here for ABI backward compat reasons */
202 void *xp_p1; /* private: for use by svc ops */
203 void *xp_p2; /* private: for use by svc ops */
204 void *xp_p3; /* private: for use by svc lib */
210 * Interface to server-side authentication flavors.
268 STAILQ_ENTRY(svc_req) rq_link; /* list of requests for a thread */
275 struct mbuf *rq_args; /* XDR-encoded procedure arguments */
277 struct opaque_auth rq_verf; /* verifier for the reply */
291 ((rq)->rq_addr ? (rq)->rq_addr : \
292 (struct sockaddr *) &(rq)->rq_xprt->xp_rtaddr)
299 * SVCTHREAD_SLEEPING waiting for a request to process
312 struct cv st_cond; /* sleeping for work */
357 * for a set of related RPC services. The pool handle should be passed
359 * this to support something similar to the Solaris multi-threaded RPC
370 struct svc_callout_list sp_callouts; /* (prog,vers)->dispatch list */
371 struct svc_loss_callout_list sp_lcallouts; /* loss->dispatch list */
385 * waiting for execution.
419 #define svc_getrpccaller(x) (&(x)->xp_rtaddr)
434 refcount_acquire(&(xprt)->xp_refs)
437 if (refcount_release(&(xprt)->xp_refs)) \
441 (*(xprt)->xp_ops->xp_recv)((xprt), (msg), (addr), (args))
444 (*(xprt)->xp_ops->xp_stat)(xprt)
446 #define SVC_ACK(xprt, ack) \ argument
447 ((xprt)->xp_ops->xp_ack == NULL ? FALSE : \
448 ((ack) == NULL ? TRUE : (*(xprt)->xp_ops->xp_ack)((xprt), (ack))))
451 (*(xprt)->xp_ops->xp_reply) ((xprt), (msg), (addr), (m), (seq))
454 (*(xprt)->xp_ops->xp_destroy)(xprt)
457 (*(xprt)->xp_ops->xp_control)((xprt), (rq), (in))
462 (*(xprt)->xp_ops->xp_recv)((xprt), (msg))
464 (*(xprt)->xp_ops->xp_recv)((xprt), (msg))
467 (*(xprt)->xp_ops->xp_stat)(xprt)
469 (*(xprt)->xp_ops->xp_stat)(xprt)
472 (*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp))
474 (*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp))
477 (*(xprt)->xp_ops->xp_reply) ((xprt), (msg))
479 (*(xprt)->xp_ops->xp_reply) ((xprt), (msg))
482 (*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp))
484 (*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp))
487 (*(xprt)->xp_ops->xp_destroy)(xprt)
489 (*(xprt)->xp_ops->xp_destroy)(xprt)
492 (*(xprt)->xp_ops2->xp_control)((xprt), (rq), (in))
497 ((SVCXPRT_EXT *) xprt->xp_p3)
500 (SVC_EXT(xprt)->xp_auth)
507 ((auth)->svc_ah_ops->svc_ah_wrap(auth, mp))
509 ((auth)->svc_ah_ops->svc_ah_unwrap(auth, mp))
511 ((auth)->svc_ah_ops->svc_ah_release(auth))
514 ((auth)->svc_ah_ops->svc_ah_wrap(auth, xdrs, xfunc, xwhere))
516 ((auth)->svc_ah_ops->svc_ah_unwrap(auth, xdrs, xfunc, xwhere))
537 * Service un-registration
566 * Service connection loss un-registration
589 * Transport un-register
622 * Also, if the service refuses to execute the procedure due to too-
624 * Note: do not confuse access-control failure with weak authentication!
626 * NB: In pure implementations of rpc, the caller always waits for a reply
628 * Therefore pure service implementations should always call
630 * xdr.h - xdr_void for the xdr routine. HOWEVER, tcp based rpc allows
631 * for the abuse of pure rpc via batched calling or pipelining. In the
666 * Lowest level dispatching -OR- who owns this process anyway.
667 * Somebody has to wait for incoming requests and then call the correct
670 * Since another (co-existent) package may wish to selectively wait for
673 * "in-place" results of a select system call (see select, section 2).
692 * also see clnt.h for protocol numbers.
722 #define RPC_ANYSOCK -1
756 * void (*dispatch)(); -- dispatch routine
757 * const rpcprog_t prognum; -- program number
758 * const rpcvers_t versnum; -- version number
759 * const char *nettype; -- network type
772 * void (*dispatch)(); -- dispatch routine
773 * const rpcprog_t prognum; -- program number
774 * const rpcvers_t versnum; -- version number
775 * const char *uaddr; -- universal address of service
776 * const struct netconfig *nconf; -- netconfig structure
782 * struct socket *; -- open connection
783 * const size_t sendsize; -- max send size
784 * const size_t recvsize; -- max recv size
790 * struct socket *; -- open connection
791 * const size_t sendsize; -- max send size
792 * const size_t recvsize; -- max recv size
799 * struct socket *; -- server transport socket
800 * const rpcprog_t prog; -- RPC program number
801 * const rpcvers_t vers; -- RPC program version
810 * struct socket * so; -- connection end point
811 * const struct netconfig *nconf; -- netconfig structure for network
812 * const struct t_bind *bindaddr; -- local bind address
813 * const size_t sendsz; -- max sendsize
814 * const size_t recvsz; -- max recvsize
825 * void (*dispatch)(); -- dispatch routine
826 * const rpcprog_t prognum; -- program number
827 * const rpcvers_t versnum; -- version number
828 * const char *nettype; -- network type
841 * void (*dispatch)(); -- dispatch routine
842 * const rpcprog_t prognum; -- program number
843 * const rpcvers_t versnum; -- version number
844 * const struct netconfig *nconf; -- netconfig structure
854 * const int fd; -- connection end point
855 * const struct netconfig *nconf; -- netconfig structure for network
856 * const struct t_bind *bindaddr; -- local bind address
857 * const u_int sendsz; -- max sendsize
858 * const u_int recvsz; -- max recvsize
867 * const int fd; -- open connection end point
868 * const u_int sendsize; -- max send size
869 * const u_int recvsize; -- max recv size
873 * Added for compatibility to old rpc 4.0. Obsoleted by svc_vc_create().
879 * const int fd; -- open connection
880 * const u_int sendsize; -- max send size
881 * const u_int recvsize; -- max recv size
887 * descriptor as its first input and is used for open connections.
891 * const int fd; -- open connection end point
892 * const u_int sendsize; -- max send size
893 * const u_int recvsize; -- max recv size
897 * Added for compatibility to old rpc 4.0. Obsoleted by svc_fd_create().
902 * Memory based rpc (for speed check and testing)
918 /* for backward compatibility */