Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rpcgen(1) — Interactive 3.2r4.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

rpcgen(1)  —  

NAME

rpcgen − an RPC protocol compiler

SYNOPSIS

rpcgen infile
rpcgen −h [ −o outfile ] [ inputfile ]
rpcgen −c [ −o outfile ] [ infile ]
rpcgen [ −s transport ]* [ −o outfile ] [ infile ]
rpcgen −l [ −o outfile ] [ infile ]
rpcgen −m [ −o outfile ] [ infile ]

DESCRIPTION

The rpcgen compiler is a tool that generates C code to implement an RPC protocol.  The input to rpcgen is a language similar to C, known as RPC Language (Remote Procedure Call Language). 

The rpcgen command is normally used as shown in the first synopsis, where it takes an input file and generates four output files.  If the infile is named proto.x, then rpcgen generates a header file in proto.h, XDR routines in proto_xdr.c, server-side stubs in proto_svc.c, and client-side stubs in proto_clnt.c. 

The other synopses shown above are used when one wants to generate a particular output file rather than all the files. 

Since the C preprocessor, cpp(1), is run on all input files before they are actually interpreted by rpcgen, all the cpp directives are legal within an rpcgen input file.  For each type of output file, rpcgen defines a special cpp symbol for use by the rpcgen programmer:

RPC_HDR Defined when compiling into header files

RPC_XDR Defined when compiling into XDR routines

RPC_SVC Defined when compiling into server-side stubs

RPC_CLNT Defined when compiling into client-side stubs

In addition, rpcgen does a little preprocessing of its own.  Any line beginning with “%” is passed directly into the output file, uninterpreted by rpcgen. 

You can customize some of your XDR routines by leaving those data types undefined.  For every data type that is undefined, rpcgen assumes that there exists a routine with the name xdr_prepended to the name of the undefined type. 

The following options are available:

−cCompile XDR routines. 

−hCompile into C data definitions (a header file). 

−lCompile into client-side stubs. 

−s transport
Compile server-side stubs using the given transport. The supported transports are udp and tcp. This option may be invoked more than once so as to compile a server that serves multiple ­transports. 

−mCompile into server-side stubs, but do not produce a main() routine.  This option is useful if you want to supply your own main(). 

−o outfile
Specify the name of the output file.  If none is specified, standard output is used (−c, −h, −l, and −s modes only). 

SEE ALSO

The section “RPCGEN PROTOCOL COMPILER” in the “INTER­ACTIVE NFS Protocol Specifications and User’s Guide.”

BUGS

Nesting is not supported. As a workaround, structures can be declared at top level and the name of each used inside other structures in order to achieve the same effect. 

Name clashes can occur when using program definitions, since the apparent scoping does not really apply. Most of these can be avoided by giving unique names to programs, versions, procedures, and types. 

\*U  —  Version 1.0

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026