ONC+ Developer's Guide

RPCL Programs

You declare RPC programs using the following syntax:

program-definition:
 	"program" program-ident "{"
 		version-list
 	"}" "=" value;
version-list:
 	version ";"
 	version ";" version-list
version:
 	"version" version-ident "{"
 		procedure-list
 	"}" "=" value;
procedure-list:
 	procedure ";"
 	procedure ";" procedure-list
procedure:
 	type-ident procedure-ident "(" type-ident ")" "=" value;     

When the -N option is specified, rpcgen also recognizes the following syntax.

procedure:
 	type-ident procedure-ident "(" type-ident-list ")" "=" value;
type-ident-list:
 	type-ident
 	type-ident "," type-ident-list 

Example:

/*
 * time.x: Get or set the time. Time is represented as seconds
 * since 0:00, January 1, 1970.
 */
program TIMEPROG {
   version TIMEVERS {
      unsigned int TIMEGET(void) = 1;
 		void TIMESET(unsigned) = 2;
 	} = 1;
} = 0x20000044;

Note that the void argument type means that no argument is passed.

The following file compiles into these #define statements in the output header file.

#define TIMEPROG 0x20000044
#define TIMEVERS 1
#define TIMEGET 1
#define TIMESET 2