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 , 179*4990a1c0SJoel Dahl.Xr rpcbind 3 , 1808360efbdSAlfred Perlstein.Xr rpcbind 8 181