The registerrpc() call registers a procedure with the local Portmapper and creates a control structure to remember the server procedure and its XDR routine. The svc_run() call uses the control structure. Procedures registered using registerrpc() are accessed using the UDP transport layer.
Syntax
#include <rpc\rpc.h> int registerrpc(prognum, versnum, procnum, procname, inproc, outproc) u_long prognum; u_long versnum; u_long procnum; char *(*procname) (); xdrproc_t inproc; xdrproc_t outproc;
Parameters
prognum
Note: You cannot use xdr_enum() as an argument to registerrpc(). See xdr_enum() for more information.
Return Values
The value 0 indicates success; the value -1 indicates an error.
Examples
#define RMTPROGNUM (u_long)0x3fffffffL#define RMTPROGVER (u_long)0x1 #define RMTPROCNUM (u_long)0x1 main() { int *rmtprog(); /* register remote program with Portmapper */ registerrpc(RMTPROGNUM, RMTPROGVER, RMTPROCNUM, rmtprog, xdr_int, xdr_int); /* infinite loop, waits for RPC request from client */ svc_run(); printf("Error: svc_run should never reach this point \n"); exit(1); } int * rmtprog(inproc) /* remote program */ int *inproc; { int *outproc; ... /* Process request */ ... return (outproc); }
Related Calls