AutoXDR - NFSv4 Example XDR IDL

Main
AutoGen
Pages

Home
Announce
FAQ
docs
XML Defs
testimonials
downloads

Automated
Options

AutoOpts
Comparison
Man example
Redistribute
Licensing
local use
using getopt

GCC's
Fixincludes

fixincludes

Automated
FSM

description
example
usagefsm

Addons
addon

Project GNU
Home Page

Automated
XDR

xdr project
  definitions
  XDR

  client
  clt. head
  server
  srv. head

  enums

  debug
  test code

i

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 August 12, 2006 at 11:32:10 AM 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

top  Viewable With Any Browser  Valid XHTML 1.0!


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

AutoXDR copyright (c) 2000-2001 Bruce Korb, all rights reserved.
Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@www.gnu.org, send other questions to gnu@gnu.org.

This article, Copyright © 2000-2002 by Bruce Korb

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. Last modified: Sun Oct 1 12:59:23 PDT 2006