This is the original set of definitions, reformatted as ONC's IDL, with a small amount of information loss.
/* * DO NOT EDIT THIS FILE (nfsv4.xdr) * * It has been AutoGen-ed Saturday May 26, 2001 at 04:36:08 PM PDT * From the definitions nfsv4.def * and the template file autoxdr.tpl * * This file has been generated by the AutoXDR AutoGen template suite. * * These files are compatible with: * RFC1831 - Remote Procedure Call Protocol Specification Version 2 * RFC1832 - External Data Representation Standard * and are intended to be used as a layer on top of the ONC IDL * in conjunction with RPCGEN. * */ #if defined( RPC_HDR ) %#ifndef AUTOXDR_NFS_XDR_HEADER /* no self-exclusion for OSR5's rpcgen */ %#define AUTOXDR_NFS_XDR_HEADER % %/* % * Some poor, old implementations require proper ordering and knowing % * which ones you need. Do this just for them. Yuck! What pain!! % */ %#include <sys/types.h> %#include <rpc/types.h> %#include <rpc/xdr.h> % %#ifndef MAX_AUTH_BYTES /* no self-exclusion for OSR5 */ %# include <rpc/auth.h> %#endif %#include <rpc/clnt.h> % %#include <sys/socket.h> %#include <rpc/svc.h> #endif enum nfs4_status { NFS4_STATUS_OK = 0, NFS4_STATUS_PERM = 1, NFS4_STATUS_NOENT = 2, NFS4_STATUS_OMITTED = 256 }; enum nfs4_compound_ops { NFS4_ACCESS4 = 3 }; /* * Basic typedefs for RFC 1832 data type definitions */ #if defined( RPC_HDR ) %#ifdef NEED_INT32_T typedef int int32_t; %#endif %#ifdef NEED_UINT32_T typedef unsigned int uint32_t; %#endif %#ifdef NEED_INT64_T typedef hyper int64_t; %#endif %#ifdef NEED_UINT64_T typedef hyper uint64_t; %#endif #else typedef int int32_t; typedef unsigned int uint32_t; typedef hyper int64_t; typedef hyper uint64_t; #endif /* * Sizes */ const NFS4_FHSIZE = 128; /* * Basic data types */ typedef uint32_t bitmap4<>; typedef char data<>; typedef uint64_t offset4; typedef uint32_t count4; typedef uint64_t length4; typedef uint64_t clientid4; typedef uint64_t stateid4; typedef uint32_t seqid4; typedef opaque utf8string<>; typedef utf8string component4; typedef component4 pathname4<>; typedef uint64_t nfs_lockid4; typedef uint64_t nfs_cookie4; typedef utf8string linktext4; typedef opaque sec_oid4<>; typedef uint32_t qop4; typedef uint32_t mode4; typedef uint64_t changeid4; /* * ACCESS: Check access permission */ const ACCESS4_READ = 0x00000001; const ACCESS4_LOOKUP = 0x00000002; const ACCESS4_MODIFY = 0x00000004; const ACCESS4_EXTEND = 0x00000008; const ACCESS4_DELETE = 0x00000010; const ACCESS4_EXECUTE = 0x00000020; struct ACCESS4resok { uint32_t supported; uint32_t access; }; union ACCESS4res switch (nfs4_status status) { case NFS4_STATUS_OK: ACCESS4resok resok4; default: void; }; /* * NULL procedure results struct */ struct nfs4_null_res { nfs4_status status; }; struct ACCESS4args { uint32_t requested; /* in */ }; /* * Union of arguments to COMPOUND operations */ union u_nfs4_compound_args switch (nfs4_compound_ops argop) { case NFS4_ACCESS4: ACCESS4args op_access4; }; /* * COMPOUND procedure arguments struct */ struct nfs4_compound_args { utf8string tag_in; /* in */ uint32_t minorversion; /* in */ u_nfs4_compound_args argarray<>; }; /* * Union of results of COMPOUND operations */ union u_nfs4_compound_res switch (nfs4_compound_ops resop) { case NFS4_ACCESS4: ACCESS4res op_access4; }; /* * COMPOUND procedure results struct */ struct nfs4_compound_res { nfs4_status status; utf8string tag_out; /* out */ u_nfs4_compound_res resarray<>; }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Define the nfs program */ program NFS_PROG { version NFS4_V4 { void NFS4_NULL( void ) = 0; nfs4_compound_res NFS4_COMPOUND( nfs4_compound_args ) = 1; } = 4; } = 100003; #if defined( RPC_HDR ) %#endif /* AUTOXDR_NFS_XDR_HEADER */ #endif