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