Blame man/rpc_svc_reg.3t

Packit Service 4f68e0
.\" @(#)rpc_svc_reg.3n 1.32 93/08/31 SMI; from SVr4
Packit Service 4f68e0
.\" Copyright 1989 AT&T
Packit Service 4f68e0
.\" @(#)rpc_svc_call 1.6 89/07/20 SMI;
Packit Service 4f68e0
.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
Packit Service 4f68e0
.\"	$NetBSD: rpc_svc_reg.3,v 1.1 2000/06/02 23:11:14 fvdl Exp $
Packit Service 4f68e0
.\"	$FreeBSD: src/lib/libc/rpc/rpc_svc_reg.3,v 1.5 2002/12/19 09:40:23 ru Exp $
Packit Service 4f68e0
.Dd May 3, 1993
Packit Service 4f68e0
.Dt RPC_SVC_REG 3
Packit Service 4f68e0
.Os
Packit Service 4f68e0
.Sh NAME
Packit Service 4f68e0
.Nm rpc_svc_reg ,
Packit Service 4f68e0
.Nm rpc_reg ,
Packit Service 4f68e0
.Nm svc_reg ,
Packit Service 4f68e0
.Nm svc_unreg ,
Packit Service 4f68e0
.Nm svc_auth_reg ,
Packit Service 4f68e0
.Nm xprt_register ,
Packit Service 4f68e0
.Nm xprt_unregister
Packit Service 4f68e0
.Nd library routines for registering servers
Packit Service 4f68e0
.Sh SYNOPSIS
Packit Service 4f68e0
.In rpc/rpc.h
Packit Service 4f68e0
.Ft int
Packit Service 4f68e0
.Fn rpc_reg "rpcprog_t prognum" "rpcvers_t versnum" "rpcproc_t procnum" "char *(*procname)()" "xdrproc_t inproc" "xdrproc_t outproc" "char *nettype"
Packit Service 4f68e0
.Ft bool_t
Packit Service 4f68e0
.Fn svc_reg "SVCXPRT *xprt" "const rpcprog_t prognum" "const rpcvers_t versnum" "void (*dispatch)(struct svc_req *, SVCXPRT *)" "const struct netconfig *netconf"
Packit Service 4f68e0
.Ft void
Packit Service 4f68e0
.Fn svc_unreg "const rpcprog_t prognum" "const rpcvers_t versnum"
Packit Service 4f68e0
.Ft int
Packit Service 4f68e0
.Fn svc_auth_reg "int cred_flavor" "enum auth_stat (*handler)(struct svc_req *, struct rpc_msg *)"
Packit Service 4f68e0
.Ft void
Packit Service 4f68e0
.Fn xprt_register "SVCXPRT *xprt"
Packit Service 4f68e0
.Ft void
Packit Service 4f68e0
.Fn xprt_unregister "SVCXPRT *xprt"
Packit Service 4f68e0
.Sh DESCRIPTION
Packit Service 4f68e0
These routines are a part of the RPC
Packit Service 4f68e0
library which allows the RPC
Packit Service 4f68e0
servers to register themselves with rpcbind
Packit Service 4f68e0
(see
Packit Service 4f68e0
.Xr rpcbind 8 ) ,
Packit Service 4f68e0
and associate the given program and version
Packit Service 4f68e0
number with the dispatch function.
Packit Service 4f68e0
When the RPC server receives a RPC request, the library invokes the
Packit Service 4f68e0
dispatch routine with the appropriate arguments.
Packit Service 4f68e0
.Sh Routines
Packit Service 4f68e0
See
Packit Service 4f68e0
.Xr rpc 3
Packit Service 4f68e0
for the definition of the
Packit Service 4f68e0
.Vt SVCXPRT
Packit Service 4f68e0
data structure.
Packit Service 4f68e0
.Bl -tag -width XXXXX
Packit Service 4f68e0
.It Fn rpc_reg
Packit Service 4f68e0
Register program
Packit Service 4f68e0
.Fa prognum ,
Packit Service 4f68e0
procedure
Packit Service 4f68e0
.Fa procname ,
Packit Service 4f68e0
and version
Packit Service 4f68e0
.Fa versnum
Packit Service 4f68e0
with the RPC
Packit Service 4f68e0
service package.
Packit Service 4f68e0
If a request arrives for program
Packit Service 4f68e0
.Fa prognum ,
Packit Service 4f68e0
version
Packit Service 4f68e0
.Fa versnum ,
Packit Service 4f68e0
and procedure
Packit Service 4f68e0
.Fa procnum ,
Packit Service 4f68e0
.Fa procname
Packit Service 4f68e0
is called with a pointer to its argument(s);
Packit Service 4f68e0
.Fa procname
Packit Service 4f68e0
should return a pointer to its static result(s);
Packit Service 4f68e0
.Fa inproc
Packit Service 4f68e0
is the XDR function used to decode the arguments while
Packit Service 4f68e0
.Fa outproc
Packit Service 4f68e0
is the XDR function used to encode the results.
Packit Service 4f68e0
Procedures are registered on all available transports of the class
Packit Service 4f68e0
.Fa nettype .
Packit Service 4f68e0
See
Packit Service 4f68e0
.Xr rpc 3 .
Packit Service 4f68e0
This routine returns 0 if the registration succeeded,
Packit Service 4f68e0
\-1 otherwise.
Packit Service 4f68e0
.It Fn svc_reg
Packit Service 4f68e0
Associates
Packit Service 4f68e0
.Fa prognum
Packit Service 4f68e0
and
Packit Service 4f68e0
.Fa versnum
Packit Service 4f68e0
with the service dispatch procedure,
Packit Service 4f68e0
.Fa dispatch .
Packit Service 4f68e0
If
Packit Service 4f68e0
.Fa netconf
Packit Service 4f68e0
is
Packit Service 4f68e0
.Dv NULL ,
Packit Service 4f68e0
the service is not registered with the
Packit Service 4f68e0
.Xr rpcbind 8
Packit Service 4f68e0
service.
Packit Service 4f68e0
If
Packit Service 4f68e0
.Fa netconf
Packit Service 4f68e0
is non-zero,
Packit Service 4f68e0
then a mapping of the triple
Packit Service 4f68e0
.Bq Fa prognum , versnum , netconf->nc_netid
Packit Service 4f68e0
to
Packit Service 4f68e0
.Fa xprt->xp_ltaddr
Packit Service 4f68e0
is established with the local rpcbind
Packit Service 4f68e0
service.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn svc_reg
Packit Service 4f68e0
routine returns 1 if it succeeds,
Packit Service 4f68e0
and 0 otherwise.
Packit Service 4f68e0
.It Fn svc_unreg
Packit Service 4f68e0
Remove from the rpcbind
Packit Service 4f68e0
service, all mappings of the triple
Packit Service 4f68e0
.Bq Fa prognum , versnum , No all-transports
Packit Service 4f68e0
to network address
Packit Service 4f68e0
and all mappings within the RPC service package
Packit Service 4f68e0
of the double
Packit Service 4f68e0
.Bq Fa prognum , versnum
Packit Service 4f68e0
to dispatch routines.
Packit Service 4f68e0
.It Fn svc_auth_reg
Packit Service 4f68e0
Registers the service authentication routine
Packit Service 4f68e0
.Fa handler
Packit Service 4f68e0
with the dispatch mechanism so that it can be
Packit Service 4f68e0
invoked to authenticate RPC requests received
Packit Service 4f68e0
with authentication type
Packit Service 4f68e0
.Fa cred_flavor .
Packit Service 4f68e0
This interface allows developers to add new authentication
Packit Service 4f68e0
types to their RPC applications without needing to modify
Packit Service 4f68e0
the libraries.
Packit Service 4f68e0
Service implementors usually do not need this routine.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
Typical service application would call
Packit Service 4f68e0
.Fn svc_auth_reg
Packit Service 4f68e0
after registering the service and prior to calling
Packit Service 4f68e0
.Fn svc_run .
Packit Service 4f68e0
When needed to process an RPC credential of type
Packit Service 4f68e0
.Fa cred_flavor ,
Packit Service 4f68e0
the
Packit Service 4f68e0
.Fa handler
Packit Service 4f68e0
procedure will be called with two arguments,
Packit Service 4f68e0
.Fa "struct svc_req *rqst"
Packit Service 4f68e0
and
Packit Service 4f68e0
.Fa "struct rpc_msg *msg" ,
Packit Service 4f68e0
and is expected to return a valid
Packit Service 4f68e0
.Vt "enum auth_stat"
Packit Service 4f68e0
value.
Packit Service 4f68e0
There is no provision to change or delete an authentication handler
Packit Service 4f68e0
once registered.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn svc_auth_reg
Packit Service 4f68e0
routine returns 0 if the registration is successful,
Packit Service 4f68e0
1 if
Packit Service 4f68e0
.Fa cred_flavor
Packit Service 4f68e0
already has an authentication handler registered for it,
Packit Service 4f68e0
and \-1 otherwise.
Packit Service 4f68e0
.It Fn xprt_register
Packit Service 4f68e0
After RPC service transport handle
Packit Service 4f68e0
.Fa xprt
Packit Service 4f68e0
is created, it is registered with the RPC
Packit Service 4f68e0
service package.
Packit Service 4f68e0
This routine modifies the global variable
Packit Service 4f68e0
.Va svc_fdset
Packit Service 4f68e0
(see
Packit Service 4f68e0
.Xr rpc_svc_calls 3 ) .
Packit Service 4f68e0
Service implementors usually do not need this routine.
Packit Service 4f68e0
.It Fn xprt_unregister
Packit Service 4f68e0
Before an RPC service transport handle
Packit Service 4f68e0
.Fa xprt
Packit Service 4f68e0
is destroyed, it unregisters itself with the
Packit Service 4f68e0
RPC service package.
Packit Service 4f68e0
This routine modifies the global variable
Packit Service 4f68e0
.Va svc_fdset
Packit Service 4f68e0
(see
Packit Service 4f68e0
.Xr rpc_svc_calls 3 ) .
Packit Service 4f68e0
Service implementors usually do not need this routine.
Packit Service 4f68e0
.El
Packit Service 4f68e0
.Sh AVAILABILITY
Packit Service 4f68e0
These functions are part of libtirpc.
Packit Service 4f68e0
.Sh SEE ALSO
Packit Service 4f68e0
.Xr select 2 ,
Packit Service 4f68e0
.Xr rpc 3 ,
Packit Service 4f68e0
.Xr rpcbind 3 ,
Packit Service 4f68e0
.Xr rpc_svc_calls 3 ,
Packit Service 4f68e0
.Xr rpc_svc_create 3 ,
Packit Service 4f68e0
.Xr rpc_svc_err 3 ,
Packit Service 4f68e0
.Xr rpcbind 8