AutoXDR - NFSv4 Example XDR IDL

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 March 1, 2010 at 02:26:41 PM by AutoGen 5.10.1
 * 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-2012 Bruce Korb, all rights reserved.

AutoXDR copyright (c) 2000-2012 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: Sat Aug 30 11:02:00 PDT 2014

AltStyle によって変換されたページ (->オリジナル) /