AutoXDR - NFSv4 Example XDR IDL


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


Viewable With Any Browser


AutoGen, AutoOpts, columns, getdefs, AutoFSM, AutoXDR and these web pages copyright (c) 1999, 2000, 2001 Bruce Korb, all rights reserved.

AutoXDR copyright (c) 2000 Bruce Korb, all rights reserved.