language or RPCL), which looks very similar to preprocessor directives. The rpcgen exists as a stand-alone executable compiler that reads special files denoted by ".x" extension. To compile a RPCL file, simply do >> rpcgen example.x This will generate four possible files: example_clnt.c: This is the client proxy file. example_svc.c: This is the server stub file. example_xdr.c: This is XDR file with filters. example.h: This is the header file needed for any XDR filters. The external data representation (XDR) is a data abstraction needed for machine independent communication. The client and server need not be machines of the same type. Simple NULL-terminated strings can be used for passing and receiving the directory name and directory contents. The program, procedure, and version numbers for client and servers can be set using rpcgen or relying on predefined macros in the simplified interface. Program numbers are defined in a standard way: 0x00000000 - 0x1FFFFFFF: Defined by Sun 0x20000000 - 0x3FFFFFFF: User Defined Fundamentals of EMS, NMS and OSS/BSS 0x40000000 - 0x5FFFFFFF: Transient 0x60000000 - 0xFFFFFFFF: Reserved 27.5 Interface Routines Some of the RPC interface routines are: rpc_reg(): This routine will register a procedure as an RPC program on all transports of the specified type. rpc_broadcast(): This routine will broadcast a call message across all trans- ports of the specified type. rpc_call(): This routine is used to make remote calls to a procedure on the specific remote host. clnt_create(): This is the client creation routine, called with details of where the server is located and transport type to use. clnt_tp_create(): This routine is used to create the client handle for the speci- fied transport. clnt_call(): This routine is used by the client to send a request to the server. clnt_create_timed(): This routine allows the programmer to specify the maximum time allowed for each type of transport tried during the creation attempt. svc_create(): Server handles for all transports of the specified type 