rpc_svc_calls(3N)rpc_svc_calls(3N)NAME
rpc_svc_calls: rpc_reg, svc_reg, svc_unreg, xprt_register,
xprt_unregister - library routines for registering servers
DESCRIPTION
These routines are a part of the RPC library which allows the RPC servers
to register themselves with rpcbind [see rpcbind(1M)], and it associates
the given program and version number with the dispatch function.
Routines
See rpc(3N) for the definition of the SVCXPRT data structure.
#include <rpc/rpc.h>
int
rpc_reg(rpcprog_t prognum, rpcvers_t versnum,
rpcproc_t procnum, void *(*procname)(void*),
xdrproc_t inproc, xdrproc_t outproc,
const char *nettype);
Register program prognum, procedure procname, and version versnum
with the RPC service package. If a request arrives for program
prognum, version versnum, and procedure procnum, procname is called
with a pointer to its parameter(s); procname should return a pointer
to its static result(s); inproc is used to decode the parameters
while outproc is used to encode the results. Procedures are
registered on all available transports of the class nettype.
nettype defines a class of transports which can be used for a
particular application. If nettype is NULL, it defaults to netpath.
This routine returns 0 if the registration succeeded, -1 otherwise.
int
svc_reg(SVCXPRT *xprt, rpcprog_t prognum, rpcvers_t versnum,
const void (*dispatch)(struct svc_req *, SVCXPRT *),
struct netconfig *netconf);
Associates prognum and versnum with the service dispatch procedure,
dispatch. If netconf is NULL, the service is not registered with
the rpcbind service. If netconf is non-zero, then a mapping of the
triple [prognum, versnum, netconf->nc_netid] to xprt->xp_ltaddr is
established with the local rpcbind service.
The svc_reg routine returns 1 if it succeeds, and 0 otherwise
void
svc_unreg(rpcprog_t prognum, rpcvers_t versnum);
Remove, from the rpcbind service, all mappings of the double
[prognum, versnum] to dispatch routines, and of the triple [prognum,
versnum, *] to network address.
Page 1
rpc_svc_calls(3N)rpc_svc_calls(3N)
void
xprt_register(SVCXPRT *xprt);
After RPC service transport handle xprt is created, it is registered
with the RPC service package. This routine modifies the global
variable svc_fds. Service implementors usually do not need this
routine.
void
xprt_unregister(SVCXPRT *xprt);
Before an RPC service transport handle xprt is destroyed, it
unregisters itself with the RPC service package. This routine
modifies the global variable svc_fds. Service implementors usually
do not need this routine.
SEE ALSOrpcbind(1M), rpcbind(3N), rpc(3N), rpc_svc_err(3N), rpc_svc_create(3N),
rpc_svc_reg(3N)
Page 2