rpc_svc_cls(3R)

rpc_svc_calls: registerrpc, rpc_reg, svc_reg, svc_register, svc_unreg, svc_unregister, xprt_register, xprt_unregister - library routines for registering servers

As shipped in IRIX 6.5.30. Added in IRIX 6.5.30.

NAME
     rpc_svc_calls: registerrpc, rpc_reg, svc_reg, svc_register, svc_unreg,
     svc_unregister, 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.

     This page describes functions in the IRIX standard C library (libc).
     Some of these functions are part of the new Transport Independent RPC
     (TI-RPC) functionality added to the IRIX standard C library in IRIX
     release 6.5.21 (known as BSD TI-RPC) and should not be confused with the
     older TI-RPC functionality in the UNIX System V Networking Library (known
     as System V TI-RPC, see intro(3N)).  In particular, the BSD TI-RPC
     functions use the BSD socket network API instead of the System V TLI
     network API.

     BSD TI-RPC functions are marked in this page as BSD TI-RPC only.  To use
     them code must be compiled with:

          cc -D_BSD_TIRPC prog.c


     The BSD TI-RPC functions in this page did not exist in IRIX before
     release 6.5.21.  Applications using them should use the
     _MIPS_SYMBOL_PRESENT macro to provide a graceful failure mode when run on
     older IRIX releases.

   Routines
     #include <rpc/rpc.h>
     #ifdef _BSD_TIRPC
     #include <netconfig.h>
     #endif


     int
     registerrpc(rpcprog_t prognum,
             rpcvers_t versnum, rpcproc_t procnum,
             void *(*procname)(void *),
             xdrproc_t inproc, xdrproc_t outproc)

          Register procedure procname 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);
          progname should return a pointer to its static result(s); inproc is
          used to decode the parameters while outproc is used to encode the
          results.  This routine returns 0 if the registration succeeded, -1
          otherwise.
          Warning: remote procedures registered in this form are accessed
          using the UDP/IP transport; see svcudp_create() for restrictions.

     int
     rpc_reg(rpcprog_t prognum, rpcvers_t versnum,
          rpcproc_t procnum, void *(*procname)(void*),
          xdrproc_t inproc, xdrproc_t outproc,
          const char *nettype);

          BSD TI-RPC only.  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);

          BSD TI-RPC only.  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


     bool_t
     svc_register(SVCXPRT *xprt,
         rpcprog_t prognum, rpcvers_t versnum,
         void (*dispatch)(struct svc_req *,SVCXPRT *),
         int protocol)

          Associates prognum and versnum with the service dispatch procedure,
          dispatch.  If protocol is 0, the service is not registered with the
          portmap service.  If protocol is non-zero, then a mapping of the
          triple [prognum, versnum, protocol] to xprt->xp_port is established
          with the local portmap service (generally protocol is 0, IPPROTO_UDP
          or IPPROTO_TCP ).  The procedure dispatch has the following form:

               void
               dispatch(struct svc_req *request, SVCXPRT *xprt)
          The svc_register() routine returns 1 if it succeeds, and 0
          otherwise.

     void
     svc_unreg(rpcprog_t prognum, rpcvers_t versnum);

          BSD TI-RPC only.  Remove, from the rpcbind service, all mappings of
          the double [prognum, versnum] to dispatch routines, and of the
          triple [prognum, versnum, *] to network address.


     void
     svc_unregister(rpcprog_t prognum, rpcvers_t versnum)

          Remove all mapping of the double [prognum, versnum] to dispatch
          routines, and of the triple [prognum, versnum, *] to port number.

     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 ALSO
     getnetconfigent(3N), rpc(3R), rpcbind(1M), rpcbind(3R),
     rpc_svc_create(3R), rpc_svc_reg(3R)