This paper describes several enhancements to rpcgen designed to facilitate the implementation of both traditional RPC programs and also RPC programs with combinable RPC calls. Motivation NFSv4 defines a new RPC interface with 38 procedure calls defined. However, one is the NULL procedure and a second is the carrier procedure for the remaining 36. That means that, as it stands, the authors of the client and server procedures that support these 36 calls must manage the marshaling and unmarshaling of their data into and out of the structures used by the carrier procedure. This proposal maintains binary compatibility with the proposed NFSv4 standard.
Any variations are bugs.
This all could have been written without modifying the NFS4 XDR and, instead, just writing libraries specific to the NFS4 and NFS4-CB programs. With this tool and a small amount of added work, it has been possible to generate the code to produce these additional interfaces. This is a procedure that sends multiple queued procedure calls at once. It is implemented with two calls. When the carrier procedure receives its results, each of the queued procedure calls had a callback procedure registered.