DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
Programming with Remote Procedure Calls (RPC)

Broadcast RPC

rpcbind is a daemon that converts RPC program numbers into network addresses comprehensible to any transport provider. rpcbind supports broadcast RPC. These are the main differences between broadcast RPC and normal RPC calls:

The following illustrates how rpc_broadcast is used and describes its arguments:
   #include <rpc/clnt.h>
   #include <rpc/rpcb_clnt.h>
   	. . .
   enum clnt_stat	clnt_stat;
   	. . .
   clnt_stat = rpc_broadcast(prognum, versnum, procnum,
     inproc, in, outproc, out, eachresult, nettype)
   	u_long    prognum;        /* program number */
   	u_long    versnum;        /* version number */
   	u_long    procnum;        /* procedure number */
   	xdrproc_t inproc;         /* xdr routine for args */
   	caddr_t   in;             /* pointer to args */
   	xdrproc_t outproc;        /* xdr routine for results */
   	caddr_t   out;            /* pointer to results */
   	resultproc_t   eachresult;/* call with each result gotten */
   	char      *nettype;       /* transport type */
The procedure eachresult is called each time a valid result is obtained. It returns a boolean that specifies whether the user wants more responses.
   bool_t done;
   	. . .
   done = eachresult(resultsp, raddr, nconf)
   	caddr_t resultsp;
   	struct netbuf *addr;     /* Addr of responding machine */
   	struct netconfig *nconf; /* Transport which responded */
If done is TRUE, then broadcasting stops and rpc_broadcast returns successfully. Otherwise, the routine waits for another response. The request is rebroadcast after a few seconds of waiting. If no responses come back, the routine returns with RPC_TIMEDOUT.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005