xref: /freebsd/lib/libc/rpc/rpc_svc_reg.3 (revision dc36d6f9)
18360efbdSAlfred Perlstein.\" Copyright 1989 AT&T
28360efbdSAlfred Perlstein.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
38360efbdSAlfred Perlstein.\"	$NetBSD: rpc_svc_reg.3,v 1.1 2000/06/02 23:11:14 fvdl Exp $
48360efbdSAlfred Perlstein.Dd May 3, 1993
58360efbdSAlfred Perlstein.Dt RPC_SVC_REG 3
68360efbdSAlfred Perlstein.Os
78360efbdSAlfred Perlstein.Sh NAME
88360efbdSAlfred Perlstein.Nm rpc_svc_reg ,
98360efbdSAlfred Perlstein.Nm rpc_reg ,
108360efbdSAlfred Perlstein.Nm svc_reg ,
118360efbdSAlfred Perlstein.Nm svc_unreg ,
128360efbdSAlfred Perlstein.Nm svc_auth_reg ,
138360efbdSAlfred Perlstein.Nm xprt_register ,
148360efbdSAlfred Perlstein.Nm xprt_unregister
158360efbdSAlfred Perlstein.Nd library routines for registering servers
168360efbdSAlfred Perlstein.Sh LIBRARY
178360efbdSAlfred Perlstein.Lb libc
188360efbdSAlfred Perlstein.Sh SYNOPSIS
1932eef9aeSRuslan Ermilov.In rpc/rpc.h
208360efbdSAlfred Perlstein.Ft int
21db7534cfSBruce Evans.Fn rpc_reg "rpcprog_t prognum" "rpcvers_t versnum" "rpcproc_t procnum" "char *(*procname)()" "xdrproc_t inproc" "xdrproc_t outproc" "char *nettype"
22db7534cfSBruce Evans.Ft bool_t
23db7534cfSBruce Evans.Fn svc_reg "SVCXPRT *xprt" "const rpcprog_t prognum" "const rpcvers_t versnum" "void (*dispatch)(struct svc_req *, SVCXPRT *)" "const struct netconfig *netconf"
248360efbdSAlfred Perlstein.Ft void
258360efbdSAlfred Perlstein.Fn svc_unreg "const rpcprog_t prognum" "const rpcvers_t versnum"
268360efbdSAlfred Perlstein.Ft int
27db7534cfSBruce Evans.Fn svc_auth_reg "int cred_flavor" "enum auth_stat (*handler)(struct svc_req *, struct rpc_msg *)"
288360efbdSAlfred Perlstein.Ft void
29db7534cfSBruce Evans.Fn xprt_register "SVCXPRT *xprt"
308360efbdSAlfred Perlstein.Ft void
31db7534cfSBruce Evans.Fn xprt_unregister "SVCXPRT *xprt"
328360efbdSAlfred Perlstein.Sh DESCRIPTION
338360efbdSAlfred PerlsteinThese routines are a part of the RPC
348360efbdSAlfred Perlsteinlibrary which allows the RPC
358360efbdSAlfred Perlsteinservers to register themselves with rpcbind
368360efbdSAlfred Perlstein(see
378360efbdSAlfred Perlstein.Xr rpcbind 8 ) ,
388360efbdSAlfred Perlsteinand associate the given program and version
398360efbdSAlfred Perlsteinnumber with the dispatch function.
408360efbdSAlfred PerlsteinWhen the RPC server receives a RPC request, the library invokes the
418360efbdSAlfred Perlsteindispatch routine with the appropriate arguments.
428360efbdSAlfred Perlstein.Sh Routines
438360efbdSAlfred PerlsteinSee
448360efbdSAlfred Perlstein.Xr rpc 3
458360efbdSAlfred Perlsteinfor the definition of the
468360efbdSAlfred Perlstein.Vt SVCXPRT
478360efbdSAlfred Perlsteindata structure.
488360efbdSAlfred Perlstein.Bl -tag -width XXXXX
498360efbdSAlfred Perlstein.It Fn rpc_reg
508360efbdSAlfred PerlsteinRegister program
518360efbdSAlfred Perlstein.Fa prognum ,
528360efbdSAlfred Perlsteinprocedure
538360efbdSAlfred Perlstein.Fa procname ,
548360efbdSAlfred Perlsteinand version
558360efbdSAlfred Perlstein.Fa versnum
568360efbdSAlfred Perlsteinwith the RPC
578360efbdSAlfred Perlsteinservice package.
588360efbdSAlfred PerlsteinIf a request arrives for program
598360efbdSAlfred Perlstein.Fa prognum ,
608360efbdSAlfred Perlsteinversion
618360efbdSAlfred Perlstein.Fa versnum ,
628360efbdSAlfred Perlsteinand procedure
638360efbdSAlfred Perlstein.Fa procnum ,
648360efbdSAlfred Perlstein.Fa procname
652efeeba5SRuslan Ermilovis called with a pointer to its argument(s);
668360efbdSAlfred Perlstein.Fa procname
678360efbdSAlfred Perlsteinshould return a pointer to its static result(s);
688360efbdSAlfred Perlstein.Fa inproc
692efeeba5SRuslan Ermilovis the XDR function used to decode the arguments while
708360efbdSAlfred Perlstein.Fa outproc
718360efbdSAlfred Perlsteinis the XDR function used to encode the results.
728360efbdSAlfred PerlsteinProcedures are registered on all available transports of the class
738360efbdSAlfred Perlstein.Fa nettype .
748360efbdSAlfred PerlsteinSee
758360efbdSAlfred Perlstein.Xr rpc 3 .
768360efbdSAlfred PerlsteinThis routine returns 0 if the registration succeeded,
778360efbdSAlfred Perlstein\-1 otherwise.
788360efbdSAlfred Perlstein.It Fn svc_reg
798360efbdSAlfred PerlsteinAssociates
808360efbdSAlfred Perlstein.Fa prognum
818360efbdSAlfred Perlsteinand
828360efbdSAlfred Perlstein.Fa versnum
838360efbdSAlfred Perlsteinwith the service dispatch procedure,
848360efbdSAlfred Perlstein.Fa dispatch .
858360efbdSAlfred PerlsteinIf
868360efbdSAlfred Perlstein.Fa netconf
878360efbdSAlfred Perlsteinis
888360efbdSAlfred Perlstein.Dv NULL ,
898360efbdSAlfred Perlsteinthe service is not registered with the
908360efbdSAlfred Perlstein.Xr rpcbind 8
918360efbdSAlfred Perlsteinservice.
928360efbdSAlfred PerlsteinIf
938360efbdSAlfred Perlstein.Fa netconf
948360efbdSAlfred Perlsteinis non-zero,
958360efbdSAlfred Perlsteinthen a mapping of the triple
968360efbdSAlfred Perlstein.Bq Fa prognum , versnum , netconf->nc_netid
978360efbdSAlfred Perlsteinto
988360efbdSAlfred Perlstein.Fa xprt->xp_ltaddr
998360efbdSAlfred Perlsteinis established with the local rpcbind
1008360efbdSAlfred Perlsteinservice.
1018360efbdSAlfred Perlstein.Pp
1028360efbdSAlfred PerlsteinThe
1038360efbdSAlfred Perlstein.Fn svc_reg
1048360efbdSAlfred Perlsteinroutine returns 1 if it succeeds,
1058360efbdSAlfred Perlsteinand 0 otherwise.
1068360efbdSAlfred Perlstein.It Fn svc_unreg
1078360efbdSAlfred PerlsteinRemove from the rpcbind
1088360efbdSAlfred Perlsteinservice, all mappings of the triple
1098360efbdSAlfred Perlstein.Bq Fa prognum , versnum , No all-transports
1108360efbdSAlfred Perlsteinto network address
1118360efbdSAlfred Perlsteinand all mappings within the RPC service package
1128360efbdSAlfred Perlsteinof the double
1138360efbdSAlfred Perlstein.Bq Fa prognum , versnum
1148360efbdSAlfred Perlsteinto dispatch routines.
1158360efbdSAlfred Perlstein.It Fn svc_auth_reg
1168360efbdSAlfred PerlsteinRegisters the service authentication routine
1178360efbdSAlfred Perlstein.Fa handler
1188360efbdSAlfred Perlsteinwith the dispatch mechanism so that it can be
1198360efbdSAlfred Perlsteininvoked to authenticate RPC requests received
1208360efbdSAlfred Perlsteinwith authentication type
1218360efbdSAlfred Perlstein.Fa cred_flavor .
1228360efbdSAlfred PerlsteinThis interface allows developers to add new authentication
1238360efbdSAlfred Perlsteintypes to their RPC applications without needing to modify
1248360efbdSAlfred Perlsteinthe libraries.
1258360efbdSAlfred PerlsteinService implementors usually do not need this routine.
1268360efbdSAlfred Perlstein.Pp
1278360efbdSAlfred PerlsteinTypical service application would call
1288360efbdSAlfred Perlstein.Fn svc_auth_reg
1298360efbdSAlfred Perlsteinafter registering the service and prior to calling
1308360efbdSAlfred Perlstein.Fn svc_run .
1318360efbdSAlfred PerlsteinWhen needed to process an RPC credential of type
1328360efbdSAlfred Perlstein.Fa cred_flavor ,
1338360efbdSAlfred Perlsteinthe
1348360efbdSAlfred Perlstein.Fa handler
1352efeeba5SRuslan Ermilovprocedure will be called with two arguments,
1368360efbdSAlfred Perlstein.Fa "struct svc_req *rqst"
1378360efbdSAlfred Perlsteinand
1388360efbdSAlfred Perlstein.Fa "struct rpc_msg *msg" ,
1398360efbdSAlfred Perlsteinand is expected to return a valid
1408360efbdSAlfred Perlstein.Vt "enum auth_stat"
1418360efbdSAlfred Perlsteinvalue.
1428360efbdSAlfred PerlsteinThere is no provision to change or delete an authentication handler
1438360efbdSAlfred Perlsteinonce registered.
1448360efbdSAlfred Perlstein.Pp
1458360efbdSAlfred PerlsteinThe
1468360efbdSAlfred Perlstein.Fn svc_auth_reg
1478360efbdSAlfred Perlsteinroutine returns 0 if the registration is successful,
1488360efbdSAlfred Perlstein1 if
1498360efbdSAlfred Perlstein.Fa cred_flavor
1508360efbdSAlfred Perlsteinalready has an authentication handler registered for it,
1518360efbdSAlfred Perlsteinand \-1 otherwise.
1528360efbdSAlfred Perlstein.It Fn xprt_register
1538360efbdSAlfred PerlsteinAfter RPC service transport handle
1548360efbdSAlfred Perlstein.Fa xprt
1558360efbdSAlfred Perlsteinis created, it is registered with the RPC
1568360efbdSAlfred Perlsteinservice package.
1578360efbdSAlfred PerlsteinThis routine modifies the global variable
1588360efbdSAlfred Perlstein.Va svc_fdset
1598360efbdSAlfred Perlstein(see
1608360efbdSAlfred Perlstein.Xr rpc_svc_calls 3 ) .
1618360efbdSAlfred PerlsteinService implementors usually do not need this routine.
1628360efbdSAlfred Perlstein.It Fn xprt_unregister
1638360efbdSAlfred PerlsteinBefore an RPC service transport handle
1648360efbdSAlfred Perlstein.Fa xprt
1658360efbdSAlfred Perlsteinis destroyed, it unregisters itself with the
1668360efbdSAlfred PerlsteinRPC service package.
1678360efbdSAlfred PerlsteinThis routine modifies the global variable
1688360efbdSAlfred Perlstein.Va svc_fdset
1698360efbdSAlfred Perlstein(see
1708360efbdSAlfred Perlstein.Xr rpc_svc_calls 3 ) .
1718360efbdSAlfred PerlsteinService implementors usually do not need this routine.
1728360efbdSAlfred Perlstein.El
1738360efbdSAlfred Perlstein.Sh SEE ALSO
1748360efbdSAlfred Perlstein.Xr select 2 ,
1758360efbdSAlfred Perlstein.Xr rpc 3 ,
1768360efbdSAlfred Perlstein.Xr rpc_svc_calls 3 ,
1778360efbdSAlfred Perlstein.Xr rpc_svc_create 3 ,
1788360efbdSAlfred Perlstein.Xr rpc_svc_err 3 ,
1794990a1c0SJoel Dahl.Xr rpcbind 3 ,
1808360efbdSAlfred Perlstein.Xr rpcbind 8
181