Home | History | Annotate | Download | only in snoop
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 /*
     22  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
     23  * Use is subject to license terms.
     24  */
     25 
     26 #ifndef _NFS4_PROT_H
     27 #define	_NFS4_PROT_H
     28 
     29 #include <rpc/rpc.h>
     30 
     31 #ifdef __cplusplus
     32 extern "C" {
     33 #endif
     34 
     35 #ifndef _AUTH_SYS_DEFINE_FOR_NFSv41
     36 #define	_AUTH_SYS_DEFINE_FOR_NFSv41
     37 #include <rpc/auth_sys.h>
     38 typedef struct authsys_parms authsys_parms;
     39 #endif /* _AUTH_SYS_DEFINE_FOR_NFSv41 */
     40 #define	NFS4_FHSIZE 128
     41 #define	NFS4_VERIFIER_SIZE 8
     42 #define	NFS4_OPAQUE_LIMIT 1024
     43 #define	NFS4_SESSIONID_SIZE 16
     44 #define	NFS4_INT64_MAX 0x7fffffffffffffff
     45 #define	NFS4_UINT64_MAX 0xffffffffffffffff
     46 #define	NFS4_INT32_MAX 0x7fffffff
     47 #define	NFS4_UINT32_MAX 0xffffffff
     48 #define	NFS4_MAXFILELEN 0xffffffffffffffff
     49 #define	NFS4_MAXFILEOFF 0xfffffffffffffffe
     50 
     51 enum nfs_ftype4 {
     52 	NF4REG = 1,
     53 	NF4DIR = 2,
     54 	NF4BLK = 3,
     55 	NF4CHR = 4,
     56 	NF4LNK = 5,
     57 	NF4SOCK = 6,
     58 	NF4FIFO = 7,
     59 	NF4ATTRDIR = 8,
     60 	NF4NAMEDATTR = 9
     61 };
     62 typedef enum nfs_ftype4 nfs_ftype4;
     63 
     64 enum nfsstat4 {
     65 	NFS4_OK = 0,
     66 	NFS4ERR_PERM = 1,
     67 	NFS4ERR_NOENT = 2,
     68 	NFS4ERR_IO = 5,
     69 	NFS4ERR_NXIO = 6,
     70 	NFS4ERR_ACCESS = 13,
     71 	NFS4ERR_EXIST = 17,
     72 	NFS4ERR_XDEV = 18,
     73 	NFS4ERR_NOTDIR = 20,
     74 	NFS4ERR_ISDIR = 21,
     75 	NFS4ERR_INVAL = 22,
     76 	NFS4ERR_FBIG = 27,
     77 	NFS4ERR_NOSPC = 28,
     78 	NFS4ERR_ROFS = 30,
     79 	NFS4ERR_MLINK = 31,
     80 	NFS4ERR_NAMETOOLONG = 63,
     81 	NFS4ERR_NOTEMPTY = 66,
     82 	NFS4ERR_DQUOT = 69,
     83 	NFS4ERR_STALE = 70,
     84 	NFS4ERR_BADHANDLE = 10001,
     85 	NFS4ERR_BAD_COOKIE = 10003,
     86 	NFS4ERR_NOTSUPP = 10004,
     87 	NFS4ERR_TOOSMALL = 10005,
     88 	NFS4ERR_SERVERFAULT = 10006,
     89 	NFS4ERR_BADTYPE = 10007,
     90 	NFS4ERR_DELAY = 10008,
     91 	NFS4ERR_SAME = 10009,
     92 	NFS4ERR_DENIED = 10010,
     93 	NFS4ERR_EXPIRED = 10011,
     94 	NFS4ERR_LOCKED = 10012,
     95 	NFS4ERR_GRACE = 10013,
     96 	NFS4ERR_FHEXPIRED = 10014,
     97 	NFS4ERR_SHARE_DENIED = 10015,
     98 	NFS4ERR_WRONGSEC = 10016,
     99 	NFS4ERR_CLID_INUSE = 10017,
    100 	NFS4ERR_RESOURCE = 10018,
    101 	NFS4ERR_MOVED = 10019,
    102 	NFS4ERR_NOFILEHANDLE = 10020,
    103 	NFS4ERR_MINOR_VERS_MISMATCH = 10021,
    104 	NFS4ERR_STALE_CLIENTID = 10022,
    105 	NFS4ERR_STALE_STATEID = 10023,
    106 	NFS4ERR_OLD_STATEID = 10024,
    107 	NFS4ERR_BAD_STATEID = 10025,
    108 	NFS4ERR_BAD_SEQID = 10026,
    109 	NFS4ERR_NOT_SAME = 10027,
    110 	NFS4ERR_LOCK_RANGE = 10028,
    111 	NFS4ERR_SYMLINK = 10029,
    112 	NFS4ERR_RESTOREFH = 10030,
    113 	NFS4ERR_LEASE_MOVED = 10031,
    114 	NFS4ERR_ATTRNOTSUPP = 10032,
    115 	NFS4ERR_NO_GRACE = 10033,
    116 	NFS4ERR_RECLAIM_BAD = 10034,
    117 	NFS4ERR_RECLAIM_CONFLICT = 10035,
    118 	NFS4ERR_BADXDR = 10036,
    119 	NFS4ERR_LOCKS_HELD = 10037,
    120 	NFS4ERR_OPENMODE = 10038,
    121 	NFS4ERR_BADOWNER = 10039,
    122 	NFS4ERR_BADCHAR = 10040,
    123 	NFS4ERR_BADNAME = 10041,
    124 	NFS4ERR_BAD_RANGE = 10042,
    125 	NFS4ERR_LOCK_NOTSUPP = 10043,
    126 	NFS4ERR_OP_ILLEGAL = 10044,
    127 	NFS4ERR_DEADLOCK = 10045,
    128 	NFS4ERR_FILE_OPEN = 10046,
    129 	NFS4ERR_ADMIN_REVOKED = 10047,
    130 	NFS4ERR_CB_PATH_DOWN = 10048,
    131 	NFS4ERR_BADIOMODE = 10049,
    132 	NFS4ERR_BADLAYOUT = 10050,
    133 	NFS4ERR_BAD_SESSION_DIGEST = 10051,
    134 	NFS4ERR_BADSESSION = 10052,
    135 	NFS4ERR_BADSLOT = 10053,
    136 	NFS4ERR_COMPLETE_ALREADY = 10054,
    137 	NFS4ERR_CONN_NOT_BOUND_TO_SESSION = 10055,
    138 	NFS4ERR_DELEG_ALREADY_WANTED = 10056,
    139 	NFS4ERR_BACK_CHAN_BUSY = 10057,
    140 	NFS4ERR_LAYOUTTRYLATER = 10058,
    141 	NFS4ERR_LAYOUTUNAVAILABLE = 10059,
    142 	NFS4ERR_NOMATCHING_LAYOUT = 10060,
    143 	NFS4ERR_RECALLCONFLICT = 10061,
    144 	NFS4ERR_UNKNOWN_LAYOUTTYPE = 10062,
    145 	NFS4ERR_SEQ_MISORDERED = 10063,
    146 	NFS4ERR_SEQUENCE_POS = 10064,
    147 	NFS4ERR_REQ_TOO_BIG = 10065,
    148 	NFS4ERR_REP_TOO_BIG = 10066,
    149 	NFS4ERR_REP_TOO_BIG_TO_CACHE = 10067,
    150 	NFS4ERR_RETRY_UNCACHED_REP = 10068,
    151 	NFS4ERR_UNSAFE_COMPOUND = 10069,
    152 	NFS4ERR_TOO_MANY_OPS = 10070,
    153 	NFS4ERR_OP_NOT_IN_SESSION = 10071,
    154 	NFS4ERR_HASH_ALG_UNSUPP = 10072,
    155 	/* Error 10073 is unused. */
    156 	NFS4ERR_CLIENTID_BUSY = 10074,
    157 	NFS4ERR_PNFS_IO_HOLE = 10075,
    158 	NFS4ERR_SEQ_FALSE_RETRY = 10076,
    159 	NFS4ERR_BAD_HIGH_SLOT = 10077,
    160 	NFS4ERR_DEADSESSION = 10078,
    161 	NFS4ERR_ENCR_ALG_UNSUPP = 10079,
    162 	NFS4ERR_PNFS_NO_LAYOUT = 10080,
    163 	NFS4ERR_NOT_ONLY_OP = 10081,
    164 	NFS4ERR_WRONG_CRED = 10082,
    165 	NFS4ERR_WRONG_TYPE = 10083,
    166 	NFS4ERR_DIRDELEG_UNAVAIL = 10084,
    167 	NFS4ERR_REJECT_DELEG = 10085,
    168 	NFS4ERR_RETURNCONFLICT = 10086
    169 };
    170 typedef enum nfsstat4 nfsstat4;
    171 
    172 typedef struct {
    173 	uint_t attrlist4_len;
    174 	char *attrlist4_val;
    175 } attrlist4;
    176 
    177 typedef struct {
    178 	uint_t bitmap4_len;
    179 	uint32_t *bitmap4_val;
    180 } bitmap4;
    181 
    182 typedef uint64_t changeid4;
    183 
    184 typedef uint64_t clientid4;
    185 
    186 typedef uint32_t count4;
    187 
    188 typedef uint64_t length4;
    189 
    190 typedef uint32_t mode4;
    191 
    192 typedef uint64_t nfs_cookie4;
    193 
    194 typedef struct {
    195 	uint_t nfs_fh4_len;
    196 	char *nfs_fh4_val;
    197 } nfs_fh4;
    198 
    199 typedef uint64_t offset4;
    200 
    201 typedef uint32_t qop4;
    202 
    203 typedef struct {
    204 	uint_t sec_oid4_len;
    205 	char *sec_oid4_val;
    206 } sec_oid4;
    207 
    208 typedef uint32_t sequenceid4;
    209 
    210 typedef uint32_t seqid4;
    211 
    212 typedef char sessionid4[NFS4_SESSIONID_SIZE];
    213 
    214 typedef uint32_t slotid4;
    215 
    216 typedef struct {
    217 	uint_t utf8string_len;
    218 	char *utf8string_val;
    219 } utf8string;
    220 
    221 typedef utf8string utf8str_cis;
    222 
    223 typedef utf8string utf8str_cs;
    224 
    225 typedef utf8string utf8str_mixed;
    226 
    227 typedef utf8str_cs component4;
    228 
    229 typedef utf8str_cs linktext4;
    230 
    231 typedef struct {
    232 	uint_t pathname4_len;
    233 	component4 *pathname4_val;
    234 } pathname4;
    235 
    236 typedef char verifier4[NFS4_VERIFIER_SIZE];
    237 
    238 struct nfstime4 {
    239 	int64_t seconds;
    240 	uint32_t nseconds;
    241 };
    242 typedef struct nfstime4 nfstime4;
    243 
    244 enum time_how4 {
    245 	SET_TO_SERVER_TIME4 = 0,
    246 	SET_TO_CLIENT_TIME4 = 1
    247 };
    248 typedef enum time_how4 time_how4;
    249 
    250 struct settime4 {
    251 	time_how4 set_it;
    252 	union {
    253 		nfstime4 time;
    254 	} settime4_u;
    255 };
    256 typedef struct settime4 settime4;
    257 
    258 typedef uint32_t nfs_lease4;
    259 
    260 struct fsid4 {
    261 	uint64_t major;
    262 	uint64_t minor;
    263 };
    264 typedef struct fsid4 fsid4;
    265 
    266 struct change_policy4 {
    267 	uint64_t cp_major;
    268 	uint64_t cp_minor;
    269 };
    270 typedef struct change_policy4 change_policy4;
    271 
    272 struct fs_location4 {
    273 	struct {
    274 		uint_t server_len;
    275 		utf8str_cis *server_val;
    276 	} server;
    277 	pathname4 rootpath;
    278 };
    279 typedef struct fs_location4 fs_location4;
    280 
    281 struct fs_locations4 {
    282 	pathname4 fs_root;
    283 	struct {
    284 		uint_t locations_len;
    285 		fs_location4 *locations_val;
    286 	} locations;
    287 };
    288 typedef struct fs_locations4 fs_locations4;
    289 #define	ACL4_SUPPORT_ALLOW_ACL 0x00000001
    290 #define	ACL4_SUPPORT_DENY_ACL 0x00000002
    291 #define	ACL4_SUPPORT_AUDIT_ACL 0x00000004
    292 #define	ACL4_SUPPORT_ALARM_ACL 0x00000008
    293 
    294 typedef uint32_t acetype4;
    295 #define	ACE4_ACCESS_ALLOWED_ACE_TYPE 0x00000000
    296 #define	ACE4_ACCESS_DENIED_ACE_TYPE 0x00000001
    297 #define	ACE4_SYSTEM_AUDIT_ACE_TYPE 0x00000002
    298 #define	ACE4_SYSTEM_ALARM_ACE_TYPE 0x00000003
    299 
    300 typedef uint32_t aceflag4;
    301 #define	ACE4_FILE_INHERIT_ACE 0x00000001
    302 #define	ACE4_DIRECTORY_INHERIT_ACE 0x00000002
    303 #define	ACE4_NO_PROPAGATE_INHERIT_ACE 0x00000004
    304 #define	ACE4_INHERIT_ONLY_ACE 0x00000008
    305 #define	ACE4_SUCCESSFUL_ACCESS_ACE_FLAG 0x00000010
    306 #define	ACE4_FAILED_ACCESS_ACE_FLAG 0x00000020
    307 #define	ACE4_IDENTIFIER_GROUP 0x00000040
    308 #define	ACE4_INHERITED_ACE 0x00000080
    309 
    310 typedef uint32_t acemask4;
    311 #define	ACE4_READ_DATA 0x00000001
    312 #define	ACE4_LIST_DIRECTORY 0x00000001
    313 #define	ACE4_WRITE_DATA 0x00000002
    314 #define	ACE4_ADD_FILE 0x00000002
    315 #define	ACE4_APPEND_DATA 0x00000004
    316 #define	ACE4_ADD_SUBDIRECTORY 0x00000004
    317 #define	ACE4_READ_NAMED_ATTRS 0x00000008
    318 #define	ACE4_WRITE_NAMED_ATTRS 0x00000010
    319 #define	ACE4_EXECUTE 0x00000020
    320 #define	ACE4_DELETE_CHILD 0x00000040
    321 #define	ACE4_READ_ATTRIBUTES 0x00000080
    322 #define	ACE4_WRITE_ATTRIBUTES 0x00000100
    323 #define	ACE4_WRITE_RETENTION 0x00000200
    324 #define	ACE4_WRITE_RETENTION_HOLD 0x00000400
    325 #define	ACE4_DELETE 0x00010000
    326 #define	ACE4_READ_ACL 0x00020000
    327 #define	ACE4_WRITE_ACL 0x00040000
    328 #define	ACE4_WRITE_OWNER 0x00080000
    329 #define	ACE4_SYNCHRONIZE 0x00100000
    330 #define	ACE4_GENERIC_READ 0x00120081
    331 #define	ACE4_GENERIC_WRITE 0x00160106
    332 #define	ACE4_GENERIC_EXECUTE 0x001200A0
    333 
    334 struct nfsace4 {
    335 	acetype4 type;
    336 	aceflag4 flag;
    337 	acemask4 access_mask;
    338 	utf8str_mixed who;
    339 };
    340 typedef struct nfsace4 nfsace4;
    341 
    342 typedef uint32_t aclflag4;
    343 #define	ACL4_AUTO_INHERIT 0x00000001
    344 #define	ACL4_PROTECTED 0x00000002
    345 #define	ACL4_DEFAULTED 0x00000004
    346 
    347 struct nfsacl41 {
    348 	aclflag4 na41_flag;
    349 	struct {
    350 		uint_t na41_aces_len;
    351 		nfsace4 *na41_aces_val;
    352 	} na41_aces;
    353 };
    354 typedef struct nfsacl41 nfsacl41;
    355 #define	MODE4_SUID 0x800
    356 #define	MODE4_SGID 0x400
    357 #define	MODE4_SVTX 0x200
    358 #define	MODE4_RUSR 0x100
    359 #define	MODE4_WUSR 0x080
    360 #define	MODE4_XUSR 0x040
    361 #define	MODE4_RGRP 0x020
    362 #define	MODE4_WGRP 0x010
    363 #define	MODE4_XGRP 0x008
    364 #define	MODE4_ROTH 0x004
    365 #define	MODE4_WOTH 0x002
    366 #define	MODE4_XOTH 0x001
    367 
    368 struct mode_masked4 {
    369 	mode4 mm_value_to_set;
    370 	mode4 mm_mask_bits;
    371 };
    372 typedef struct mode_masked4 mode_masked4;
    373 
    374 struct specdata4 {
    375 	uint32_t specdata1;
    376 	uint32_t specdata2;
    377 };
    378 typedef struct specdata4 specdata4;
    379 #define	FH4_PERSISTENT 0x00000000
    380 #define	FH4_NOEXPIRE_WITH_OPEN 0x00000001
    381 #define	FH4_VOLATILE_ANY 0x00000002
    382 #define	FH4_VOL_MIGRATION 0x00000004
    383 #define	FH4_VOL_RENAME 0x00000008
    384 
    385 struct netaddr4 {
    386 	char *na_r_netid;
    387 	char *na_r_addr;
    388 };
    389 typedef struct netaddr4 netaddr4;
    390 
    391 struct nfs_impl_id4 {
    392 	utf8str_cis nii_domain;
    393 	utf8str_cs nii_name;
    394 	nfstime4 nii_date;
    395 };
    396 typedef struct nfs_impl_id4 nfs_impl_id4;
    397 
    398 struct stateid4 {
    399 	uint32_t seqid;
    400 	char other[12];
    401 };
    402 typedef struct stateid4 stateid4;
    403 
    404 enum layouttype4 {
    405 	LAYOUT4_NFSV4_1_FILES = 0x1,
    406 	LAYOUT4_OSD2_OBJECTS = 0x2,
    407 	LAYOUT4_BLOCK_VOLUME = 0x3
    408 };
    409 typedef enum layouttype4 layouttype4;
    410 
    411 struct layout_content4 {
    412 	layouttype4 loc_type;
    413 	struct {
    414 		uint_t loc_body_len;
    415 		char *loc_body_val;
    416 	} loc_body;
    417 };
    418 typedef struct layout_content4 layout_content4;
    419 /*
    420  * LAYOUT4_OSD2_OBJECTS loc_body description
    421  * is in a separate .x file
    422  */
    423 
    424 /*
    425  * LAYOUT4_BLOCK_VOLUME loc_body description
    426  * is in a separate .x file
    427  */
    428 
    429 struct layouthint4 {
    430 	layouttype4 loh_type;
    431 	struct {
    432 		uint_t loh_body_len;
    433 		char *loh_body_val;
    434 	} loh_body;
    435 };
    436 typedef struct layouthint4 layouthint4;
    437 
    438 enum layoutiomode4 {
    439 	LAYOUTIOMODE4_READ = 1,
    440 	LAYOUTIOMODE4_RW = 2,
    441 	LAYOUTIOMODE4_ANY = 3
    442 };
    443 typedef enum layoutiomode4 layoutiomode4;
    444 
    445 struct layout4 {
    446 	offset4 lo_offset;
    447 	length4 lo_length;
    448 	layoutiomode4 lo_iomode;
    449 	layout_content4 lo_content;
    450 };
    451 typedef struct layout4 layout4;
    452 #define	NFS4_DEVICEID4_SIZE 16
    453 
    454 typedef char deviceid4[NFS4_DEVICEID4_SIZE];
    455 
    456 struct device_addr4 {
    457 	layouttype4 da_layout_type;
    458 	struct {
    459 		uint_t da_addr_body_len;
    460 		char *da_addr_body_val;
    461 	} da_addr_body;
    462 };
    463 typedef struct device_addr4 device_addr4;
    464 
    465 struct layoutupdate4 {
    466 	layouttype4 lou_type;
    467 	struct {
    468 		uint_t lou_body_len;
    469 		char *lou_body_val;
    470 	} lou_body;
    471 };
    472 typedef struct layoutupdate4 layoutupdate4;
    473 
    474 #define	LAYOUT4_RET_REC_FILE 1
    475 #define	LAYOUT4_RET_REC_FSID 2
    476 #define	LAYOUT4_RET_REC_ALL 3
    477 
    478 
    479 enum layoutreturn_type4 {
    480 	LAYOUTRETURN4_FILE = LAYOUT4_RET_REC_FILE,
    481 	LAYOUTRETURN4_FSID = LAYOUT4_RET_REC_FSID,
    482 	LAYOUTRETURN4_ALL = LAYOUT4_RET_REC_ALL
    483 };
    484 typedef enum layoutreturn_type4 layoutreturn_type4;
    485 /* layouttype4 specific data */
    486 
    487 struct layoutreturn_file4 {
    488 	offset4 lrf_offset;
    489 	length4 lrf_length;
    490 	stateid4 lrf_stateid;
    491 	struct {
    492 		uint_t lrf_body_len;
    493 		char *lrf_body_val;
    494 	} lrf_body;
    495 };
    496 typedef struct layoutreturn_file4 layoutreturn_file4;
    497 
    498 struct layoutreturn4 {
    499 	layoutreturn_type4 lr_returntype;
    500 	union {
    501 		layoutreturn_file4 lr_layout;
    502 	} layoutreturn4_u;
    503 };
    504 typedef struct layoutreturn4 layoutreturn4;
    505 
    506 
    507 enum fs4_status_type {
    508 	STATUS4_FIXED = 1,
    509 	STATUS4_UPDATED = 2,
    510 	STATUS4_VERSIONED = 3,
    511 	STATUS4_WRITABLE = 4,
    512 	STATUS4_REFERRAL = 5
    513 };
    514 typedef enum fs4_status_type fs4_status_type;
    515 
    516 struct fs4_status {
    517 	bool_t fss_absent;
    518 	fs4_status_type fss_type;
    519 	utf8str_cs fss_source;
    520 	utf8str_cs fss_current;
    521 	int32_t fss_age;
    522 	nfstime4 fss_version;
    523 };
    524 typedef struct fs4_status fs4_status;
    525 #define	TH4_READ_SIZE 0
    526 #define	TH4_WRITE_SIZE 1
    527 #define	TH4_READ_IOSIZE 2
    528 #define	TH4_WRITE_IOSIZE 3
    529 #define	TH4_NUM_HINTS 4
    530 
    531 typedef length4 threshold4_read_size;
    532 
    533 typedef length4 threshold4_write_size;
    534 
    535 typedef length4 threshold4_read_iosize;
    536 
    537 typedef length4 threshold4_write_iosize;
    538 
    539 struct threshold_item4 {
    540 	layouttype4 thi_layout_type;
    541 	bitmap4 thi_hintset;
    542 	struct {
    543 		uint_t thi_hintlist_len;
    544 		char *thi_hintlist_val;
    545 	} thi_hintlist;
    546 };
    547 typedef struct threshold_item4 threshold_item4;
    548 
    549 struct mdsthreshold4 {
    550 	struct {
    551 		uint_t mth_hints_len;
    552 		threshold_item4 *mth_hints_val;
    553 	} mth_hints;
    554 };
    555 typedef struct mdsthreshold4 mdsthreshold4;
    556 #define	RET4_DURATION_INFINITE 0xffffffffffffffff
    557 
    558 struct retention_get4 {
    559 	uint64_t rg_duration;
    560 	struct {
    561 		uint_t rg_begin_time_len;
    562 		nfstime4 *rg_begin_time_val;
    563 	} rg_begin_time;
    564 };
    565 typedef struct retention_get4 retention_get4;
    566 
    567 struct retention_set4 {
    568 	bool_t rs_enable;
    569 	struct {
    570 		uint_t rs_duration_len;
    571 		uint64_t *rs_duration_val;
    572 	} rs_duration;
    573 };
    574 typedef struct retention_set4 retention_set4;
    575 #define	FSCHARSET_CAP4_CONTAINS_NON_UTF8 0x1
    576 #define	FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 0x2
    577 
    578 typedef uint32_t fs_charset_cap4;
    579 
    580 typedef bitmap4 fattr4_supported_attrs;
    581 
    582 typedef bitmap4 fattr4_suppattr_exclcreat;
    583 
    584 typedef nfs_ftype4 fattr4_type;
    585 
    586 typedef uint32_t fattr4_fh_expire_type;
    587 
    588 typedef changeid4 fattr4_change;
    589 
    590 typedef uint64_t fattr4_size;
    591 
    592 typedef bool_t fattr4_link_support;
    593 
    594 typedef bool_t fattr4_symlink_support;
    595 
    596 typedef bool_t fattr4_named_attr;
    597 
    598 typedef fsid4 fattr4_fsid;
    599 
    600 typedef bool_t fattr4_unique_handles;
    601 
    602 typedef nfs_lease4 fattr4_lease_time;
    603 
    604 typedef nfsstat4 fattr4_rdattr_error;
    605 
    606 typedef struct {
    607 	uint_t fattr4_acl_len;
    608 	nfsace4 *fattr4_acl_val;
    609 } fattr4_acl;
    610 
    611 typedef uint32_t fattr4_aclsupport;
    612 
    613 typedef bool_t fattr4_archive;
    614 
    615 typedef bool_t fattr4_cansettime;
    616 
    617 typedef bool_t fattr4_case_insensitive;
    618 
    619 typedef bool_t fattr4_case_preserving;
    620 
    621 typedef bool_t fattr4_chown_restricted;
    622 
    623 typedef uint64_t fattr4_fileid;
    624 
    625 typedef uint64_t fattr4_files_avail;
    626 
    627 typedef nfs_fh4 fattr4_filehandle;
    628 
    629 typedef uint64_t fattr4_files_free;
    630 
    631 typedef uint64_t fattr4_files_total;
    632 
    633 typedef fs_locations4 fattr4_fs_locations;
    634 
    635 typedef bool_t fattr4_hidden;
    636 
    637 typedef bool_t fattr4_homogeneous;
    638 
    639 typedef uint64_t fattr4_maxfilesize;
    640 
    641 typedef uint32_t fattr4_maxlink;
    642 
    643 typedef uint32_t fattr4_maxname;
    644 
    645 typedef uint64_t fattr4_maxread;
    646 
    647 typedef uint64_t fattr4_maxwrite;
    648 
    649 typedef utf8str_cs fattr4_mimetype;
    650 
    651 typedef mode4 fattr4_mode;
    652 
    653 typedef mode_masked4 fattr4_mode_set_masked;
    654 
    655 typedef uint64_t fattr4_mounted_on_fileid;
    656 
    657 typedef bool_t fattr4_no_trunc;
    658 
    659 typedef uint32_t fattr4_numlinks;
    660 
    661 typedef utf8str_mixed fattr4_owner;
    662 
    663 typedef utf8str_mixed fattr4_owner_group;
    664 
    665 typedef uint64_t fattr4_quota_avail_hard;
    666 
    667 typedef uint64_t fattr4_quota_avail_soft;
    668 
    669 typedef uint64_t fattr4_quota_used;
    670 
    671 typedef specdata4 fattr4_rawdev;
    672 
    673 typedef uint64_t fattr4_space_avail;
    674 
    675 typedef uint64_t fattr4_space_free;
    676 
    677 typedef uint64_t fattr4_space_total;
    678 
    679 typedef uint64_t fattr4_space_used;
    680 
    681 typedef bool_t fattr4_system;
    682 
    683 typedef nfstime4 fattr4_time_access;
    684 
    685 typedef settime4 fattr4_time_access_set;
    686 
    687 typedef nfstime4 fattr4_time_backup;
    688 
    689 typedef nfstime4 fattr4_time_create;
    690 
    691 typedef nfstime4 fattr4_time_delta;
    692 
    693 typedef nfstime4 fattr4_time_metadata;
    694 
    695 typedef nfstime4 fattr4_time_modify;
    696 
    697 typedef settime4 fattr4_time_modify_set;
    698 
    699 typedef nfstime4 fattr4_dir_notif_delay;
    700 
    701 typedef nfstime4 fattr4_dirent_notif_delay;
    702 
    703 typedef bool_t fattr4_absent;
    704 
    705 typedef struct {
    706 	uint_t fattr4_fs_layout_types_len;
    707 	layouttype4 *fattr4_fs_layout_types_val;
    708 } fattr4_fs_layout_types;
    709 
    710 typedef fs4_status fattr4_fs_status;
    711 
    712 typedef fs_charset_cap4 fattr4_fs_charset_cap4;
    713 
    714 typedef uint32_t fattr4_layout_alignment;
    715 
    716 typedef uint32_t fattr4_layout_blksize;
    717 
    718 typedef layouthint4 fattr4_layout_hint;
    719 
    720 typedef struct {
    721 	uint_t fattr4_layout_types_len;
    722 	layouttype4 *fattr4_layout_types_val;
    723 } fattr4_layout_types;
    724 
    725 typedef mdsthreshold4 fattr4_mdsthreshold;
    726 
    727 typedef retention_get4 fattr4_retention_get;
    728 
    729 typedef retention_set4 fattr4_retention_set;
    730 
    731 typedef retention_get4 fattr4_retentevt_get;
    732 
    733 typedef retention_set4 fattr4_retentevt_set;
    734 
    735 typedef uint64_t fattr4_retention_hold;
    736 
    737 typedef nfsacl41 fattr4_dacl;
    738 
    739 typedef nfsacl41 fattr4_sacl;
    740 #define	FATTR4_SUPPORTED_ATTRS 0
    741 #define	FATTR4_TYPE 1
    742 #define	FATTR4_FH_EXPIRE_TYPE 2
    743 #define	FATTR4_CHANGE 3
    744 #define	FATTR4_SIZE 4
    745 #define	FATTR4_LINK_SUPPORT 5
    746 #define	FATTR4_SYMLINK_SUPPORT 6
    747 #define	FATTR4_NAMED_ATTR 7
    748 #define	FATTR4_FSID 8
    749 #define	FATTR4_UNIQUE_HANDLES 9
    750 #define	FATTR4_LEASE_TIME 10
    751 #define	FATTR4_RDATTR_ERROR 11
    752 #define	FATTR4_FILEHANDLE 19
    753 #define	FATTR4_SUPPATTR_EXCLCREAT 75
    754 #define	FATTR4_ACL 12
    755 #define	FATTR4_ACLSUPPORT 13
    756 #define	FATTR4_ARCHIVE 14
    757 #define	FATTR4_CANSETTIME 15
    758 #define	FATTR4_CASE_INSENSITIVE 16
    759 #define	FATTR4_CASE_PRESERVING 17
    760 #define	FATTR4_CHOWN_RESTRICTED 18
    761 #define	FATTR4_FILEID 20
    762 #define	FATTR4_FILES_AVAIL 21
    763 #define	FATTR4_FILES_FREE 22
    764 #define	FATTR4_FILES_TOTAL 23
    765 #define	FATTR4_FS_LOCATIONS 24
    766 #define	FATTR4_HIDDEN 25
    767 #define	FATTR4_HOMOGENEOUS 26
    768 #define	FATTR4_MAXFILESIZE 27
    769 #define	FATTR4_MAXLINK 28
    770 #define	FATTR4_MAXNAME 29
    771 #define	FATTR4_MAXREAD 30
    772 #define	FATTR4_MAXWRITE 31
    773 #define	FATTR4_MIMETYPE 32
    774 #define	FATTR4_MODE 33
    775 #define	FATTR4_NO_TRUNC 34
    776 #define	FATTR4_NUMLINKS 35
    777 #define	FATTR4_OWNER 36
    778 #define	FATTR4_OWNER_GROUP 37
    779 #define	FATTR4_QUOTA_AVAIL_HARD 38
    780 #define	FATTR4_QUOTA_AVAIL_SOFT 39
    781 #define	FATTR4_QUOTA_USED 40
    782 #define	FATTR4_RAWDEV 41
    783 #define	FATTR4_SPACE_AVAIL 42
    784 #define	FATTR4_SPACE_FREE 43
    785 #define	FATTR4_SPACE_TOTAL 44
    786 #define	FATTR4_SPACE_USED 45
    787 #define	FATTR4_SYSTEM 46
    788 #define	FATTR4_TIME_ACCESS 47
    789 #define	FATTR4_TIME_ACCESS_SET 48
    790 #define	FATTR4_TIME_BACKUP 49
    791 #define	FATTR4_TIME_CREATE 50
    792 #define	FATTR4_TIME_DELTA 51
    793 #define	FATTR4_TIME_METADATA 52
    794 #define	FATTR4_TIME_MODIFY 53
    795 #define	FATTR4_TIME_MODIFY_SET 54
    796 #define	FATTR4_MOUNTED_ON_FILEID 55
    797 #define	FATTR4_DIR_NOTIF_DELAY 56
    798 #define	FATTR4_DIRENT_NOTIF_DELAY 57
    799 #define	FATTR4_DACL 58
    800 #define	FATTR4_SACL 59
    801 #define	FATTR4_CHANGE_POLICY 60
    802 #define	FATTR4_FS_STATUS 61
    803 #define	FATTR4_FS_LAYOUT_TYPE 62
    804 #define	FATTR4_LAYOUT_HINT 63
    805 #define	FATTR4_LAYOUT_TYPE 64
    806 #define	FATTR4_LAYOUT_BLKSIZE 65
    807 #define	FATTR4_LAYOUT_ALIGNMENT 66
    808 #define	FATTR4_FS_LOCATIONS_INFO 67
    809 #define	FATTR4_MDSTHRESHOLD 68
    810 #define	FATTR4_RETENTION_GET 69
    811 #define	FATTR4_RETENTION_SET 70
    812 #define	FATTR4_RETENTEVT_GET 71
    813 #define	FATTR4_RETENTEVT_SET 72
    814 #define	FATTR4_RETENTION_HOLD 73
    815 #define	FATTR4_MODE_SET_MASKED 74
    816 #define	FATTR4_SUPPATTR_EXCLCREAT 75
    817 #define	FATTR4_FS_CHARSET_CAP 76
    818 
    819 struct fattr4 {
    820 	bitmap4 attrmask;
    821 	attrlist4 attr_vals;
    822 };
    823 typedef struct fattr4 fattr4;
    824 
    825 struct change_info4 {
    826 	bool_t atomic;
    827 	changeid4 before;
    828 	changeid4 after;
    829 };
    830 typedef struct change_info4 change_info4;
    831 
    832 typedef netaddr4 clientaddr4;
    833 
    834 struct cb_client4 {
    835 	uint32_t cb_program;
    836 	netaddr4 cb_location;
    837 };
    838 typedef struct cb_client4 cb_client4;
    839 
    840 struct nfs_client_id4 {
    841 	verifier4 verifier;
    842 	struct {
    843 		uint_t id_len;
    844 		char *id_val;
    845 	} id;
    846 };
    847 typedef struct nfs_client_id4 nfs_client_id4;
    848 
    849 struct client_owner4 {
    850 	verifier4 co_verifier;
    851 	struct {
    852 		uint_t co_ownerid_len;
    853 		char *co_ownerid_val;
    854 	} co_ownerid;
    855 };
    856 typedef struct client_owner4 client_owner4;
    857 
    858 struct server_owner4 {
    859 	uint64_t so_minor_id;
    860 	struct {
    861 		uint_t so_major_id_len;
    862 		char *so_major_id_val;
    863 	} so_major_id;
    864 };
    865 typedef struct server_owner4 server_owner4;
    866 
    867 struct state_owner4 {
    868 	clientid4 clientid;
    869 	struct {
    870 		uint_t owner_len;
    871 		char *owner_val;
    872 	} owner;
    873 };
    874 typedef struct state_owner4 state_owner4;
    875 
    876 typedef state_owner4 open_owner4;
    877 
    878 typedef state_owner4 lock_owner4;
    879 
    880 enum nfs_lock_type4 {
    881 	READ_LT = 1,
    882 	WRITE_LT = 2,
    883 	READW_LT = 3,
    884 	WRITEW_LT = 4
    885 };
    886 typedef enum nfs_lock_type4 nfs_lock_type4;
    887 
    888 /* Input for computing subkeys */
    889 
    890 enum ssv_subkey4 {
    891 	SSV4_SUBKEY_MIC_I2T = 1,
    892 	SSV4_SUBKEY_MIC_T2I = 2,
    893 	SSV4_SUBKEY_SEAL_I2T = 3,
    894 	SSV4_SUBKEY_SEAL_T2I = 4
    895 };
    896 typedef enum ssv_subkey4 ssv_subkey4;
    897 
    898 
    899 /* Input for computing smt_hmac */
    900 
    901 struct ssv_mic_plain_tkn4 {
    902 	uint32_t smpt_ssv_seq;
    903 	struct {
    904 		uint_t smpt_orig_plain_len;
    905 		char *smpt_orig_plain_val;
    906 	} smpt_orig_plain;
    907 };
    908 typedef struct ssv_mic_plain_tkn4 ssv_mic_plain_tkn4;
    909 
    910 
    911 /* SSV GSS PerMsgToken token */
    912 
    913 struct ssv_mic_tkn4 {
    914 	uint32_t smt_ssv_seq;
    915 	struct {
    916 		uint_t smt_hmac_len;
    917 		char *smt_hmac_val;
    918 	} smt_hmac;
    919 };
    920 typedef struct ssv_mic_tkn4 ssv_mic_tkn4;
    921 
    922 
    923 /* Input for computing ssct_encr_data and ssct_hmac */
    924 
    925 struct ssv_seal_plain_tkn4 {
    926 	struct {
    927 		uint_t sspt_confounder_len;
    928 		char *sspt_confounder_val;
    929 	} sspt_confounder;
    930 	uint32_t sspt_ssv_seq;
    931 	struct {
    932 		uint_t sspt_orig_plain_len;
    933 		char *sspt_orig_plain_val;
    934 	} sspt_orig_plain;
    935 	struct {
    936 		uint_t sspt_pad_len;
    937 		char *sspt_pad_val;
    938 	} sspt_pad;
    939 };
    940 typedef struct ssv_seal_plain_tkn4 ssv_seal_plain_tkn4;
    941 
    942 
    943 /* SSV GSS SealedMessage token */
    944 
    945 struct ssv_seal_cipher_tkn4 {
    946 	uint32_t ssct_ssv_seq;
    947 	struct {
    948 		uint_t ssct_iv_len;
    949 		char *ssct_iv_val;
    950 	} ssct_iv;
    951 	struct {
    952 		uint_t ssct_encr_data_len;
    953 		char *ssct_encr_data_val;
    954 	} ssct_encr_data;
    955 	struct {
    956 		uint_t ssct_hmac_len;
    957 		char *ssct_hmac_val;
    958 	} ssct_hmac;
    959 };
    960 typedef struct ssv_seal_cipher_tkn4 ssv_seal_cipher_tkn4;
    961 
    962 
    963 struct fs_locations_server4 {
    964 	int32_t fls_currency;
    965 	struct {
    966 		uint_t fls_info_len;
    967 		char *fls_info_val;
    968 	} fls_info;
    969 	utf8str_cis fls_server;
    970 };
    971 typedef struct fs_locations_server4 fs_locations_server4;
    972 #define	FSLI4BX_GFLAGS 0
    973 #define	FSLI4BX_TFLAGS 1
    974 #define	FSLI4BX_CLSIMUL 2
    975 #define	FSLI4BX_CLHANDLE 3
    976 #define	FSLI4BX_CLFILEID 4
    977 #define	FSLI4BX_CLWRITEVER 5
    978 #define	FSLI4BX_CLCHANGE 6
    979 #define	FSLI4BX_CLREADDIR 7
    980 #define	FSLI4BX_READRANK 8
    981 #define	FSLI4BX_WRITERANK 9
    982 #define	FSLI4BX_READORDER 10
    983 #define	FSLI4BX_WRITEORDER 11
    984 #define	FSLI4GF_WRITABLE 0x01
    985 #define	FSLI4GF_CUR_REQ 0x02
    986 #define	FSLI4GF_ABSENT 0x04
    987 #define	FSLI4GF_GOING 0x08
    988 #define	FSLI4GF_SPLIT 0x10
    989 #define	FSLI4TF_RDMA 0x01
    990 
    991 struct fs_locations_item4 {
    992 	struct {
    993 		uint_t fli_entries_len;
    994 		fs_locations_server4 *fli_entries_val;
    995 	} fli_entries;
    996 	pathname4 fli_rootpath;
    997 };
    998 typedef struct fs_locations_item4 fs_locations_item4;
    999 
   1000 struct fs_locations_info4 {
   1001 	uint32_t fli_flags;
   1002 	int32_t fli_valid_for;
   1003 	pathname4 fli_fs_root;
   1004 	struct {
   1005 		uint_t fli_items_len;
   1006 		fs_locations_item4 *fli_items_val;
   1007 	} fli_items;
   1008 };
   1009 typedef struct fs_locations_info4 fs_locations_info4;
   1010 #define	FSLI4IF_VAR_SUB 0x00000001
   1011 
   1012 typedef fs_locations_info4 fattr4_fs_locations_info;
   1013 #define	NFL4_UFLG_MASK 0x0000003F
   1014 #define	NFL4_UFLG_DENSE 0x00000001
   1015 #define	NFL4_UFLG_COMMIT_THRU_MDS 0x00000002
   1016 #define	NFL4_UFLG_STRIPE_UNIT_SIZE_MASK 0xFFFFFFC0
   1017 
   1018 typedef uint32_t nfl_util4;
   1019 
   1020 
   1021 enum filelayout_hint_care4 {
   1022 	NFLH4_CARE_DENSE = NFL4_UFLG_DENSE,
   1023 	NFLH4_CARE_COMMIT_THRU_MDS = NFL4_UFLG_COMMIT_THRU_MDS,
   1024 	NFLH4_CARE_STRIPE_UNIT_SIZE = 0x00000040,
   1025 	NFLH4_CARE_STRIPE_COUNT = 0x00000080
   1026 };
   1027 typedef enum filelayout_hint_care4 filelayout_hint_care4;
   1028 
   1029 /* Encoded in the loh_body field of type layouthint4: */
   1030 
   1031 
   1032 struct nfsv4_1_file_layouthint4 {
   1033 	uint32_t nflh_care;
   1034 	nfl_util4 nflh_util;
   1035 	count4 nflh_stripe_count;
   1036 };
   1037 typedef struct nfsv4_1_file_layouthint4 nfsv4_1_file_layouthint4;
   1038 
   1039 
   1040 
   1041 typedef struct {
   1042 	uint_t multipath_list4_len;
   1043 	netaddr4 *multipath_list4_val;
   1044 } multipath_list4;
   1045 
   1046 /* Encoded in the da_addr_body field of type device_addr4: */
   1047 
   1048 struct nfsv4_1_file_layout_ds_addr4 {
   1049 	struct {
   1050 		uint_t nflda_stripe_indices_len;
   1051 		uint32_t *nflda_stripe_indices_val;
   1052 	} nflda_stripe_indices;
   1053 	struct {
   1054 		uint_t nflda_multipath_ds_list_len;
   1055 		multipath_list4 *nflda_multipath_ds_list_val;
   1056 	} nflda_multipath_ds_list;
   1057 };
   1058 typedef struct nfsv4_1_file_layout_ds_addr4 nfsv4_1_file_layout_ds_addr4;
   1059 
   1060 
   1061 /* Encoded in the loc_body field of type layout_content4: */
   1062 
   1063 struct nfsv4_1_file_layout4 {
   1064 	deviceid4 nfl_deviceid;
   1065 	nfl_util4 nfl_util;
   1066 	uint32_t nfl_first_stripe_index;
   1067 	offset4 nfl_pattern_offset;
   1068 	struct {
   1069 		uint_t nfl_fh_list_len;
   1070 		nfs_fh4 *nfl_fh_list_val;
   1071 	} nfl_fh_list;
   1072 };
   1073 typedef struct nfsv4_1_file_layout4 nfsv4_1_file_layout4;
   1074 
   1075 /*
   1076  * Encoded in the lou_body field of type layoutupdate4:
   1077  *      Nothing. lou_body is a zero length array of octets.
   1078  */
   1079 
   1080 #define	ACCESS4_READ 0x00000001
   1081 #define	ACCESS4_LOOKUP 0x00000002
   1082 #define	ACCESS4_MODIFY 0x00000004
   1083 #define	ACCESS4_EXTEND 0x00000008
   1084 #define	ACCESS4_DELETE 0x00000010
   1085 #define	ACCESS4_EXECUTE 0x00000020
   1086 
   1087 struct ACCESS4args {
   1088 	uint32_t access;
   1089 };
   1090 typedef struct ACCESS4args ACCESS4args;
   1091 
   1092 struct ACCESS4resok {
   1093 	uint32_t supported;
   1094 	uint32_t access;
   1095 };
   1096 typedef struct ACCESS4resok ACCESS4resok;
   1097 
   1098 struct ACCESS4res {
   1099 	nfsstat4 status;
   1100 	union {
   1101 		ACCESS4resok resok4;
   1102 	} ACCESS4res_u;
   1103 };
   1104 typedef struct ACCESS4res ACCESS4res;
   1105 
   1106 struct CLOSE4args {
   1107 	seqid4 seqid;
   1108 	stateid4 open_stateid;
   1109 };
   1110 typedef struct CLOSE4args CLOSE4args;
   1111 
   1112 struct CLOSE4res {
   1113 	nfsstat4 status;
   1114 	union {
   1115 		stateid4 open_stateid;
   1116 	} CLOSE4res_u;
   1117 };
   1118 typedef struct CLOSE4res CLOSE4res;
   1119 
   1120 struct COMMIT4args {
   1121 	offset4 offset;
   1122 	count4 count;
   1123 };
   1124 typedef struct COMMIT4args COMMIT4args;
   1125 
   1126 struct COMMIT4resok {
   1127 	verifier4 writeverf;
   1128 };
   1129 typedef struct COMMIT4resok COMMIT4resok;
   1130 
   1131 struct COMMIT4res {
   1132 	nfsstat4 status;
   1133 	union {
   1134 		COMMIT4resok resok4;
   1135 	} COMMIT4res_u;
   1136 };
   1137 typedef struct COMMIT4res COMMIT4res;
   1138 
   1139 struct createtype4 {
   1140 	nfs_ftype4 type;
   1141 	union {
   1142 		linktext4 linkdata;
   1143 		specdata4 devdata;
   1144 	} createtype4_u;
   1145 };
   1146 typedef struct createtype4 createtype4;
   1147 
   1148 struct CREATE4args {
   1149 	createtype4 objtype;
   1150 	component4 objname;
   1151 	fattr4 createattrs;
   1152 };
   1153 typedef struct CREATE4args CREATE4args;
   1154 
   1155 struct CREATE4resok {
   1156 	change_info4 cinfo;
   1157 	bitmap4 attrset;
   1158 };
   1159 typedef struct CREATE4resok CREATE4resok;
   1160 
   1161 struct CREATE4res {
   1162 	nfsstat4 status;
   1163 	union {
   1164 		CREATE4resok resok4;
   1165 	} CREATE4res_u;
   1166 };
   1167 typedef struct CREATE4res CREATE4res;
   1168 
   1169 struct DELEGPURGE4args {
   1170 	clientid4 clientid;
   1171 };
   1172 typedef struct DELEGPURGE4args DELEGPURGE4args;
   1173 
   1174 struct DELEGPURGE4res {
   1175 	nfsstat4 status;
   1176 };
   1177 typedef struct DELEGPURGE4res DELEGPURGE4res;
   1178 
   1179 struct DELEGRETURN4args {
   1180 	stateid4 deleg_stateid;
   1181 };
   1182 typedef struct DELEGRETURN4args DELEGRETURN4args;
   1183 
   1184 struct DELEGRETURN4res {
   1185 	nfsstat4 status;
   1186 };
   1187 typedef struct DELEGRETURN4res DELEGRETURN4res;
   1188 
   1189 struct GETATTR4args {
   1190 	bitmap4 attr_request;
   1191 };
   1192 typedef struct GETATTR4args GETATTR4args;
   1193 
   1194 struct GETATTR4resok {
   1195 	fattr4 obj_attributes;
   1196 };
   1197 typedef struct GETATTR4resok GETATTR4resok;
   1198 
   1199 struct GETATTR4res {
   1200 	nfsstat4 status;
   1201 	union {
   1202 		GETATTR4resok resok4;
   1203 	} GETATTR4res_u;
   1204 };
   1205 typedef struct GETATTR4res GETATTR4res;
   1206 
   1207 struct GETFH4resok {
   1208 	nfs_fh4 object;
   1209 };
   1210 typedef struct GETFH4resok GETFH4resok;
   1211 
   1212 struct GETFH4res {
   1213 	nfsstat4 status;
   1214 	union {
   1215 		GETFH4resok resok4;
   1216 	} GETFH4res_u;
   1217 };
   1218 typedef struct GETFH4res GETFH4res;
   1219 
   1220 struct LINK4args {
   1221 	component4 newname;
   1222 };
   1223 typedef struct LINK4args LINK4args;
   1224 
   1225 struct LINK4resok {
   1226 	change_info4 cinfo;
   1227 };
   1228 typedef struct LINK4resok LINK4resok;
   1229 
   1230 struct LINK4res {
   1231 	nfsstat4 status;
   1232 	union {
   1233 		LINK4resok resok4;
   1234 	} LINK4res_u;
   1235 };
   1236 typedef struct LINK4res LINK4res;
   1237 
   1238 struct open_to_lock_owner4 {
   1239 	seqid4 open_seqid;
   1240 	stateid4 open_stateid;
   1241 	seqid4 lock_seqid;
   1242 	lock_owner4 lock_owner;
   1243 };
   1244 typedef struct open_to_lock_owner4 open_to_lock_owner4;
   1245 
   1246 struct exist_lock_owner4 {
   1247 	stateid4 lock_stateid;
   1248 	seqid4 lock_seqid;
   1249 };
   1250 typedef struct exist_lock_owner4 exist_lock_owner4;
   1251 
   1252 struct locker4 {
   1253 	bool_t new_lock_owner;
   1254 	union {
   1255 		open_to_lock_owner4 open_owner;
   1256 		exist_lock_owner4 lock_owner;
   1257 	} locker4_u;
   1258 };
   1259 typedef struct locker4 locker4;
   1260 
   1261 struct LOCK4args {
   1262 	nfs_lock_type4 locktype;
   1263 	bool_t reclaim;
   1264 	offset4 offset;
   1265 	length4 length;
   1266 	locker4 locker;
   1267 };
   1268 typedef struct LOCK4args LOCK4args;
   1269 
   1270 struct LOCK4denied {
   1271 	offset4 offset;
   1272 	length4 length;
   1273 	nfs_lock_type4 locktype;
   1274 	lock_owner4 owner;
   1275 };
   1276 typedef struct LOCK4denied LOCK4denied;
   1277 
   1278 struct LOCK4resok {
   1279 	stateid4 lock_stateid;
   1280 };
   1281 typedef struct LOCK4resok LOCK4resok;
   1282 
   1283 struct LOCK4res {
   1284 	nfsstat4 status;
   1285 	union {
   1286 		LOCK4resok resok4;
   1287 		LOCK4denied denied;
   1288 	} LOCK4res_u;
   1289 };
   1290 typedef struct LOCK4res LOCK4res;
   1291 
   1292 struct LOCKT4args {
   1293 	nfs_lock_type4 locktype;
   1294 	offset4 offset;
   1295 	length4 length;
   1296 	lock_owner4 owner;
   1297 };
   1298 typedef struct LOCKT4args LOCKT4args;
   1299 
   1300 struct LOCKT4res {
   1301 	nfsstat4 status;
   1302 	union {
   1303 		LOCK4denied denied;
   1304 	} LOCKT4res_u;
   1305 };
   1306 typedef struct LOCKT4res LOCKT4res;
   1307 
   1308 struct LOCKU4args {
   1309 	nfs_lock_type4 locktype;
   1310 	seqid4 seqid;
   1311 	stateid4 lock_stateid;
   1312 	offset4 offset;
   1313 	length4 length;
   1314 };
   1315 typedef struct LOCKU4args LOCKU4args;
   1316 
   1317 struct LOCKU4res {
   1318 	nfsstat4 status;
   1319 	union {
   1320 		stateid4 lock_stateid;
   1321 	} LOCKU4res_u;
   1322 };
   1323 typedef struct LOCKU4res LOCKU4res;
   1324 
   1325 struct LOOKUP4args {
   1326 	component4 objname;
   1327 };
   1328 typedef struct LOOKUP4args LOOKUP4args;
   1329 
   1330 struct LOOKUP4res {
   1331 	nfsstat4 status;
   1332 };
   1333 typedef struct LOOKUP4res LOOKUP4res;
   1334 
   1335 struct LOOKUPP4res {
   1336 	nfsstat4 status;
   1337 };
   1338 typedef struct LOOKUPP4res LOOKUPP4res;
   1339 
   1340 struct NVERIFY4args {
   1341 	fattr4 obj_attributes;
   1342 };
   1343 typedef struct NVERIFY4args NVERIFY4args;
   1344 
   1345 struct NVERIFY4res {
   1346 	nfsstat4 status;
   1347 };
   1348 typedef struct NVERIFY4res NVERIFY4res;
   1349 
   1350 enum createmode4 {
   1351 	UNCHECKED4 = 0,
   1352 	GUARDED4 = 1,
   1353 	EXCLUSIVE4 = 2,
   1354 	EXCLUSIVE4_1 = 3
   1355 };
   1356 typedef enum createmode4 createmode4;
   1357 
   1358 struct creatverfattr {
   1359 	verifier4 cva_verf;
   1360 	fattr4 cva_attrs;
   1361 };
   1362 typedef struct creatverfattr creatverfattr;
   1363 
   1364 struct createhow4 {
   1365 	createmode4 mode;
   1366 	union {
   1367 		fattr4 createattrs;
   1368 		verifier4 createverf;
   1369 		creatverfattr ch_createboth;
   1370 	} createhow4_u;
   1371 };
   1372 typedef struct createhow4 createhow4;
   1373 
   1374 enum opentype4 {
   1375 	OPEN4_NOCREATE = 0,
   1376 	OPEN4_CREATE = 1
   1377 };
   1378 typedef enum opentype4 opentype4;
   1379 
   1380 struct openflag4 {
   1381 	opentype4 opentype;
   1382 	union {
   1383 		createhow4 how;
   1384 	} openflag4_u;
   1385 };
   1386 typedef struct openflag4 openflag4;
   1387 
   1388 enum limit_by4 {
   1389 	NFS_LIMIT_SIZE = 1,
   1390 	NFS_LIMIT_BLOCKS = 2
   1391 };
   1392 typedef enum limit_by4 limit_by4;
   1393 
   1394 struct nfs_modified_limit4 {
   1395 	uint32_t num_blocks;
   1396 	uint32_t bytes_per_block;
   1397 };
   1398 typedef struct nfs_modified_limit4 nfs_modified_limit4;
   1399 
   1400 struct nfs_space_limit4 {
   1401 	limit_by4 limitby;
   1402 	union {
   1403 		uint64_t filesize;
   1404 		nfs_modified_limit4 mod_blocks;
   1405 	} nfs_space_limit4_u;
   1406 };
   1407 typedef struct nfs_space_limit4 nfs_space_limit4;
   1408 #define	OPEN4_SHARE_ACCESS_READ 0x00000001
   1409 #define	OPEN4_SHARE_ACCESS_WRITE 0x00000002
   1410 #define	OPEN4_SHARE_ACCESS_BOTH 0x00000003
   1411 #define	OPEN4_SHARE_DENY_NONE 0x00000000
   1412 #define	OPEN4_SHARE_DENY_READ 0x00000001
   1413 #define	OPEN4_SHARE_DENY_WRITE 0x00000002
   1414 #define	OPEN4_SHARE_DENY_BOTH 0x00000003
   1415 #define	OPEN4_SHARE_ACCESS_WANT_DELEG_MASK 0xFF00
   1416 #define	OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE 0x0000
   1417 #define	OPEN4_SHARE_ACCESS_WANT_READ_DELEG 0x0100
   1418 #define	OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG 0x0200
   1419 #define	OPEN4_SHARE_ACCESS_WANT_ANY_DELEG 0x0300
   1420 #define	OPEN4_SHARE_ACCESS_WANT_NO_DELEG 0x0400
   1421 #define	OPEN4_SHARE_ACCESS_WANT_CANCEL 0x0500
   1422 #define	OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000
   1423 #define	OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED 0x20000
   1424 
   1425 enum open_delegation_type4 {
   1426 	OPEN_DELEGATE_NONE = 0,
   1427 	OPEN_DELEGATE_READ = 1,
   1428 	OPEN_DELEGATE_WRITE = 2,
   1429 	OPEN_DELEGATE_NONE_EXT = 3
   1430 };
   1431 typedef enum open_delegation_type4 open_delegation_type4;
   1432 
   1433 enum open_claim_type4 {
   1434 	CLAIM_NULL = 0,
   1435 	CLAIM_PREVIOUS = 1,
   1436 	CLAIM_DELEGATE_CUR = 2,
   1437 	CLAIM_DELEGATE_PREV = 3,
   1438 	CLAIM_FH = 4,
   1439 	CLAIM_DELEG_CUR_FH = 5,
   1440 	CLAIM_DELEG_PREV_FH = 6
   1441 };
   1442 typedef enum open_claim_type4 open_claim_type4;
   1443 
   1444 struct open_claim_delegate_cur4 {
   1445 	stateid4 delegate_stateid;
   1446 	component4 file;
   1447 };
   1448 typedef struct open_claim_delegate_cur4 open_claim_delegate_cur4;
   1449 
   1450 struct open_claim4 {
   1451 	open_claim_type4 claim;
   1452 	union {
   1453 		component4 file;
   1454 		open_delegation_type4 delegate_type;
   1455 		open_claim_delegate_cur4 delegate_cur_info;
   1456 		component4 file_delegate_prev;
   1457 		stateid4 oc_delegate_stateid;
   1458 	} open_claim4_u;
   1459 };
   1460 typedef struct open_claim4 open_claim4;
   1461 
   1462 struct OPEN4args {
   1463 	seqid4 seqid;
   1464 	uint32_t share_access;
   1465 	uint32_t share_deny;
   1466 	open_owner4 owner;
   1467 	openflag4 openhow;
   1468 	open_claim4 claim;
   1469 };
   1470 typedef struct OPEN4args OPEN4args;
   1471 
   1472 struct open_read_delegation4 {
   1473 	stateid4 stateid;
   1474 	bool_t recall;
   1475 	nfsace4 permissions;
   1476 };
   1477 typedef struct open_read_delegation4 open_read_delegation4;
   1478 
   1479 struct open_write_delegation4 {
   1480 	stateid4 stateid;
   1481 	bool_t recall;
   1482 	nfs_space_limit4 space_limit;
   1483 	nfsace4 permissions;
   1484 };
   1485 typedef struct open_write_delegation4 open_write_delegation4;
   1486 
   1487 enum why_no_delegation4 {
   1488 	WND4_NOT_WANTED = 0,
   1489 	WND4_CONTENTION = 1,
   1490 	WND4_RESOURCE = 2,
   1491 	WND4_NOT_SUPP_FTYPE = 3,
   1492 	WND4_WRITE_DELEG_NOT_SUPP_FTYPE = 4,
   1493 	WND4_NOT_SUPP_UPGRADE = 5,
   1494 	WND4_NOT_SUPP_DOWNGRADE = 6,
   1495 	WND4_CANCELED = 7,
   1496 	WND4_IS_DIR = 8
   1497 };
   1498 typedef enum why_no_delegation4 why_no_delegation4;
   1499 
   1500 struct open_none_delegation4 {
   1501 	why_no_delegation4 ond_why;
   1502 	union {
   1503 		bool_t ond_server_will_push_deleg;
   1504 		bool_t ond_server_will_signal_avail;
   1505 	} open_none_delegation4_u;
   1506 };
   1507 typedef struct open_none_delegation4 open_none_delegation4;
   1508 
   1509 struct open_delegation4 {
   1510 	open_delegation_type4 delegation_type;
   1511 	union {
   1512 		open_read_delegation4 read;
   1513 		open_write_delegation4 write;
   1514 		open_none_delegation4 od_whynone;
   1515 	} open_delegation4_u;
   1516 };
   1517 typedef struct open_delegation4 open_delegation4;
   1518 #define	OPEN4_RESULT_CONFIRM 0x00000002
   1519 #define	OPEN4_RESULT_LOCKTYPE_POSIX 0x00000004
   1520 #define	OPEN4_RESULT_PRESERVE_UNLINKED 0x00000008
   1521 #define	OPEN4_RESULT_MAY_NOTIFY_LOCK 0x00000020
   1522 
   1523 struct OPEN4resok {
   1524 	stateid4 stateid;
   1525 	change_info4 cinfo;
   1526 	uint32_t rflags;
   1527 	bitmap4 attrset;
   1528 	open_delegation4 delegation;
   1529 };
   1530 typedef struct OPEN4resok OPEN4resok;
   1531 
   1532 struct OPEN4res {
   1533 	nfsstat4 status;
   1534 	union {
   1535 		OPEN4resok resok4;
   1536 	} OPEN4res_u;
   1537 };
   1538 typedef struct OPEN4res OPEN4res;
   1539 
   1540 struct OPENATTR4args {
   1541 	bool_t createdir;
   1542 };
   1543 typedef struct OPENATTR4args OPENATTR4args;
   1544 
   1545 struct OPENATTR4res {
   1546 	nfsstat4 status;
   1547 };
   1548 typedef struct OPENATTR4res OPENATTR4res;
   1549 
   1550 struct OPEN_CONFIRM4args {
   1551 	stateid4 open_stateid;
   1552 	seqid4 seqid;
   1553 };
   1554 typedef struct OPEN_CONFIRM4args OPEN_CONFIRM4args;
   1555 
   1556 struct OPEN_CONFIRM4resok {
   1557 	stateid4 open_stateid;
   1558 };
   1559 typedef struct OPEN_CONFIRM4resok OPEN_CONFIRM4resok;
   1560 
   1561 struct OPEN_CONFIRM4res {
   1562 	nfsstat4 status;
   1563 	union {
   1564 		OPEN_CONFIRM4resok resok4;
   1565 	} OPEN_CONFIRM4res_u;
   1566 };
   1567 typedef struct OPEN_CONFIRM4res OPEN_CONFIRM4res;
   1568 
   1569 struct OPEN_DOWNGRADE4args {
   1570 	stateid4 open_stateid;
   1571 	seqid4 seqid;
   1572 	uint32_t share_access;
   1573 	uint32_t share_deny;
   1574 };
   1575 typedef struct OPEN_DOWNGRADE4args OPEN_DOWNGRADE4args;
   1576 
   1577 struct OPEN_DOWNGRADE4resok {
   1578 	stateid4 open_stateid;
   1579 };
   1580 typedef struct OPEN_DOWNGRADE4resok OPEN_DOWNGRADE4resok;
   1581 
   1582 struct OPEN_DOWNGRADE4res {
   1583 	nfsstat4 status;
   1584 	union {
   1585 		OPEN_DOWNGRADE4resok resok4;
   1586 	} OPEN_DOWNGRADE4res_u;
   1587 };
   1588 typedef struct OPEN_DOWNGRADE4res OPEN_DOWNGRADE4res;
   1589 
   1590 struct PUTFH4args {
   1591 	nfs_fh4 object;
   1592 };
   1593 typedef struct PUTFH4args PUTFH4args;
   1594 
   1595 struct PUTFH4res {
   1596 	nfsstat4 status;
   1597 };
   1598 typedef struct PUTFH4res PUTFH4res;
   1599 
   1600 struct PUTPUBFH4res {
   1601 	nfsstat4 status;
   1602 };
   1603 typedef struct PUTPUBFH4res PUTPUBFH4res;
   1604 
   1605 struct PUTROOTFH4res {
   1606 	nfsstat4 status;
   1607 };
   1608 typedef struct PUTROOTFH4res PUTROOTFH4res;
   1609 
   1610 struct READ4args {
   1611 	stateid4 stateid;
   1612 	offset4 offset;
   1613 	count4 count;
   1614 };
   1615 typedef struct READ4args READ4args;
   1616 
   1617 struct READ4resok {
   1618 	bool_t eof;
   1619 	struct {
   1620 		uint_t data_len;
   1621 		char *data_val;
   1622 	} data;
   1623 };
   1624 typedef struct READ4resok READ4resok;
   1625 
   1626 struct READ4res {
   1627 	nfsstat4 status;
   1628 	union {
   1629 		READ4resok resok4;
   1630 	} READ4res_u;
   1631 };
   1632 typedef struct READ4res READ4res;
   1633 
   1634 struct READDIR4args {
   1635 	nfs_cookie4 cookie;
   1636 	verifier4 cookieverf;
   1637 	count4 dircount;
   1638 	count4 maxcount;
   1639 	bitmap4 attr_request;
   1640 };
   1641 typedef struct READDIR4args READDIR4args;
   1642 
   1643 struct entry4 {
   1644 	nfs_cookie4 cookie;
   1645 	component4 name;
   1646 	fattr4 attrs;
   1647 	struct entry4 *nextentry;
   1648 };
   1649 typedef struct entry4 entry4;
   1650 
   1651 struct dirlist4 {
   1652 	entry4 *entries;
   1653 	bool_t eof;
   1654 };
   1655 typedef struct dirlist4 dirlist4;
   1656 
   1657 struct READDIR4resok {
   1658 	verifier4 cookieverf;
   1659 	dirlist4 reply;
   1660 };
   1661 typedef struct READDIR4resok READDIR4resok;
   1662 
   1663 struct READDIR4res {
   1664 	nfsstat4 status;
   1665 	union {
   1666 		READDIR4resok resok4;
   1667 	} READDIR4res_u;
   1668 };
   1669 typedef struct READDIR4res READDIR4res;
   1670 
   1671 struct READLINK4resok {
   1672 	linktext4 link;
   1673 };
   1674 typedef struct READLINK4resok READLINK4resok;
   1675 
   1676 struct READLINK4res {
   1677 	nfsstat4 status;
   1678 	union {
   1679 		READLINK4resok resok4;
   1680 	} READLINK4res_u;
   1681 };
   1682 typedef struct READLINK4res READLINK4res;
   1683 
   1684 struct REMOVE4args {
   1685 	component4 target;
   1686 };
   1687 typedef struct REMOVE4args REMOVE4args;
   1688 
   1689 struct REMOVE4resok {
   1690 	change_info4 cinfo;
   1691 };
   1692 typedef struct REMOVE4resok REMOVE4resok;
   1693 
   1694 struct REMOVE4res {
   1695 	nfsstat4 status;
   1696 	union {
   1697 		REMOVE4resok resok4;
   1698 	} REMOVE4res_u;
   1699 };
   1700 typedef struct REMOVE4res REMOVE4res;
   1701 
   1702 struct RENAME4args {
   1703 	component4 oldname;
   1704 	component4 newname;
   1705 };
   1706 typedef struct RENAME4args RENAME4args;
   1707 
   1708 struct RENAME4resok {
   1709 	change_info4 source_cinfo;
   1710 	change_info4 target_cinfo;
   1711 };
   1712 typedef struct RENAME4resok RENAME4resok;
   1713 
   1714 struct RENAME4res {
   1715 	nfsstat4 status;
   1716 	union {
   1717 		RENAME4resok resok4;
   1718 	} RENAME4res_u;
   1719 };
   1720 typedef struct RENAME4res RENAME4res;
   1721 
   1722 struct RENEW4args {
   1723 	clientid4 clientid;
   1724 };
   1725 typedef struct RENEW4args RENEW4args;
   1726 
   1727 struct RENEW4res {
   1728 	nfsstat4 status;
   1729 };
   1730 typedef struct RENEW4res RENEW4res;
   1731 
   1732 struct RESTOREFH4res {
   1733 	nfsstat4 status;
   1734 };
   1735 typedef struct RESTOREFH4res RESTOREFH4res;
   1736 
   1737 struct SAVEFH4res {
   1738 	nfsstat4 status;
   1739 };
   1740 typedef struct SAVEFH4res SAVEFH4res;
   1741 
   1742 struct SECINFO4args {
   1743 	component4 name;
   1744 };
   1745 typedef struct SECINFO4args SECINFO4args;
   1746 
   1747 enum rpc_gss_svc_t {
   1748 	RPC_GSS_SVC_NONE = 1,
   1749 	RPC_GSS_SVC_INTEGRITY = 2,
   1750 	RPC_GSS_SVC_PRIVACY = 3
   1751 };
   1752 typedef enum rpc_gss_svc_t rpc_gss_svc_t;
   1753 
   1754 struct rpcsec_gss_info {
   1755 	sec_oid4 oid;
   1756 	qop4 qop;
   1757 	rpc_gss_svc_t service;
   1758 };
   1759 typedef struct rpcsec_gss_info rpcsec_gss_info;
   1760 
   1761 struct secinfo4 {
   1762 	uint32_t flavor;
   1763 	union {
   1764 		rpcsec_gss_info flavor_info;
   1765 	} secinfo4_u;
   1766 };
   1767 typedef struct secinfo4 secinfo4;
   1768 
   1769 typedef struct {
   1770 	uint_t SECINFO4resok_len;
   1771 	secinfo4 *SECINFO4resok_val;
   1772 } SECINFO4resok;
   1773 
   1774 struct SECINFO4res {
   1775 	nfsstat4 status;
   1776 	union {
   1777 		SECINFO4resok resok4;
   1778 	} SECINFO4res_u;
   1779 };
   1780 typedef struct SECINFO4res SECINFO4res;
   1781 
   1782 struct SETATTR4args {
   1783 	stateid4 stateid;
   1784 	fattr4 obj_attributes;
   1785 };
   1786 typedef struct SETATTR4args SETATTR4args;
   1787 
   1788 struct SETATTR4res {
   1789 	nfsstat4 status;
   1790 	bitmap4 attrsset;
   1791 };
   1792 typedef struct SETATTR4res SETATTR4res;
   1793 
   1794 struct SETCLIENTID4args {
   1795 	nfs_client_id4 client;
   1796 	cb_client4 callback;
   1797 	uint32_t callback_ident;
   1798 };
   1799 typedef struct SETCLIENTID4args SETCLIENTID4args;
   1800 
   1801 struct SETCLIENTID4resok {
   1802 	clientid4 clientid;
   1803 	verifier4 setclientid_confirm;
   1804 };
   1805 typedef struct SETCLIENTID4resok SETCLIENTID4resok;
   1806 
   1807 struct SETCLIENTID4res {
   1808 	nfsstat4 status;
   1809 	union {
   1810 		SETCLIENTID4resok resok4;
   1811 		clientaddr4 client_using;
   1812 	} SETCLIENTID4res_u;
   1813 };
   1814 typedef struct SETCLIENTID4res SETCLIENTID4res;
   1815 
   1816 struct SETCLIENTID_CONFIRM4args {
   1817 	clientid4 clientid;
   1818 	verifier4 setclientid_confirm;
   1819 };
   1820 typedef struct SETCLIENTID_CONFIRM4args SETCLIENTID_CONFIRM4args;
   1821 
   1822 struct SETCLIENTID_CONFIRM4res {
   1823 	nfsstat4 status;
   1824 };
   1825 typedef struct SETCLIENTID_CONFIRM4res SETCLIENTID_CONFIRM4res;
   1826 
   1827 struct VERIFY4args {
   1828 	fattr4 obj_attributes;
   1829 };
   1830 typedef struct VERIFY4args VERIFY4args;
   1831 
   1832 struct VERIFY4res {
   1833 	nfsstat4 status;
   1834 };
   1835 typedef struct VERIFY4res VERIFY4res;
   1836 
   1837 enum stable_how4 {
   1838 	UNSTABLE4 = 0,
   1839 	DATA_SYNC4 = 1,
   1840 	FILE_SYNC4 = 2
   1841 };
   1842 typedef enum stable_how4 stable_how4;
   1843 
   1844 struct WRITE4args {
   1845 	stateid4 stateid;
   1846 	offset4 offset;
   1847 	stable_how4 stable;
   1848 	struct {
   1849 		uint_t data_len;
   1850 		char *data_val;
   1851 	} data;
   1852 };
   1853 typedef struct WRITE4args WRITE4args;
   1854 
   1855 struct WRITE4resok {
   1856 	count4 count;
   1857 	stable_how4 committed;
   1858 	verifier4 writeverf;
   1859 };
   1860 typedef struct WRITE4resok WRITE4resok;
   1861 
   1862 struct WRITE4res {
   1863 	nfsstat4 status;
   1864 	union {
   1865 		WRITE4resok resok4;
   1866 	} WRITE4res_u;
   1867 };
   1868 typedef struct WRITE4res WRITE4res;
   1869 
   1870 struct RELEASE_LOCKOWNER4args {
   1871 	lock_owner4 lock_owner;
   1872 };
   1873 typedef struct RELEASE_LOCKOWNER4args RELEASE_LOCKOWNER4args;
   1874 
   1875 struct RELEASE_LOCKOWNER4res {
   1876 	nfsstat4 status;
   1877 };
   1878 typedef struct RELEASE_LOCKOWNER4res RELEASE_LOCKOWNER4res;
   1879 
   1880 struct ILLEGAL4res {
   1881 	nfsstat4 status;
   1882 };
   1883 typedef struct ILLEGAL4res ILLEGAL4res;
   1884 
   1885 typedef struct {
   1886 	uint_t gsshandle4_t_len;
   1887 	char *gsshandle4_t_val;
   1888 } gsshandle4_t;
   1889 
   1890 struct gss_cb_handles4 {
   1891 	rpc_gss_svc_t gcbp_service;
   1892 	gsshandle4_t gcbp_handle_from_server;
   1893 	gsshandle4_t gcbp_handle_from_client;
   1894 };
   1895 typedef struct gss_cb_handles4 gss_cb_handles4;
   1896 
   1897 struct callback_sec_parms4 {
   1898 	uint32_t cb_secflavor;
   1899 	union {
   1900 		authsys_parms cbsp_sys_cred;
   1901 		gss_cb_handles4 cbsp_gss_handles;
   1902 	} callback_sec_parms4_u;
   1903 };
   1904 typedef struct callback_sec_parms4 callback_sec_parms4;
   1905 
   1906 struct BACKCHANNEL_CTL4args {
   1907 	uint32_t bca_cb_program;
   1908 	struct {
   1909 		uint_t bca_sec_parms_len;
   1910 		callback_sec_parms4 *bca_sec_parms_val;
   1911 	} bca_sec_parms;
   1912 };
   1913 typedef struct BACKCHANNEL_CTL4args BACKCHANNEL_CTL4args;
   1914 
   1915 struct BACKCHANNEL_CTL4res {
   1916 	nfsstat4 bcr_status;
   1917 };
   1918 typedef struct BACKCHANNEL_CTL4res BACKCHANNEL_CTL4res;
   1919 
   1920 enum channel_dir_from_client4 {
   1921 	CDFC4_FORE = 0x1,
   1922 	CDFC4_BACK = 0x2,
   1923 	CDFC4_FORE_OR_BOTH = 0x3,
   1924 	CDFC4_BACK_OR_BOTH = 0x7
   1925 };
   1926 typedef enum channel_dir_from_client4 channel_dir_from_client4;
   1927 
   1928 struct BIND_CONN_TO_SESSION4args {
   1929 	sessionid4 bctsa_sessid;
   1930 	channel_dir_from_client4 bctsa_dir;
   1931 	bool_t bctsa_use_conn_in_rdma_mode;
   1932 };
   1933 typedef struct BIND_CONN_TO_SESSION4args BIND_CONN_TO_SESSION4args;
   1934 
   1935 enum channel_dir_from_server4 {
   1936 	CDFS4_FORE = 0x1,
   1937 	CDFS4_BACK = 0x2,
   1938 	CDFS4_BOTH = 0x3
   1939 };
   1940 typedef enum channel_dir_from_server4 channel_dir_from_server4;
   1941 
   1942 struct BIND_CONN_TO_SESSION4resok {
   1943 	sessionid4 bctsr_sessid;
   1944 	channel_dir_from_server4 bctsr_dir;
   1945 	bool_t bctsr_use_conn_in_rdma_mode;
   1946 };
   1947 typedef struct BIND_CONN_TO_SESSION4resok BIND_CONN_TO_SESSION4resok;
   1948 
   1949 struct BIND_CONN_TO_SESSION4res {
   1950 	nfsstat4 bctsr_status;
   1951 	union {
   1952 		BIND_CONN_TO_SESSION4resok bctsr_resok4;
   1953 	} BIND_CONN_TO_SESSION4res_u;
   1954 };
   1955 typedef struct BIND_CONN_TO_SESSION4res BIND_CONN_TO_SESSION4res;
   1956 #define	EXCHGID4_FLAG_SUPP_MOVED_REFER 0x00000001
   1957 #define	EXCHGID4_FLAG_SUPP_MOVED_MIGR 0x00000002
   1958 #define	EXCHGID4_FLAG_BIND_PRINC_STATEID 0x00000100
   1959 #define	EXCHGID4_FLAG_USE_NON_PNFS 0x00010000
   1960 #define	EXCHGID4_FLAG_USE_PNFS_MDS 0x00020000
   1961 #define	EXCHGID4_FLAG_USE_PNFS_DS 0x00040000
   1962 #define	EXCHGID4_FLAG_MASK_PNFS 0x00070000
   1963 #define	EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000
   1964 #define	EXCHGID4_FLAG_CONFIRMED_R 0x80000000
   1965 
   1966 struct state_protect_ops4 {
   1967 	bitmap4 spo_must_enforce;
   1968 	bitmap4 spo_must_allow;
   1969 };
   1970 typedef struct state_protect_ops4 state_protect_ops4;
   1971 
   1972 struct ssv_sp_parms4 {
   1973 	state_protect_ops4 ssp_ops;
   1974 	struct {
   1975 		uint_t ssp_hash_algs_len;
   1976 		sec_oid4 *ssp_hash_algs_val;
   1977 	} ssp_hash_algs;
   1978 	struct {
   1979 		uint_t ssp_encr_algs_len;
   1980 		sec_oid4 *ssp_encr_algs_val;
   1981 	} ssp_encr_algs;
   1982 	uint32_t ssp_window;
   1983 	uint32_t ssp_num_gss_handles;
   1984 };
   1985 typedef struct ssv_sp_parms4 ssv_sp_parms4;
   1986 
   1987 enum state_protect_how4 {
   1988 	SP4_NONE = 0,
   1989 	SP4_MACH_CRED = 1,
   1990 	SP4_SSV = 2
   1991 };
   1992 typedef enum state_protect_how4 state_protect_how4;
   1993 
   1994 struct state_protect4_a {
   1995 	state_protect_how4 spa_how;
   1996 	union {
   1997 		state_protect_ops4 spa_mach_ops;
   1998 		ssv_sp_parms4 spa_ssv_parms;
   1999 	} state_protect4_a_u;
   2000 };
   2001 typedef struct state_protect4_a state_protect4_a;
   2002 
   2003 struct EXCHANGE_ID4args {
   2004 	client_owner4 eia_clientowner;
   2005 	uint32_t eia_flags;
   2006 	state_protect4_a eia_state_protect;
   2007 	struct {
   2008 		uint_t eia_client_impl_id_len;
   2009 		nfs_impl_id4 *eia_client_impl_id_val;
   2010 	} eia_client_impl_id;
   2011 };
   2012 typedef struct EXCHANGE_ID4args EXCHANGE_ID4args;
   2013 
   2014 struct ssv_prot_info4 {
   2015 	state_protect_ops4 spi_ops;
   2016 	uint32_t spi_hash_alg;
   2017 	uint32_t spi_encr_alg;
   2018 	uint32_t spi_ssv_len;
   2019 	uint32_t spi_window;
   2020 	struct {
   2021 		uint_t spi_handles_len;
   2022 		gsshandle4_t *spi_handles_val;
   2023 	} spi_handles;
   2024 };
   2025 typedef struct ssv_prot_info4 ssv_prot_info4;
   2026 
   2027 struct state_protect4_r {
   2028 	state_protect_how4 spr_how;
   2029 	union {
   2030 		state_protect_ops4 spr_mach_ops;
   2031 		ssv_prot_info4 spr_ssv_info;
   2032 	} state_protect4_r_u;
   2033 };
   2034 typedef struct state_protect4_r state_protect4_r;
   2035 
   2036 struct EXCHANGE_ID4resok {
   2037 	clientid4 eir_clientid;
   2038 	sequenceid4 eir_sequenceid;
   2039 	uint32_t eir_flags;
   2040 	state_protect4_r eir_state_protect;
   2041 	server_owner4 eir_server_owner;
   2042 	struct {
   2043 		uint_t eir_server_scope_len;
   2044 		char *eir_server_scope_val;
   2045 	} eir_server_scope;
   2046 	struct {
   2047 		uint_t eir_server_impl_id_len;
   2048 		nfs_impl_id4 *eir_server_impl_id_val;
   2049 	} eir_server_impl_id;
   2050 };
   2051 typedef struct EXCHANGE_ID4resok EXCHANGE_ID4resok;
   2052 
   2053 struct EXCHANGE_ID4res {
   2054 	nfsstat4 eir_status;
   2055 	union {
   2056 		EXCHANGE_ID4resok eir_resok4;
   2057 	} EXCHANGE_ID4res_u;
   2058 };
   2059 typedef struct EXCHANGE_ID4res EXCHANGE_ID4res;
   2060 
   2061 struct channel_attrs4 {
   2062 	count4 ca_headerpadsize;
   2063 	count4 ca_maxrequestsize;
   2064 	count4 ca_maxresponsesize;
   2065 	count4 ca_maxresponsesize_cached;
   2066 	count4 ca_maxoperations;
   2067 	count4 ca_maxrequests;
   2068 	struct {
   2069 		uint_t ca_rdma_ird_len;
   2070 		uint32_t *ca_rdma_ird_val;
   2071 	} ca_rdma_ird;
   2072 };
   2073 typedef struct channel_attrs4 channel_attrs4;
   2074 #define	CREATE_SESSION4_FLAG_PERSIST 0x00000001
   2075 #define	CREATE_SESSION4_FLAG_CONN_BACK_CHAN 0x00000002
   2076 #define	CREATE_SESSION4_FLAG_CONN_RDMA 0x00000004
   2077 
   2078 struct CREATE_SESSION4args {
   2079 	clientid4 csa_clientid;
   2080 	sequenceid4 csa_sequence;
   2081 	uint32_t csa_flags;
   2082 	channel_attrs4 csa_fore_chan_attrs;
   2083 	channel_attrs4 csa_back_chan_attrs;
   2084 	uint32_t csa_cb_program;
   2085 	struct {
   2086 		uint_t csa_sec_parms_len;
   2087 		callback_sec_parms4 *csa_sec_parms_val;
   2088 	} csa_sec_parms;
   2089 };
   2090 typedef struct CREATE_SESSION4args CREATE_SESSION4args;
   2091 
   2092 struct CREATE_SESSION4resok {
   2093 	sessionid4 csr_sessionid;
   2094 	sequenceid4 csr_sequence;
   2095 	uint32_t csr_flags;
   2096 	channel_attrs4 csr_fore_chan_attrs;
   2097 	channel_attrs4 csr_back_chan_attrs;
   2098 };
   2099 typedef struct CREATE_SESSION4resok CREATE_SESSION4resok;
   2100 
   2101 struct CREATE_SESSION4res {
   2102 	nfsstat4 csr_status;
   2103 	union {
   2104 		CREATE_SESSION4resok csr_resok4;
   2105 	} CREATE_SESSION4res_u;
   2106 };
   2107 typedef struct CREATE_SESSION4res CREATE_SESSION4res;
   2108 
   2109 struct DESTROY_SESSION4args {
   2110 	sessionid4 dsa_sessionid;
   2111 };
   2112 typedef struct DESTROY_SESSION4args DESTROY_SESSION4args;
   2113 
   2114 struct DESTROY_SESSION4res {
   2115 	nfsstat4 dsr_status;
   2116 };
   2117 typedef struct DESTROY_SESSION4res DESTROY_SESSION4res;
   2118 
   2119 struct FREE_STATEID4args {
   2120 	stateid4 fsa_stateid;
   2121 };
   2122 typedef struct FREE_STATEID4args FREE_STATEID4args;
   2123 
   2124 struct FREE_STATEID4res {
   2125 	nfsstat4 fsr_status;
   2126 };
   2127 typedef struct FREE_STATEID4res FREE_STATEID4res;
   2128 
   2129 typedef nfstime4 attr_notice4;
   2130 
   2131 struct GET_DIR_DELEGATION4args {
   2132 	bool_t gdda_signal_deleg_avail;
   2133 	bitmap4 gdda_notification_types;
   2134 	attr_notice4 gdda_child_attr_delay;
   2135 	attr_notice4 gdda_dir_attr_delay;
   2136 	bitmap4 gdda_child_attributes;
   2137 	bitmap4 gdda_dir_attributes;
   2138 };
   2139 typedef struct GET_DIR_DELEGATION4args GET_DIR_DELEGATION4args;
   2140 
   2141 struct GET_DIR_DELEGATION4resok {
   2142 	verifier4 gddr_cookieverf;
   2143 	stateid4 gddr_stateid;
   2144 	bitmap4 gddr_notification;
   2145 	bitmap4 gddr_child_attributes;
   2146 	bitmap4 gddr_dir_attributes;
   2147 };
   2148 typedef struct GET_DIR_DELEGATION4resok GET_DIR_DELEGATION4resok;
   2149 
   2150 enum gddrnf4_status {
   2151 	GDD4_OK = 0,
   2152 	GDD4_UNAVAIL = 1
   2153 };
   2154 typedef enum gddrnf4_status gddrnf4_status;
   2155 
   2156 struct GET_DIR_DELEGATION4res_non_fatal {
   2157 	gddrnf4_status gddrnf_status;
   2158 	union {
   2159 		GET_DIR_DELEGATION4resok gddrnf_resok4;
   2160 		bool_t gddrnf_will_signal_deleg_avail;
   2161 	} GET_DIR_DELEGATION4res_non_fatal_u;
   2162 };
   2163 typedef struct GET_DIR_DELEGATION4res_non_fatal
   2164 		GET_DIR_DELEGATION4res_non_fatal;
   2165 
   2166 struct GET_DIR_DELEGATION4res {
   2167 	nfsstat4 gddr_status;
   2168 	union {
   2169 		GET_DIR_DELEGATION4res_non_fatal gddr_res_non_fatal4;
   2170 	} GET_DIR_DELEGATION4res_u;
   2171 };
   2172 typedef struct GET_DIR_DELEGATION4res GET_DIR_DELEGATION4res;
   2173 
   2174 struct GETDEVICEINFO4args {
   2175 	deviceid4 gdia_device_id;
   2176 	layouttype4 gdia_layout_type;
   2177 	count4 gdia_maxcount;
   2178 	bitmap4 gdia_notify_types;
   2179 };
   2180 typedef struct GETDEVICEINFO4args GETDEVICEINFO4args;
   2181 
   2182 struct GETDEVICEINFO4resok {
   2183 	device_addr4 gdir_device_addr;
   2184 	bitmap4 gdir_notification;
   2185 };
   2186 typedef struct GETDEVICEINFO4resok GETDEVICEINFO4resok;
   2187 
   2188 struct GETDEVICEINFO4res {
   2189 	nfsstat4 gdir_status;
   2190 	union {
   2191 		GETDEVICEINFO4resok gdir_resok4;
   2192 		count4 gdir_mincount;
   2193 	} GETDEVICEINFO4res_u;
   2194 };
   2195 typedef struct GETDEVICEINFO4res GETDEVICEINFO4res;
   2196 
   2197 struct GETDEVICELIST4args {
   2198 	layouttype4 gdla_layout_type;
   2199 	count4 gdla_maxdevices;
   2200 	nfs_cookie4 gdla_cookie;
   2201 	verifier4 gdla_cookieverf;
   2202 };
   2203 typedef struct GETDEVICELIST4args GETDEVICELIST4args;
   2204 
   2205 struct GETDEVICELIST4resok {
   2206 	nfs_cookie4 gdlr_cookie;
   2207 	verifier4 gdlr_cookieverf;
   2208 	struct {
   2209 		uint_t gdlr_deviceid_list_len;
   2210 		deviceid4 *gdlr_deviceid_list_val;
   2211 	} gdlr_deviceid_list;
   2212 	bool_t gdlr_eof;
   2213 };
   2214 typedef struct GETDEVICELIST4resok GETDEVICELIST4resok;
   2215 
   2216 struct GETDEVICELIST4res {
   2217 	nfsstat4 gdlr_status;
   2218 	union {
   2219 		GETDEVICELIST4resok gdlr_resok4;
   2220 	} GETDEVICELIST4res_u;
   2221 };
   2222 typedef struct GETDEVICELIST4res GETDEVICELIST4res;
   2223 
   2224 struct newtime4 {
   2225 	bool_t nt_timechanged;
   2226 	union {
   2227 		nfstime4 nt_time;
   2228 	} newtime4_u;
   2229 };
   2230 typedef struct newtime4 newtime4;
   2231 
   2232 struct newoffset4 {
   2233 	bool_t no_newoffset;
   2234 	union {
   2235 		offset4 no_offset;
   2236 	} newoffset4_u;
   2237 };
   2238 typedef struct newoffset4 newoffset4;
   2239 
   2240 struct LAYOUTCOMMIT4args {
   2241 	offset4 loca_offset;
   2242 	length4 loca_length;
   2243 	bool_t loca_reclaim;
   2244 	stateid4 loca_stateid;
   2245 	newoffset4 loca_last_write_offset;
   2246 	newtime4 loca_time_modify;
   2247 	layoutupdate4 loca_layoutupdate;
   2248 };
   2249 typedef struct LAYOUTCOMMIT4args LAYOUTCOMMIT4args;
   2250 
   2251 struct newsize4 {
   2252 	bool_t ns_sizechanged;
   2253 	union {
   2254 		length4 ns_size;
   2255 	} newsize4_u;
   2256 };
   2257 typedef struct newsize4 newsize4;
   2258 
   2259 struct LAYOUTCOMMIT4resok {
   2260 	newsize4 locr_newsize;
   2261 };
   2262 typedef struct LAYOUTCOMMIT4resok LAYOUTCOMMIT4resok;
   2263 
   2264 struct LAYOUTCOMMIT4res {
   2265 	nfsstat4 locr_status;
   2266 	union {
   2267 		LAYOUTCOMMIT4resok locr_resok4;
   2268 	} LAYOUTCOMMIT4res_u;
   2269 };
   2270 typedef struct LAYOUTCOMMIT4res LAYOUTCOMMIT4res;
   2271 
   2272 struct LAYOUTGET4args {
   2273 	bool_t loga_signal_layout_avail;
   2274 	layouttype4 loga_layout_type;
   2275 	layoutiomode4 loga_iomode;
   2276 	offset4 loga_offset;
   2277 	length4 loga_length;
   2278 	length4 loga_minlength;
   2279 	stateid4 loga_stateid;
   2280 	count4 loga_maxcount;
   2281 };
   2282 typedef struct LAYOUTGET4args LAYOUTGET4args;
   2283 
   2284 struct LAYOUTGET4resok {
   2285 	bool_t logr_return_on_close;
   2286 	stateid4 logr_stateid;
   2287 	struct {
   2288 		uint_t logr_layout_len;
   2289 		layout4 *logr_layout_val;
   2290 	} logr_layout;
   2291 };
   2292 typedef struct LAYOUTGET4resok LAYOUTGET4resok;
   2293 
   2294 struct LAYOUTGET4res {
   2295 	nfsstat4 logr_status;
   2296 	union {
   2297 		LAYOUTGET4resok logr_resok4;
   2298 		bool_t logr_will_signal_layout_avail;
   2299 	} LAYOUTGET4res_u;
   2300 };
   2301 typedef struct LAYOUTGET4res LAYOUTGET4res;
   2302 
   2303 struct LAYOUTRETURN4args {
   2304 	bool_t lora_reclaim;
   2305 	layouttype4 lora_layout_type;
   2306 	layoutiomode4 lora_iomode;
   2307 	layoutreturn4 lora_layoutreturn;
   2308 };
   2309 typedef struct LAYOUTRETURN4args LAYOUTRETURN4args;
   2310 
   2311 struct layoutreturn_stateid {
   2312 	bool_t lrs_present;
   2313 	union {
   2314 		stateid4 lrs_stateid;
   2315 	} layoutreturn_stateid_u;
   2316 };
   2317 typedef struct layoutreturn_stateid layoutreturn_stateid;
   2318 
   2319 struct LAYOUTRETURN4res {
   2320 	nfsstat4 lorr_status;
   2321 	union {
   2322 		layoutreturn_stateid lorr_stateid;
   2323 	} LAYOUTRETURN4res_u;
   2324 };
   2325 typedef struct LAYOUTRETURN4res LAYOUTRETURN4res;
   2326 
   2327 enum secinfo_style4 {
   2328 	SECINFO_STYLE4_CURRENT_FH = 0,
   2329 	SECINFO_STYLE4_PARENT = 1
   2330 };
   2331 typedef enum secinfo_style4 secinfo_style4;
   2332 
   2333 typedef secinfo_style4 SECINFO_NO_NAME4args;
   2334 
   2335 typedef SECINFO4res SECINFO_NO_NAME4res;
   2336 
   2337 struct SEQUENCE4args {
   2338 	sessionid4 sa_sessionid;
   2339 	sequenceid4 sa_sequenceid;
   2340 	slotid4 sa_slotid;
   2341 	slotid4 sa_highest_slotid;
   2342 	bool_t sa_cachethis;
   2343 };
   2344 typedef struct SEQUENCE4args SEQUENCE4args;
   2345 #define	SEQ4_STATUS_CB_PATH_DOWN 0x00000001
   2346 #define	SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002
   2347 #define	SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED 0x00000004
   2348 #define	SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED 0x00000008
   2349 #define	SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED 0x00000010
   2350 #define	SEQ4_STATUS_ADMIN_STATE_REVOKED 0x00000020
   2351 #define	SEQ4_STATUS_RECALLABLE_STATE_REVOKED 0x00000040
   2352 #define	SEQ4_STATUS_LEASE_MOVED 0x00000080
   2353 #define	SEQ4_STATUS_RESTART_RECLAIM_NEEDED 0x00000100
   2354 #define	SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200
   2355 #define	SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400
   2356 #define	SEQ4_STATUS_DEVID_CHANGED 0x00000800
   2357 #define	SEQ4_STATUS_DEVID_DELETED 0x00001000
   2358 
   2359 struct SEQUENCE4resok {
   2360 	sessionid4 sr_sessionid;
   2361 	sequenceid4 sr_sequenceid;
   2362 	slotid4 sr_slotid;
   2363 	slotid4 sr_highest_slotid;
   2364 	slotid4 sr_target_highest_slotid;
   2365 	uint32_t sr_status_flags;
   2366 };
   2367 typedef struct SEQUENCE4resok SEQUENCE4resok;
   2368 
   2369 struct SEQUENCE4res {
   2370 	nfsstat4 sr_status;
   2371 	union {
   2372 		SEQUENCE4resok sr_resok4;
   2373 	} SEQUENCE4res_u;
   2374 };
   2375 typedef struct SEQUENCE4res SEQUENCE4res;
   2376 
   2377 struct ssa_digest_input4 {
   2378 	SEQUENCE4args sdi_seqargs;
   2379 };
   2380 typedef struct ssa_digest_input4 ssa_digest_input4;
   2381 
   2382 struct SET_SSV4args {
   2383 	struct {
   2384 		uint_t ssa_ssv_len;
   2385 		char *ssa_ssv_val;
   2386 	} ssa_ssv;
   2387 	struct {
   2388 		uint_t ssa_digest_len;
   2389 		char *ssa_digest_val;
   2390 	} ssa_digest;
   2391 };
   2392 typedef struct SET_SSV4args SET_SSV4args;
   2393 
   2394 struct ssr_digest_input4 {
   2395 	SEQUENCE4res sdi_seqres;
   2396 };
   2397 typedef struct ssr_digest_input4 ssr_digest_input4;
   2398 
   2399 struct SET_SSV4resok {
   2400 	struct {
   2401 		uint_t ssr_digest_len;
   2402 		char *ssr_digest_val;
   2403 	} ssr_digest;
   2404 };
   2405 typedef struct SET_SSV4resok SET_SSV4resok;
   2406 
   2407 struct SET_SSV4res {
   2408 	nfsstat4 ssr_status;
   2409 	union {
   2410 		SET_SSV4resok ssr_resok4;
   2411 	} SET_SSV4res_u;
   2412 };
   2413 typedef struct SET_SSV4res SET_SSV4res;
   2414 
   2415 struct TEST_STATEID4args {
   2416 	struct {
   2417 		uint_t ts_stateids_len;
   2418 		stateid4 *ts_stateids_val;
   2419 	} ts_stateids;
   2420 };
   2421 typedef struct TEST_STATEID4args TEST_STATEID4args;
   2422 
   2423 struct TEST_STATEID4resok {
   2424 	struct {
   2425 		uint_t tsr_status_codes_len;
   2426 		nfsstat4 *tsr_status_codes_val;
   2427 	} tsr_status_codes;
   2428 };
   2429 typedef struct TEST_STATEID4resok TEST_STATEID4resok;
   2430 
   2431 struct TEST_STATEID4res {
   2432 	nfsstat4 tsr_status;
   2433 	union {
   2434 		TEST_STATEID4resok tsr_resok4;
   2435 	} TEST_STATEID4res_u;
   2436 };
   2437 typedef struct TEST_STATEID4res TEST_STATEID4res;
   2438 
   2439 struct deleg_claim4 {
   2440 	open_claim_type4 dc_claim;
   2441 	union {
   2442 		open_delegation_type4 dc_delegate_type;
   2443 	} deleg_claim4_u;
   2444 };
   2445 typedef struct deleg_claim4 deleg_claim4;
   2446 
   2447 struct WANT_DELEGATION4args {
   2448 	uint32_t wda_want;
   2449 	deleg_claim4 wda_claim;
   2450 };
   2451 typedef struct WANT_DELEGATION4args WANT_DELEGATION4args;
   2452 
   2453 struct WANT_DELEGATION4res {
   2454 	nfsstat4 wdr_status;
   2455 	union {
   2456 		open_delegation4 wdr_resok4;
   2457 	} WANT_DELEGATION4res_u;
   2458 };
   2459 typedef struct WANT_DELEGATION4res WANT_DELEGATION4res;
   2460 
   2461 struct DESTROY_CLIENTID4args {
   2462 	clientid4 dca_clientid;
   2463 };
   2464 typedef struct DESTROY_CLIENTID4args DESTROY_CLIENTID4args;
   2465 
   2466 struct DESTROY_CLIENTID4res {
   2467 	nfsstat4 dcr_status;
   2468 };
   2469 typedef struct DESTROY_CLIENTID4res DESTROY_CLIENTID4res;
   2470 
   2471 struct RECLAIM_COMPLETE4args {
   2472 	bool_t rca_one_fs;
   2473 };
   2474 typedef struct RECLAIM_COMPLETE4args RECLAIM_COMPLETE4args;
   2475 
   2476 struct RECLAIM_COMPLETE4res {
   2477 	nfsstat4 rcr_status;
   2478 };
   2479 typedef struct RECLAIM_COMPLETE4res RECLAIM_COMPLETE4res;
   2480 
   2481 /* new operations for NFSv4.1 */
   2482 
   2483 
   2484 enum nfs_opnum4 {
   2485 	OP_ACCESS = 3,
   2486 	OP_CLOSE = 4,
   2487 	OP_COMMIT = 5,
   2488 	OP_CREATE = 6,
   2489 	OP_DELEGPURGE = 7,
   2490 	OP_DELEGRETURN = 8,
   2491 	OP_GETATTR = 9,
   2492 	OP_GETFH = 10,
   2493 	OP_LINK = 11,
   2494 	OP_LOCK = 12,
   2495 	OP_LOCKT = 13,
   2496 	OP_LOCKU = 14,
   2497 	OP_LOOKUP = 15,
   2498 	OP_LOOKUPP = 16,
   2499 	OP_NVERIFY = 17,
   2500 	OP_OPEN = 18,
   2501 	OP_OPENATTR = 19,
   2502 	OP_OPEN_CONFIRM = 20,
   2503 	OP_OPEN_DOWNGRADE = 21,
   2504 	OP_PUTFH = 22,
   2505 	OP_PUTPUBFH = 23,
   2506 	OP_PUTROOTFH = 24,
   2507 	OP_READ = 25,
   2508 	OP_READDIR = 26,
   2509 	OP_READLINK = 27,
   2510 	OP_REMOVE = 28,
   2511 	OP_RENAME = 29,
   2512 	OP_RENEW = 30,
   2513 	OP_RESTOREFH = 31,
   2514 	OP_SAVEFH = 32,
   2515 	OP_SECINFO = 33,
   2516 	OP_SETATTR = 34,
   2517 	OP_SETCLIENTID = 35,
   2518 	OP_SETCLIENTID_CONFIRM = 36,
   2519 	OP_VERIFY = 37,
   2520 	OP_WRITE = 38,
   2521 	OP_RELEASE_LOCKOWNER = 39,
   2522 	OP_BACKCHANNEL_CTL = 40,
   2523 	OP_BIND_CONN_TO_SESSION = 41,
   2524 	OP_EXCHANGE_ID = 42,
   2525 	OP_CREATE_SESSION = 43,
   2526 	OP_DESTROY_SESSION = 44,
   2527 	OP_FREE_STATEID = 45,
   2528 	OP_GET_DIR_DELEGATION = 46,
   2529 	OP_GETDEVICEINFO = 47,
   2530 	OP_GETDEVICELIST = 48,
   2531 	OP_LAYOUTCOMMIT = 49,
   2532 	OP_LAYOUTGET = 50,
   2533 	OP_LAYOUTRETURN = 51,
   2534 	OP_SECINFO_NO_NAME = 52,
   2535 	OP_SEQUENCE = 53,
   2536 	OP_SET_SSV = 54,
   2537 	OP_TEST_STATEID = 55,
   2538 	OP_WANT_DELEGATION = 56,
   2539 	OP_DESTROY_CLIENTID = 57,
   2540 	OP_RECLAIM_COMPLETE = 58,
   2541 	OP_ILLEGAL = 10044
   2542 };
   2543 typedef enum nfs_opnum4 nfs_opnum4;
   2544 
   2545 struct nfs_argop4 {
   2546 	nfs_opnum4 argop;
   2547 	union {
   2548 		ACCESS4args opaccess;
   2549 		CLOSE4args opclose;
   2550 		COMMIT4args opcommit;
   2551 		CREATE4args opcreate;
   2552 		DELEGPURGE4args opdelegpurge;
   2553 		DELEGRETURN4args opdelegreturn;
   2554 		GETATTR4args opgetattr;
   2555 		LINK4args oplink;
   2556 		LOCK4args oplock;
   2557 		LOCKT4args oplockt;
   2558 		LOCKU4args oplocku;
   2559 		LOOKUP4args oplookup;
   2560 		NVERIFY4args opnverify;
   2561 		OPEN4args opopen;
   2562 		OPENATTR4args opopenattr;
   2563 		OPEN_CONFIRM4args opopen_confirm;
   2564 		OPEN_DOWNGRADE4args opopen_downgrade;
   2565 		PUTFH4args opputfh;
   2566 		READ4args opread;
   2567 		READDIR4args opreaddir;
   2568 		REMOVE4args opremove;
   2569 		RENAME4args oprename;
   2570 		RENEW4args oprenew;
   2571 		SECINFO4args opsecinfo;
   2572 		SETATTR4args opsetattr;
   2573 		SETCLIENTID4args opsetclientid;
   2574 		SETCLIENTID_CONFIRM4args opsetclientid_confirm;
   2575 		VERIFY4args opverify;
   2576 		WRITE4args opwrite;
   2577 		RELEASE_LOCKOWNER4args oprelease_lockowner;
   2578 		BACKCHANNEL_CTL4args opbackchannel_ctl;
   2579 		BIND_CONN_TO_SESSION4args opbind_conn_to_session;
   2580 		EXCHANGE_ID4args opexchange_id;
   2581 		CREATE_SESSION4args opcreate_session;
   2582 		DESTROY_SESSION4args opdestroy_session;
   2583 		FREE_STATEID4args opfree_stateid;
   2584 		GET_DIR_DELEGATION4args opget_dir_delegation;
   2585 		GETDEVICEINFO4args opgetdeviceinfo;
   2586 		GETDEVICELIST4args opgetdevicelist;
   2587 		LAYOUTCOMMIT4args oplayoutcommit;
   2588 		LAYOUTGET4args oplayoutget;
   2589 		LAYOUTRETURN4args oplayoutreturn;
   2590 		SECINFO_NO_NAME4args opsecinfo_no_name;
   2591 		SEQUENCE4args opsequence;
   2592 		SET_SSV4args opset_ssv;
   2593 		TEST_STATEID4args optest_stateid;
   2594 		WANT_DELEGATION4args opwant_delegation;
   2595 		DESTROY_CLIENTID4args opdestroy_clientid;
   2596 		RECLAIM_COMPLETE4args opreclaim_complete;
   2597 	} nfs_argop4_u;
   2598 };
   2599 typedef struct nfs_argop4 nfs_argop4;
   2600 
   2601 struct nfs_resop4 {
   2602 	nfs_opnum4 resop;
   2603 	union {
   2604 		ACCESS4res opaccess;
   2605 		CLOSE4res opclose;
   2606 		COMMIT4res opcommit;
   2607 		CREATE4res opcreate;
   2608 		DELEGPURGE4res opdelegpurge;
   2609 		DELEGRETURN4res opdelegreturn;
   2610 		GETATTR4res opgetattr;
   2611 		GETFH4res opgetfh;
   2612 		LINK4res oplink;
   2613 		LOCK4res oplock;
   2614 		LOCKT4res oplockt;
   2615 		LOCKU4res oplocku;
   2616 		LOOKUP4res oplookup;
   2617 		LOOKUPP4res oplookupp;
   2618 		NVERIFY4res opnverify;
   2619 		OPEN4res opopen;
   2620 		OPENATTR4res opopenattr;
   2621 		OPEN_CONFIRM4res opopen_confirm;
   2622 		OPEN_DOWNGRADE4res opopen_downgrade;
   2623 		PUTFH4res opputfh;
   2624 		PUTPUBFH4res opputpubfh;
   2625 		PUTROOTFH4res opputrootfh;
   2626 		READ4res opread;
   2627 		READDIR4res opreaddir;
   2628 		READLINK4res opreadlink;
   2629 		REMOVE4res opremove;
   2630 		RENAME4res oprename;
   2631 		RENEW4res oprenew;
   2632 		RESTOREFH4res oprestorefh;
   2633 		SAVEFH4res opsavefh;
   2634 		SECINFO4res opsecinfo;
   2635 		SETATTR4res opsetattr;
   2636 		SETCLIENTID4res opsetclientid;
   2637 		SETCLIENTID_CONFIRM4res opsetclientid_confirm;
   2638 		VERIFY4res opverify;
   2639 		WRITE4res opwrite;
   2640 		RELEASE_LOCKOWNER4res oprelease_lockowner;
   2641 		BACKCHANNEL_CTL4res opbackchannel_ctl;
   2642 		BIND_CONN_TO_SESSION4res opbind_conn_to_session;
   2643 		EXCHANGE_ID4res opexchange_id;
   2644 		CREATE_SESSION4res opcreate_session;
   2645 		DESTROY_SESSION4res opdestroy_session;
   2646 		FREE_STATEID4res opfree_stateid;
   2647 		GET_DIR_DELEGATION4res opget_dir_delegation;
   2648 		GETDEVICEINFO4res opgetdeviceinfo;
   2649 		GETDEVICELIST4res opgetdevicelist;
   2650 		LAYOUTCOMMIT4res oplayoutcommit;
   2651 		LAYOUTGET4res oplayoutget;
   2652 		LAYOUTRETURN4res oplayoutreturn;
   2653 		SECINFO_NO_NAME4res opsecinfo_no_name;
   2654 		SEQUENCE4res opsequence;
   2655 		SET_SSV4res opset_ssv;
   2656 		TEST_STATEID4res optest_stateid;
   2657 		WANT_DELEGATION4res opwant_delegation;
   2658 		DESTROY_CLIENTID4res opdestroy_clientid;
   2659 		RECLAIM_COMPLETE4res opreclaim_complete;
   2660 		ILLEGAL4res opillegal;
   2661 	} nfs_resop4_u;
   2662 };
   2663 typedef struct nfs_resop4 nfs_resop4;
   2664 
   2665 struct COMPOUND4args {
   2666 	utf8str_cs tag;
   2667 	uint32_t minorversion;
   2668 	struct {
   2669 		uint_t argarray_len;
   2670 		nfs_argop4 *argarray_val;
   2671 	} argarray;
   2672 };
   2673 typedef struct COMPOUND4args COMPOUND4args;
   2674 
   2675 struct COMPOUND4res {
   2676 	nfsstat4 status;
   2677 	utf8str_cs tag;
   2678 	struct {
   2679 		uint_t resarray_len;
   2680 		nfs_resop4 *resarray_val;
   2681 	} resarray;
   2682 };
   2683 typedef struct COMPOUND4res COMPOUND4res;
   2684 
   2685 struct CB_GETATTR4args {
   2686 	nfs_fh4 fh;
   2687 	bitmap4 attr_request;
   2688 };
   2689 typedef struct CB_GETATTR4args CB_GETATTR4args;
   2690 
   2691 struct CB_GETATTR4resok {
   2692 	fattr4 obj_attributes;
   2693 };
   2694 typedef struct CB_GETATTR4resok CB_GETATTR4resok;
   2695 
   2696 struct CB_GETATTR4res {
   2697 	nfsstat4 status;
   2698 	union {
   2699 		CB_GETATTR4resok resok4;
   2700 	} CB_GETATTR4res_u;
   2701 };
   2702 typedef struct CB_GETATTR4res CB_GETATTR4res;
   2703 
   2704 struct CB_RECALL4args {
   2705 	stateid4 stateid;
   2706 	bool_t truncate;
   2707 	nfs_fh4 fh;
   2708 };
   2709 typedef struct CB_RECALL4args CB_RECALL4args;
   2710 
   2711 struct CB_RECALL4res {
   2712 	nfsstat4 status;
   2713 };
   2714 typedef struct CB_RECALL4res CB_RECALL4res;
   2715 
   2716 struct CB_ILLEGAL4res {
   2717 	nfsstat4 status;
   2718 };
   2719 typedef struct CB_ILLEGAL4res CB_ILLEGAL4res;
   2720 
   2721 enum layoutrecall_type4 {
   2722 	LAYOUTRECALL4_FILE = LAYOUT4_RET_REC_FILE,
   2723 	LAYOUTRECALL4_FSID = LAYOUT4_RET_REC_FSID,
   2724 	LAYOUTRECALL4_ALL = LAYOUT4_RET_REC_ALL
   2725 };
   2726 typedef enum layoutrecall_type4 layoutrecall_type4;
   2727 
   2728 struct layoutrecall_file4 {
   2729 	nfs_fh4 lor_fh;
   2730 	offset4 lor_offset;
   2731 	length4 lor_length;
   2732 	stateid4 lor_stateid;
   2733 };
   2734 typedef struct layoutrecall_file4 layoutrecall_file4;
   2735 
   2736 struct layoutrecall4 {
   2737 	layoutrecall_type4 lor_recalltype;
   2738 	union {
   2739 		layoutrecall_file4 lor_layout;
   2740 		fsid4 lor_fsid;
   2741 	} layoutrecall4_u;
   2742 };
   2743 typedef struct layoutrecall4 layoutrecall4;
   2744 
   2745 struct CB_LAYOUTRECALL4args {
   2746 	layouttype4 clora_type;
   2747 	layoutiomode4 clora_iomode;
   2748 	bool_t clora_changed;
   2749 	layoutrecall4 clora_recall;
   2750 };
   2751 typedef struct CB_LAYOUTRECALL4args CB_LAYOUTRECALL4args;
   2752 
   2753 struct CB_LAYOUTRECALL4res {
   2754 	nfsstat4 clorr_status;
   2755 };
   2756 typedef struct CB_LAYOUTRECALL4res CB_LAYOUTRECALL4res;
   2757 
   2758 enum notify_type4 {
   2759 	NOTIFY4_CHANGE_CHILD_ATTRS = 0,
   2760 	NOTIFY4_CHANGE_DIR_ATTRS = 1,
   2761 	NOTIFY4_REMOVE_ENTRY = 2,
   2762 	NOTIFY4_ADD_ENTRY = 3,
   2763 	NOTIFY4_RENAME_ENTRY = 4,
   2764 	NOTIFY4_CHANGE_COOKIE_VERIFIER = 5
   2765 };
   2766 typedef enum notify_type4 notify_type4;
   2767 
   2768 struct notify_entry4 {
   2769 	component4 ne_file;
   2770 	fattr4 ne_attrs;
   2771 };
   2772 typedef struct notify_entry4 notify_entry4;
   2773 
   2774 struct prev_entry4 {
   2775 	notify_entry4 pe_prev_entry;
   2776 	nfs_cookie4 pe_prev_entry_cookie;
   2777 };
   2778 typedef struct prev_entry4 prev_entry4;
   2779 
   2780 struct notify_remove4 {
   2781 	notify_entry4 nrm_old_entry;
   2782 	nfs_cookie4 nrm_old_entry_cookie;
   2783 };
   2784 typedef struct notify_remove4 notify_remove4;
   2785 
   2786 struct notify_add4 {
   2787 	struct {
   2788 		uint_t nad_old_entry_len;
   2789 		notify_remove4 *nad_old_entry_val;
   2790 	} nad_old_entry;
   2791 	notify_entry4 nad_new_entry;
   2792 	struct {
   2793 		uint_t nad_new_entry_cookie_len;
   2794 		nfs_cookie4 *nad_new_entry_cookie_val;
   2795 	} nad_new_entry_cookie;
   2796 	struct {
   2797 		uint_t nad_prev_entry_len;
   2798 		prev_entry4 *nad_prev_entry_val;
   2799 	} nad_prev_entry;
   2800 	bool_t nad_last_entry;
   2801 };
   2802 typedef struct notify_add4 notify_add4;
   2803 
   2804 struct notify_attr4 {
   2805 	notify_entry4 na_changed_entry;
   2806 };
   2807 typedef struct notify_attr4 notify_attr4;
   2808 
   2809 struct notify_rename4 {
   2810 	notify_remove4 nrn_old_entry;
   2811 	notify_add4 nrn_new_entry;
   2812 };
   2813 typedef struct notify_rename4 notify_rename4;
   2814 
   2815 struct notify_verifier4 {
   2816 	verifier4 nv_old_cookieverf;
   2817 	verifier4 nv_new_cookieverf;
   2818 };
   2819 typedef struct notify_verifier4 notify_verifier4;
   2820 
   2821 typedef struct {
   2822 	uint_t notifylist4_len;
   2823 	char *notifylist4_val;
   2824 } notifylist4;
   2825 
   2826 struct notify4 {
   2827 	bitmap4 notify_mask;
   2828 	notifylist4 notify_vals;
   2829 };
   2830 typedef struct notify4 notify4;
   2831 
   2832 struct CB_NOTIFY4args {
   2833 	stateid4 cna_stateid;
   2834 	nfs_fh4 cna_fh;
   2835 	struct {
   2836 		uint_t cna_changes_len;
   2837 		notify4 *cna_changes_val;
   2838 	} cna_changes;
   2839 };
   2840 typedef struct CB_NOTIFY4args CB_NOTIFY4args;
   2841 
   2842 struct CB_NOTIFY4res {
   2843 	nfsstat4 cnr_status;
   2844 };
   2845 typedef struct CB_NOTIFY4res CB_NOTIFY4res;
   2846 
   2847 struct CB_PUSH_DELEG4args {
   2848 	nfs_fh4 cpda_fh;
   2849 	open_delegation4 cpda_delegation;
   2850 };
   2851 typedef struct CB_PUSH_DELEG4args CB_PUSH_DELEG4args;
   2852 
   2853 struct CB_PUSH_DELEG4res {
   2854 	nfsstat4 cpdr_status;
   2855 };
   2856 typedef struct CB_PUSH_DELEG4res CB_PUSH_DELEG4res;
   2857 #define	RCA4_TYPE_MASK_RDATA_DLG 0
   2858 #define	RCA4_TYPE_MASK_WDATA_DLG 1
   2859 #define	RCA4_TYPE_MASK_DIR_DLG 2
   2860 #define	RCA4_TYPE_MASK_FILE_LAYOUT 3
   2861 #define	RCA4_TYPE_MASK_BLK_LAYOUT 4
   2862 #define	RCA4_TYPE_MASK_OBJ_LAYOUT_MIN 8
   2863 #define	RCA4_TYPE_MASK_OBJ_LAYOUT_MAX 9
   2864 #define	RCA4_TYPE_MASK_OTHER_LAYOUT_MIN 12
   2865 #define	RCA4_TYPE_MASK_OTHER_LAYOUT_MAX 15
   2866 
   2867 struct CB_RECALL_ANY4args {
   2868 	uint32_t craa_objects_to_keep;
   2869 	bitmap4 craa_type_mask;
   2870 };
   2871 typedef struct CB_RECALL_ANY4args CB_RECALL_ANY4args;
   2872 
   2873 struct CB_RECALL_ANY4res {
   2874 	nfsstat4 crar_status;
   2875 };
   2876 typedef struct CB_RECALL_ANY4res CB_RECALL_ANY4res;
   2877 
   2878 typedef CB_RECALL_ANY4args CB_RECALLABLE_OBJ_AVAIL4args;
   2879 
   2880 struct CB_RECALLABLE_OBJ_AVAIL4res {
   2881 	nfsstat4 croa_status;
   2882 };
   2883 typedef struct CB_RECALLABLE_OBJ_AVAIL4res CB_RECALLABLE_OBJ_AVAIL4res;
   2884 
   2885 struct CB_RECALL_SLOT4args {
   2886 	slotid4 rsa_target_highest_slotid;
   2887 };
   2888 typedef struct CB_RECALL_SLOT4args CB_RECALL_SLOT4args;
   2889 
   2890 struct CB_RECALL_SLOT4res {
   2891 	nfsstat4 rsr_status;
   2892 };
   2893 typedef struct CB_RECALL_SLOT4res CB_RECALL_SLOT4res;
   2894 
   2895 struct referring_call4 {
   2896 	sequenceid4 rc_sequenceid;
   2897 	slotid4 rc_slotid;
   2898 };
   2899 typedef struct referring_call4 referring_call4;
   2900 
   2901 struct referring_call_list4 {
   2902 	sessionid4 rcl_sessionid;
   2903 	struct {
   2904 		uint_t rcl_referring_calls_len;
   2905 		referring_call4 *rcl_referring_calls_val;
   2906 	} rcl_referring_calls;
   2907 };
   2908 typedef struct referring_call_list4 referring_call_list4;
   2909 
   2910 struct CB_SEQUENCE4args {
   2911 	sessionid4 csa_sessionid;
   2912 	sequenceid4 csa_sequenceid;
   2913 	slotid4 csa_slotid;
   2914 	slotid4 csa_highest_slotid;
   2915 	bool_t csa_cachethis;
   2916 	struct {
   2917 		uint_t csa_referring_call_lists_len;
   2918 		referring_call_list4 *csa_referring_call_lists_val;
   2919 	} csa_referring_call_lists;
   2920 };
   2921 typedef struct CB_SEQUENCE4args CB_SEQUENCE4args;
   2922 
   2923 struct CB_SEQUENCE4resok {
   2924 	sessionid4 csr_sessionid;
   2925 	sequenceid4 csr_sequenceid;
   2926 	slotid4 csr_slotid;
   2927 	slotid4 csr_highest_slotid;
   2928 	slotid4 csr_target_highest_slotid;
   2929 };
   2930 typedef struct CB_SEQUENCE4resok CB_SEQUENCE4resok;
   2931 
   2932 struct CB_SEQUENCE4res {
   2933 	nfsstat4 csr_status;
   2934 	union {
   2935 		CB_SEQUENCE4resok csr_resok4;
   2936 	} CB_SEQUENCE4res_u;
   2937 };
   2938 typedef struct CB_SEQUENCE4res CB_SEQUENCE4res;
   2939 
   2940 struct CB_WANTS_CANCELLED4args {
   2941 	bool_t cwca_contended_wants_cancelled;
   2942 	bool_t cwca_resourced_wants_cancelled;
   2943 };
   2944 typedef struct CB_WANTS_CANCELLED4args CB_WANTS_CANCELLED4args;
   2945 
   2946 struct CB_WANTS_CANCELLED4res {
   2947 	nfsstat4 cwcr_status;
   2948 };
   2949 typedef struct CB_WANTS_CANCELLED4res CB_WANTS_CANCELLED4res;
   2950 
   2951 struct CB_NOTIFY_LOCK4args {
   2952 	nfs_fh4 cnla_fh;
   2953 	lock_owner4 cnla_lock_owner;
   2954 };
   2955 typedef struct CB_NOTIFY_LOCK4args CB_NOTIFY_LOCK4args;
   2956 
   2957 struct CB_NOTIFY_LOCK4res {
   2958 	nfsstat4 cnlr_status;
   2959 };
   2960 typedef struct CB_NOTIFY_LOCK4res CB_NOTIFY_LOCK4res;
   2961 
   2962 enum notify_deviceid_type4 {
   2963 	NOTIFY_DEVICEID4_CHANGE = 1,
   2964 	NOTIFY_DEVICEID4_DELETE = 2
   2965 };
   2966 typedef enum notify_deviceid_type4 notify_deviceid_type4;
   2967 
   2968 struct notify_deviceid_delete4 {
   2969 	layouttype4 ndd_layouttype;
   2970 	deviceid4 ndd_deviceid;
   2971 };
   2972 typedef struct notify_deviceid_delete4 notify_deviceid_delete4;
   2973 
   2974 struct notify_deviceid_change4 {
   2975 	layouttype4 ndc_layouttype;
   2976 	deviceid4 ndc_deviceid;
   2977 	bool_t ndc_immediate;
   2978 };
   2979 typedef struct notify_deviceid_change4 notify_deviceid_change4;
   2980 
   2981 struct CB_NOTIFY_DEVICEID4args {
   2982 	struct {
   2983 		uint_t cnda_changes_len;
   2984 		notify4 *cnda_changes_val;
   2985 	} cnda_changes;
   2986 };
   2987 typedef struct CB_NOTIFY_DEVICEID4args CB_NOTIFY_DEVICEID4args;
   2988 
   2989 struct CB_NOTIFY_DEVICEID4res {
   2990 	nfsstat4 cndr_status;
   2991 };
   2992 typedef struct CB_NOTIFY_DEVICEID4res CB_NOTIFY_DEVICEID4res;
   2993 
   2994 /* Callback operations new to NFSv4.1 */
   2995 
   2996 enum nfs_cb_opnum4 {
   2997 	OP_CB_GETATTR = 3,
   2998 	OP_CB_RECALL = 4,
   2999 	OP_CB_LAYOUTRECALL = 5,
   3000 	OP_CB_NOTIFY = 6,
   3001 	OP_CB_PUSH_DELEG = 7,
   3002 	OP_CB_RECALL_ANY = 8,
   3003 	OP_CB_RECALLABLE_OBJ_AVAIL = 9,
   3004 	OP_CB_RECALL_SLOT = 10,
   3005 	OP_CB_SEQUENCE = 11,
   3006 	OP_CB_WANTS_CANCELLED = 12,
   3007 	OP_CB_NOTIFY_LOCK = 13,
   3008 	OP_CB_NOTIFY_DEVICEID = 14,
   3009 	OP_CB_ILLEGAL = 10044
   3010 };
   3011 typedef enum nfs_cb_opnum4 nfs_cb_opnum4;
   3012 
   3013 struct nfs_cb_argop4 {
   3014 	uint_t argop;
   3015 	union {
   3016 		CB_GETATTR4args opcbgetattr;
   3017 		CB_RECALL4args opcbrecall;
   3018 		CB_LAYOUTRECALL4args opcblayoutrecall;
   3019 		CB_NOTIFY4args opcbnotify;
   3020 		CB_PUSH_DELEG4args opcbpush_deleg;
   3021 		CB_RECALL_ANY4args opcbrecall_any;
   3022 		CB_RECALLABLE_OBJ_AVAIL4args opcbrecallable_obj_avail;
   3023 		CB_RECALL_SLOT4args opcbrecall_slot;
   3024 		CB_SEQUENCE4args opcbsequence;
   3025 		CB_WANTS_CANCELLED4args opcbwants_cancelled;
   3026 		CB_NOTIFY_LOCK4args opcbnotify_lock;
   3027 		CB_NOTIFY_DEVICEID4args opcbnotify_deviceid;
   3028 	} nfs_cb_argop4_u;
   3029 };
   3030 typedef struct nfs_cb_argop4 nfs_cb_argop4;
   3031 
   3032 struct nfs_cb_resop4 {
   3033 	uint_t resop;
   3034 	union {
   3035 		CB_GETATTR4res opcbgetattr;
   3036 		CB_RECALL4res opcbrecall;
   3037 		CB_LAYOUTRECALL4res opcblayoutrecall;
   3038 		CB_NOTIFY4res opcbnotify;
   3039 		CB_PUSH_DELEG4res opcbpush_deleg;
   3040 		CB_RECALL_ANY4res opcbrecall_any;
   3041 		CB_RECALLABLE_OBJ_AVAIL4res opcbrecallable_obj_avail;
   3042 		CB_RECALL_SLOT4res opcbrecall_slot;
   3043 		CB_SEQUENCE4res opcbsequence;
   3044 		CB_WANTS_CANCELLED4res opcbwants_cancelled;
   3045 		CB_NOTIFY_LOCK4res opcbnotify_lock;
   3046 		CB_NOTIFY_DEVICEID4res opcbnotify_deviceid;
   3047 		CB_ILLEGAL4res opcbillegal;
   3048 	} nfs_cb_resop4_u;
   3049 };
   3050 typedef struct nfs_cb_resop4 nfs_cb_resop4;
   3051 
   3052 struct CB_COMPOUND4args {
   3053 	utf8str_cs tag;
   3054 	uint32_t minorversion;
   3055 	uint32_t callback_ident;
   3056 	struct {
   3057 		uint_t argarray_len;
   3058 		nfs_cb_argop4 *argarray_val;
   3059 	} argarray;
   3060 };
   3061 typedef struct CB_COMPOUND4args CB_COMPOUND4args;
   3062 
   3063 struct CB_COMPOUND4res {
   3064 	nfsstat4 status;
   3065 	utf8str_cs tag;
   3066 	struct {
   3067 		uint_t resarray_len;
   3068 		nfs_cb_resop4 *resarray_val;
   3069 	} resarray;
   3070 };
   3071 typedef struct CB_COMPOUND4res CB_COMPOUND4res;
   3072 
   3073 #define	NFS4_PROGRAM	100003
   3074 #define	NFS_V4	4
   3075 
   3076 #if defined(__STDC__) || defined(__cplusplus)
   3077 #define	NFSPROC4_NULL	0
   3078 extern  void * nfsproc4_null_4(void *, CLIENT *);
   3079 extern  void * nfsproc4_null_4_svc(void *, struct svc_req *);
   3080 #define	NFSPROC4_COMPOUND	1
   3081 extern  COMPOUND4res * nfsproc4_compound_4(COMPOUND4args *, CLIENT *);
   3082 extern  COMPOUND4res * nfsproc4_compound_4_svc(COMPOUND4args *,
   3083 						struct svc_req *);
   3084 extern int nfs4_program_4_freeresult(SVCXPRT *, xdrproc_t, caddr_t);
   3085 
   3086 #else /* K&R C */
   3087 #define	NFSPROC4_NULL	0
   3088 extern  void * nfsproc4_null_4();
   3089 extern  void * nfsproc4_null_4_svc();
   3090 #define	NFSPROC4_COMPOUND	1
   3091 extern  COMPOUND4res * nfsproc4_compound_4();
   3092 extern  COMPOUND4res * nfsproc4_compound_4_svc();
   3093 extern int nfs4_program_4_freeresult();
   3094 #endif /* K&R C */
   3095 
   3096 #define	NFS4_CALLBACK	0x40000000
   3097 #define	NFS_CB	1
   3098 
   3099 #if defined(__STDC__) || defined(__cplusplus)
   3100 #define	CB_NULL	0
   3101 extern  void * cb_null_1(void *, CLIENT *);
   3102 extern  void * cb_null_1_svc(void *, struct svc_req *);
   3103 #define	CB_COMPOUND	1
   3104 extern  CB_COMPOUND4res * cb_compound_1(CB_COMPOUND4args *, CLIENT *);
   3105 extern  CB_COMPOUND4res * cb_compound_1_svc(CB_COMPOUND4args *,
   3106 						struct svc_req *);
   3107 extern int nfs4_callback_1_freeresult(SVCXPRT *, xdrproc_t, caddr_t);
   3108 
   3109 #else /* K&R C */
   3110 #define	CB_NULL	0
   3111 extern  void * cb_null_1();
   3112 extern  void * cb_null_1_svc();
   3113 #define	CB_COMPOUND	1
   3114 extern  CB_COMPOUND4res * cb_compound_1();
   3115 extern  CB_COMPOUND4res * cb_compound_1_svc();
   3116 extern int nfs4_callback_1_freeresult();
   3117 #endif /* K&R C */
   3118 
   3119 /* the xdr functions */
   3120 
   3121 #if defined(__STDC__) || defined(__cplusplus)
   3122 extern  bool_t xdr_nfs_ftype4(XDR *, nfs_ftype4*);
   3123 extern  bool_t xdr_nfsstat4(XDR *, nfsstat4*);
   3124 extern  bool_t xdr_attrlist4(XDR *, attrlist4*);
   3125 extern  bool_t xdr_bitmap4(XDR *, bitmap4*);
   3126 extern  bool_t xdr_changeid4(XDR *, changeid4*);
   3127 extern  bool_t xdr_clientid4(XDR *, clientid4*);
   3128 extern  bool_t xdr_count4(XDR *, count4*);
   3129 extern  bool_t xdr_length4(XDR *, length4*);
   3130 extern  bool_t xdr_mode4(XDR *, mode4*);
   3131 extern  bool_t xdr_nfs_cookie4(XDR *, nfs_cookie4*);
   3132 extern  bool_t xdr_nfs_fh4(XDR *, nfs_fh4*);
   3133 extern  bool_t xdr_offset4(XDR *, offset4*);
   3134 extern  bool_t xdr_qop4(XDR *, qop4*);
   3135 extern  bool_t xdr_sec_oid4(XDR *, sec_oid4*);
   3136 extern  bool_t xdr_sequenceid4(XDR *, sequenceid4*);
   3137 extern  bool_t xdr_seqid4(XDR *, seqid4*);
   3138 extern  bool_t xdr_sessionid4(XDR *, sessionid4);
   3139 extern  bool_t xdr_slotid4(XDR *, slotid4*);
   3140 extern  bool_t xdr_utf8string(XDR *, utf8string*);
   3141 extern  bool_t xdr_utf8str_cis(XDR *, utf8str_cis*);
   3142 extern  bool_t xdr_utf8str_cs(XDR *, utf8str_cs*);
   3143 extern  bool_t xdr_utf8str_mixed(XDR *, utf8str_mixed*);
   3144 extern  bool_t xdr_component4(XDR *, component4*);
   3145 extern  bool_t xdr_linktext4(XDR *, linktext4*);
   3146 extern  bool_t xdr_pathname4(XDR *, pathname4*);
   3147 extern  bool_t xdr_verifier4(XDR *, verifier4);
   3148 extern  bool_t xdr_nfstime4(XDR *, nfstime4*);
   3149 extern  bool_t xdr_time_how4(XDR *, time_how4*);
   3150 extern  bool_t xdr_settime4(XDR *, settime4*);
   3151 extern  bool_t xdr_nfs_lease4(XDR *, nfs_lease4*);
   3152 extern  bool_t xdr_fsid4(XDR *, fsid4*);
   3153 extern  bool_t xdr_change_policy4(XDR *, change_policy4*);
   3154 extern  bool_t xdr_fs_location4(XDR *, fs_location4*);
   3155 extern  bool_t xdr_fs_locations4(XDR *, fs_locations4*);
   3156 extern  bool_t xdr_acetype4(XDR *, acetype4*);
   3157 extern  bool_t xdr_aceflag4(XDR *, aceflag4*);
   3158 extern  bool_t xdr_acemask4(XDR *, acemask4*);
   3159 extern  bool_t xdr_nfsace4(XDR *, nfsace4*);
   3160 extern  bool_t xdr_aclflag4(XDR *, aclflag4*);
   3161 extern  bool_t xdr_nfsacl41(XDR *, nfsacl41*);
   3162 extern  bool_t xdr_mode_masked4(XDR *, mode_masked4*);
   3163 extern  bool_t xdr_specdata4(XDR *, specdata4*);
   3164 extern  bool_t xdr_netaddr4(XDR *, netaddr4*);
   3165 extern  bool_t xdr_nfs_impl_id4(XDR *, nfs_impl_id4*);
   3166 extern  bool_t xdr_stateid4(XDR *, stateid4*);
   3167 extern  bool_t xdr_layouttype4(XDR *, layouttype4*);
   3168 extern  bool_t xdr_layout_content4(XDR *, layout_content4*);
   3169 extern  bool_t xdr_layouthint4(XDR *, layouthint4*);
   3170 extern  bool_t xdr_layoutiomode4(XDR *, layoutiomode4*);
   3171 extern  bool_t xdr_layout4(XDR *, layout4*);
   3172 extern  bool_t xdr_deviceid4(XDR *, deviceid4);
   3173 extern  bool_t xdr_device_addr4(XDR *, device_addr4*);
   3174 extern  bool_t xdr_layoutupdate4(XDR *, layoutupdate4*);
   3175 extern  bool_t xdr_layoutreturn_type4(XDR *, layoutreturn_type4*);
   3176 extern  bool_t xdr_layoutreturn_file4(XDR *, layoutreturn_file4*);
   3177 extern  bool_t xdr_layoutreturn4(XDR *, layoutreturn4*);
   3178 extern  bool_t xdr_fs4_status_type(XDR *, fs4_status_type*);
   3179 extern  bool_t xdr_fs4_status(XDR *, fs4_status*);
   3180 extern  bool_t xdr_threshold4_read_size(XDR *, threshold4_read_size*);
   3181 extern  bool_t xdr_threshold4_write_size(XDR *, threshold4_write_size*);
   3182 extern  bool_t xdr_threshold4_read_iosize(XDR *, threshold4_read_iosize*);
   3183 extern  bool_t xdr_threshold4_write_iosize(XDR *, threshold4_write_iosize*);
   3184 extern  bool_t xdr_threshold_item4(XDR *, threshold_item4*);
   3185 extern  bool_t xdr_mdsthreshold4(XDR *, mdsthreshold4*);
   3186 extern  bool_t xdr_retention_get4(XDR *, retention_get4*);
   3187 extern  bool_t xdr_retention_set4(XDR *, retention_set4*);
   3188 extern  bool_t xdr_fs_charset_cap4(XDR *, fs_charset_cap4*);
   3189 extern  bool_t xdr_fattr4_supported_attrs(XDR *, fattr4_supported_attrs*);
   3190 extern  bool_t xdr_fattr4_suppattr_exclcreat(XDR *, fattr4_suppattr_exclcreat*);
   3191 extern  bool_t xdr_fattr4_type(XDR *, fattr4_type*);
   3192 extern  bool_t xdr_fattr4_fh_expire_type(XDR *, fattr4_fh_expire_type*);
   3193 extern  bool_t xdr_fattr4_change(XDR *, fattr4_change*);
   3194 extern  bool_t xdr_fattr4_size(XDR *, fattr4_size*);
   3195 extern  bool_t xdr_fattr4_link_support(XDR *, fattr4_link_support*);
   3196 extern  bool_t xdr_fattr4_symlink_support(XDR *, fattr4_symlink_support*);
   3197 extern  bool_t xdr_fattr4_named_attr(XDR *, fattr4_named_attr*);
   3198 extern  bool_t xdr_fattr4_fsid(XDR *, fattr4_fsid*);
   3199 extern  bool_t xdr_fattr4_unique_handles(XDR *, fattr4_unique_handles*);
   3200 extern  bool_t xdr_fattr4_lease_time(XDR *, fattr4_lease_time*);
   3201 extern  bool_t xdr_fattr4_rdattr_error(XDR *, fattr4_rdattr_error*);
   3202 extern  bool_t xdr_fattr4_acl(XDR *, fattr4_acl*);
   3203 extern  bool_t xdr_fattr4_aclsupport(XDR *, fattr4_aclsupport*);
   3204 extern  bool_t xdr_fattr4_archive(XDR *, fattr4_archive*);
   3205 extern  bool_t xdr_fattr4_cansettime(XDR *, fattr4_cansettime*);
   3206 extern  bool_t xdr_fattr4_case_insensitive(XDR *, fattr4_case_insensitive*);
   3207 extern  bool_t xdr_fattr4_case_preserving(XDR *, fattr4_case_preserving*);
   3208 extern  bool_t xdr_fattr4_chown_restricted(XDR *, fattr4_chown_restricted*);
   3209 extern  bool_t xdr_fattr4_fileid(XDR *, fattr4_fileid*);
   3210 extern  bool_t xdr_fattr4_files_avail(XDR *, fattr4_files_avail*);
   3211 extern  bool_t xdr_fattr4_filehandle(XDR *, fattr4_filehandle*);
   3212 extern  bool_t xdr_fattr4_files_free(XDR *, fattr4_files_free*);
   3213 extern  bool_t xdr_fattr4_files_total(XDR *, fattr4_files_total*);
   3214 extern  bool_t xdr_fattr4_fs_locations(XDR *, fattr4_fs_locations*);
   3215 extern  bool_t xdr_fattr4_hidden(XDR *, fattr4_hidden*);
   3216 extern  bool_t xdr_fattr4_homogeneous(XDR *, fattr4_homogeneous*);
   3217 extern  bool_t xdr_fattr4_maxfilesize(XDR *, fattr4_maxfilesize*);
   3218 extern  bool_t xdr_fattr4_maxlink(XDR *, fattr4_maxlink*);
   3219 extern  bool_t xdr_fattr4_maxname(XDR *, fattr4_maxname*);
   3220 extern  bool_t xdr_fattr4_maxread(XDR *, fattr4_maxread*);
   3221 extern  bool_t xdr_fattr4_maxwrite(XDR *, fattr4_maxwrite*);
   3222 extern  bool_t xdr_fattr4_mimetype(XDR *, fattr4_mimetype*);
   3223 extern  bool_t xdr_fattr4_mode(XDR *, fattr4_mode*);
   3224 extern  bool_t xdr_fattr4_mode_set_masked(XDR *, fattr4_mode_set_masked*);
   3225 extern  bool_t xdr_fattr4_mounted_on_fileid(XDR *, fattr4_mounted_on_fileid*);
   3226 extern  bool_t xdr_fattr4_no_trunc(XDR *, fattr4_no_trunc*);
   3227 extern  bool_t xdr_fattr4_numlinks(XDR *, fattr4_numlinks*);
   3228 extern  bool_t xdr_fattr4_owner(XDR *, fattr4_owner*);
   3229 extern  bool_t xdr_fattr4_owner_group(XDR *, fattr4_owner_group*);
   3230 extern  bool_t xdr_fattr4_quota_avail_hard(XDR *, fattr4_quota_avail_hard*);
   3231 extern  bool_t xdr_fattr4_quota_avail_soft(XDR *, fattr4_quota_avail_soft*);
   3232 extern  bool_t xdr_fattr4_quota_used(XDR *, fattr4_quota_used*);
   3233 extern  bool_t xdr_fattr4_rawdev(XDR *, fattr4_rawdev*);
   3234 extern  bool_t xdr_fattr4_space_avail(XDR *, fattr4_space_avail*);
   3235 extern  bool_t xdr_fattr4_space_free(XDR *, fattr4_space_free*);
   3236 extern  bool_t xdr_fattr4_space_total(XDR *, fattr4_space_total*);
   3237 extern  bool_t xdr_fattr4_space_used(XDR *, fattr4_space_used*);
   3238 extern  bool_t xdr_fattr4_system(XDR *, fattr4_system*);
   3239 extern  bool_t xdr_fattr4_time_access(XDR *, fattr4_time_access*);
   3240 extern  bool_t xdr_fattr4_time_access_set(XDR *, fattr4_time_access_set*);
   3241 extern  bool_t xdr_fattr4_time_backup(XDR *, fattr4_time_backup*);
   3242 extern  bool_t xdr_fattr4_time_create(XDR *, fattr4_time_create*);
   3243 extern  bool_t xdr_fattr4_time_delta(XDR *, fattr4_time_delta*);
   3244 extern  bool_t xdr_fattr4_time_metadata(XDR *, fattr4_time_metadata*);
   3245 extern  bool_t xdr_fattr4_time_modify(XDR *, fattr4_time_modify*);
   3246 extern  bool_t xdr_fattr4_time_modify_set(XDR *, fattr4_time_modify_set*);
   3247 extern  bool_t xdr_fattr4_dir_notif_delay(XDR *, fattr4_dir_notif_delay*);
   3248 extern  bool_t xdr_fattr4_dirent_notif_delay(XDR *, fattr4_dirent_notif_delay*);
   3249 extern  bool_t xdr_fattr4_absent(XDR *, fattr4_absent*);
   3250 extern  bool_t xdr_fattr4_fs_layout_types(XDR *, fattr4_fs_layout_types*);
   3251 extern  bool_t xdr_fattr4_fs_status(XDR *, fattr4_fs_status*);
   3252 extern  bool_t xdr_fattr4_fs_charset_cap4(XDR *, fattr4_fs_charset_cap4*);
   3253 extern  bool_t xdr_fattr4_layout_alignment(XDR *, fattr4_layout_alignment*);
   3254 extern  bool_t xdr_fattr4_layout_blksize(XDR *, fattr4_layout_blksize*);
   3255 extern  bool_t xdr_fattr4_layout_hint(XDR *, fattr4_layout_hint*);
   3256 extern  bool_t xdr_fattr4_layout_types(XDR *, fattr4_layout_types*);
   3257 extern  bool_t xdr_fattr4_mdsthreshold(XDR *, fattr4_mdsthreshold*);
   3258 extern  bool_t xdr_fattr4_retention_get(XDR *, fattr4_retention_get*);
   3259 extern  bool_t xdr_fattr4_retention_set(XDR *, fattr4_retention_set*);
   3260 extern  bool_t xdr_fattr4_retentevt_get(XDR *, fattr4_retentevt_get*);
   3261 extern  bool_t xdr_fattr4_retentevt_set(XDR *, fattr4_retentevt_set*);
   3262 extern  bool_t xdr_fattr4_retention_hold(XDR *, fattr4_retention_hold*);
   3263 extern  bool_t xdr_fattr4_dacl(XDR *, fattr4_dacl*);
   3264 extern  bool_t xdr_fattr4_sacl(XDR *, fattr4_sacl*);
   3265 extern  bool_t xdr_fattr4(XDR *, fattr4*);
   3266 extern  bool_t xdr_change_info4(XDR *, change_info4*);
   3267 extern  bool_t xdr_clientaddr4(XDR *, clientaddr4*);
   3268 extern  bool_t xdr_cb_client4(XDR *, cb_client4*);
   3269 extern  bool_t xdr_nfs_client_id4(XDR *, nfs_client_id4*);
   3270 extern  bool_t xdr_client_owner4(XDR *, client_owner4*);
   3271 extern  bool_t xdr_server_owner4(XDR *, server_owner4*);
   3272 extern  bool_t xdr_state_owner4(XDR *, state_owner4*);
   3273 extern  bool_t xdr_open_owner4(XDR *, open_owner4*);
   3274 extern  bool_t xdr_lock_owner4(XDR *, lock_owner4*);
   3275 extern  bool_t xdr_nfs_lock_type4(XDR *, nfs_lock_type4*);
   3276 extern  bool_t xdr_ssv_subkey4(XDR *, ssv_subkey4*);
   3277 extern  bool_t xdr_ssv_mic_plain_tkn4(XDR *, ssv_mic_plain_tkn4*);
   3278 extern  bool_t xdr_ssv_mic_tkn4(XDR *, ssv_mic_tkn4*);
   3279 extern  bool_t xdr_ssv_seal_plain_tkn4(XDR *, ssv_seal_plain_tkn4*);
   3280 extern  bool_t xdr_ssv_seal_cipher_tkn4(XDR *, ssv_seal_cipher_tkn4*);
   3281 extern  bool_t xdr_fs_locations_server4(XDR *, fs_locations_server4*);
   3282 extern  bool_t xdr_fs_locations_item4(XDR *, fs_locations_item4*);
   3283 extern  bool_t xdr_fs_locations_info4(XDR *, fs_locations_info4*);
   3284 extern  bool_t xdr_fattr4_fs_locations_info(XDR *, fattr4_fs_locations_info*);
   3285 extern  bool_t xdr_nfl_util4(XDR *, nfl_util4*);
   3286 extern  bool_t xdr_filelayout_hint_care4(XDR *, filelayout_hint_care4*);
   3287 extern  bool_t xdr_nfsv4_1_file_layouthint4(XDR *, nfsv4_1_file_layouthint4*);
   3288 extern  bool_t xdr_multipath_list4(XDR *, multipath_list4*);
   3289 extern  bool_t xdr_nfsv4_1_file_layout_ds_addr4(XDR *,
   3290 						nfsv4_1_file_layout_ds_addr4*);
   3291 extern  bool_t xdr_nfsv4_1_file_layout4(XDR *, nfsv4_1_file_layout4*);
   3292 extern  bool_t xdr_ACCESS4args(XDR *, ACCESS4args*);
   3293 extern  bool_t xdr_ACCESS4resok(XDR *, ACCESS4resok*);
   3294 extern  bool_t xdr_ACCESS4res(XDR *, ACCESS4res*);
   3295 extern  bool_t xdr_CLOSE4args(XDR *, CLOSE4args*);
   3296 extern  bool_t xdr_CLOSE4res(XDR *, CLOSE4res*);
   3297 extern  bool_t xdr_COMMIT4args(XDR *, COMMIT4args*);
   3298 extern  bool_t xdr_COMMIT4resok(XDR *, COMMIT4resok*);
   3299 extern  bool_t xdr_COMMIT4res(XDR *, COMMIT4res*);
   3300 extern  bool_t xdr_createtype4(XDR *, createtype4*);
   3301 extern  bool_t xdr_CREATE4args(XDR *, CREATE4args*);
   3302 extern  bool_t xdr_CREATE4resok(XDR *, CREATE4resok*);
   3303 extern  bool_t xdr_CREATE4res(XDR *, CREATE4res*);
   3304 extern  bool_t xdr_DELEGPURGE4args(XDR *, DELEGPURGE4args*);
   3305 extern  bool_t xdr_DELEGPURGE4res(XDR *, DELEGPURGE4res*);
   3306 extern  bool_t xdr_DELEGRETURN4args(XDR *, DELEGRETURN4args*);
   3307 extern  bool_t xdr_DELEGRETURN4res(XDR *, DELEGRETURN4res*);
   3308 extern  bool_t xdr_GETATTR4args(XDR *, GETATTR4args*);
   3309 extern  bool_t xdr_GETATTR4resok(XDR *, GETATTR4resok*);
   3310 extern  bool_t xdr_GETATTR4res(XDR *, GETATTR4res*);
   3311 extern  bool_t xdr_GETFH4resok(XDR *, GETFH4resok*);
   3312 extern  bool_t xdr_GETFH4res(XDR *, GETFH4res*);
   3313 extern  bool_t xdr_LINK4args(XDR *, LINK4args*);
   3314 extern  bool_t xdr_LINK4resok(XDR *, LINK4resok*);
   3315 extern  bool_t xdr_LINK4res(XDR *, LINK4res*);
   3316 extern  bool_t xdr_open_to_lock_owner4(XDR *, open_to_lock_owner4*);
   3317 extern  bool_t xdr_exist_lock_owner4(XDR *, exist_lock_owner4*);
   3318 extern  bool_t xdr_locker4(XDR *, locker4*);
   3319 extern  bool_t xdr_LOCK4args(XDR *, LOCK4args*);
   3320 extern  bool_t xdr_LOCK4denied(XDR *, LOCK4denied*);
   3321 extern  bool_t xdr_LOCK4resok(XDR *, LOCK4resok*);
   3322 extern  bool_t xdr_LOCK4res(XDR *, LOCK4res*);
   3323 extern  bool_t xdr_LOCKT4args(XDR *, LOCKT4args*);
   3324 extern  bool_t xdr_LOCKT4res(XDR *, LOCKT4res*);
   3325 extern  bool_t xdr_LOCKU4args(XDR *, LOCKU4args*);
   3326 extern  bool_t xdr_LOCKU4res(XDR *, LOCKU4res*);
   3327 extern  bool_t xdr_LOOKUP4args(XDR *, LOOKUP4args*);
   3328 extern  bool_t xdr_LOOKUP4res(XDR *, LOOKUP4res*);
   3329 extern  bool_t xdr_LOOKUPP4res(XDR *, LOOKUPP4res*);
   3330 extern  bool_t xdr_NVERIFY4args(XDR *, NVERIFY4args*);
   3331 extern  bool_t xdr_NVERIFY4res(XDR *, NVERIFY4res*);
   3332 extern  bool_t xdr_createmode4(XDR *, createmode4*);
   3333 extern  bool_t xdr_creatverfattr(XDR *, creatverfattr*);
   3334 extern  bool_t xdr_createhow4(XDR *, createhow4*);
   3335 extern  bool_t xdr_opentype4(XDR *, opentype4*);
   3336 extern  bool_t xdr_openflag4(XDR *, openflag4*);
   3337 extern  bool_t xdr_limit_by4(XDR *, limit_by4*);
   3338 extern  bool_t xdr_nfs_modified_limit4(XDR *, nfs_modified_limit4*);
   3339 extern  bool_t xdr_nfs_space_limit4(XDR *, nfs_space_limit4*);
   3340 extern  bool_t xdr_open_delegation_type4(XDR *, open_delegation_type4*);
   3341 extern  bool_t xdr_open_claim_type4(XDR *, open_claim_type4*);
   3342 extern  bool_t xdr_open_claim_delegate_cur4(XDR *, open_claim_delegate_cur4*);
   3343 extern  bool_t xdr_open_claim4(XDR *, open_claim4*);
   3344 extern  bool_t xdr_OPEN4args(XDR *, OPEN4args*);
   3345 extern  bool_t xdr_open_read_delegation4(XDR *, open_read_delegation4*);
   3346 extern  bool_t xdr_open_write_delegation4(XDR *, open_write_delegation4*);
   3347 extern  bool_t xdr_why_no_delegation4(XDR *, why_no_delegation4*);
   3348 extern  bool_t xdr_open_none_delegation4(XDR *, open_none_delegation4*);
   3349 extern  bool_t xdr_open_delegation4(XDR *, open_delegation4*);
   3350 extern  bool_t xdr_OPEN4resok(XDR *, OPEN4resok*);
   3351 extern  bool_t xdr_OPEN4res(XDR *, OPEN4res*);
   3352 extern  bool_t xdr_OPENATTR4args(XDR *, OPENATTR4args*);
   3353 extern  bool_t xdr_OPENATTR4res(XDR *, OPENATTR4res*);
   3354 extern  bool_t xdr_OPEN_CONFIRM4args(XDR *, OPEN_CONFIRM4args*);
   3355 extern  bool_t xdr_OPEN_CONFIRM4resok(XDR *, OPEN_CONFIRM4resok*);
   3356 extern  bool_t xdr_OPEN_CONFIRM4res(XDR *, OPEN_CONFIRM4res*);
   3357 extern  bool_t xdr_OPEN_DOWNGRADE4args(XDR *, OPEN_DOWNGRADE4args*);
   3358 extern  bool_t xdr_OPEN_DOWNGRADE4resok(XDR *, OPEN_DOWNGRADE4resok*);
   3359 extern  bool_t xdr_OPEN_DOWNGRADE4res(XDR *, OPEN_DOWNGRADE4res*);
   3360 extern  bool_t xdr_PUTFH4args(XDR *, PUTFH4args*);
   3361 extern  bool_t xdr_PUTFH4res(XDR *, PUTFH4res*);
   3362 extern  bool_t xdr_PUTPUBFH4res(XDR *, PUTPUBFH4res*);
   3363 extern  bool_t xdr_PUTROOTFH4res(XDR *, PUTROOTFH4res*);
   3364 extern  bool_t xdr_READ4args(XDR *, READ4args*);
   3365 extern  bool_t xdr_READ4resok(XDR *, READ4resok*);
   3366 extern  bool_t xdr_READ4res(XDR *, READ4res*);
   3367 extern  bool_t xdr_READDIR4args(XDR *, READDIR4args*);
   3368 extern  bool_t xdr_entry4(XDR *, entry4*);
   3369 extern  bool_t xdr_dirlist4(XDR *, dirlist4*);
   3370 extern  bool_t xdr_READDIR4resok(XDR *, READDIR4resok*);
   3371 extern  bool_t xdr_READDIR4res(XDR *, READDIR4res*);
   3372 extern  bool_t xdr_READLINK4resok(XDR *, READLINK4resok*);
   3373 extern  bool_t xdr_READLINK4res(XDR *, READLINK4res*);
   3374 extern  bool_t xdr_REMOVE4args(XDR *, REMOVE4args*);
   3375 extern  bool_t xdr_REMOVE4resok(XDR *, REMOVE4resok*);
   3376 extern  bool_t xdr_REMOVE4res(XDR *, REMOVE4res*);
   3377 extern  bool_t xdr_RENAME4args(XDR *, RENAME4args*);
   3378 extern  bool_t xdr_RENAME4resok(XDR *, RENAME4resok*);
   3379 extern  bool_t xdr_RENAME4res(XDR *, RENAME4res*);
   3380 extern  bool_t xdr_RENEW4args(XDR *, RENEW4args*);
   3381 extern  bool_t xdr_RENEW4res(XDR *, RENEW4res*);
   3382 extern  bool_t xdr_RESTOREFH4res(XDR *, RESTOREFH4res*);
   3383 extern  bool_t xdr_SAVEFH4res(XDR *, SAVEFH4res*);
   3384 extern  bool_t xdr_SECINFO4args(XDR *, SECINFO4args*);
   3385 extern  bool_t xdr_rpc_gss_svc_t(XDR *, rpc_gss_svc_t *);
   3386 extern  bool_t xdr_rpcsec_gss_info(XDR *, rpcsec_gss_info*);
   3387 extern  bool_t xdr_secinfo4(XDR *, secinfo4*);
   3388 extern  bool_t xdr_SECINFO4resok(XDR *, SECINFO4resok*);
   3389 extern  bool_t xdr_SECINFO4res(XDR *, SECINFO4res*);
   3390 extern  bool_t xdr_SETATTR4args(XDR *, SETATTR4args*);
   3391 extern  bool_t xdr_SETATTR4res(XDR *, SETATTR4res*);
   3392 extern  bool_t xdr_SETCLIENTID4args(XDR *, SETCLIENTID4args*);
   3393 extern  bool_t xdr_SETCLIENTID4resok(XDR *, SETCLIENTID4resok*);
   3394 extern  bool_t xdr_SETCLIENTID4res(XDR *, SETCLIENTID4res*);
   3395 extern  bool_t xdr_SETCLIENTID_CONFIRM4args(XDR *, SETCLIENTID_CONFIRM4args*);
   3396 extern  bool_t xdr_SETCLIENTID_CONFIRM4res(XDR *, SETCLIENTID_CONFIRM4res*);
   3397 extern  bool_t xdr_VERIFY4args(XDR *, VERIFY4args*);
   3398 extern  bool_t xdr_VERIFY4res(XDR *, VERIFY4res*);
   3399 extern  bool_t xdr_stable_how4(XDR *, stable_how4*);
   3400 extern  bool_t xdr_WRITE4args(XDR *, WRITE4args*);
   3401 extern  bool_t xdr_WRITE4resok(XDR *, WRITE4resok*);
   3402 extern  bool_t xdr_WRITE4res(XDR *, WRITE4res*);
   3403 extern  bool_t xdr_RELEASE_LOCKOWNER4args(XDR *, RELEASE_LOCKOWNER4args*);
   3404 extern  bool_t xdr_RELEASE_LOCKOWNER4res(XDR *, RELEASE_LOCKOWNER4res*);
   3405 extern  bool_t xdr_ILLEGAL4res(XDR *, ILLEGAL4res*);
   3406 extern  bool_t xdr_gsshandle4_t(XDR *, gsshandle4_t *);
   3407 extern  bool_t xdr_gss_cb_handles4(XDR *, gss_cb_handles4*);
   3408 extern  bool_t xdr_callback_sec_parms4(XDR *, callback_sec_parms4*);
   3409 extern  bool_t xdr_BACKCHANNEL_CTL4args(XDR *, BACKCHANNEL_CTL4args*);
   3410 extern  bool_t xdr_BACKCHANNEL_CTL4res(XDR *, BACKCHANNEL_CTL4res*);
   3411 extern  bool_t xdr_channel_dir_from_client4(XDR *,
   3412 					channel_dir_from_client4*);
   3413 extern  bool_t xdr_BIND_CONN_TO_SESSION4args(XDR *,
   3414 					BIND_CONN_TO_SESSION4args*);
   3415 extern  bool_t xdr_channel_dir_from_server4(XDR *,
   3416 					channel_dir_from_server4*);
   3417 extern  bool_t xdr_BIND_CONN_TO_SESSION4resok(XDR *,
   3418 					BIND_CONN_TO_SESSION4resok*);
   3419 extern  bool_t xdr_BIND_CONN_TO_SESSION4res(XDR *,
   3420 					BIND_CONN_TO_SESSION4res*);
   3421 extern  bool_t xdr_state_protect_ops4(XDR *, state_protect_ops4*);
   3422 extern  bool_t xdr_ssv_sp_parms4(XDR *, ssv_sp_parms4*);
   3423 extern  bool_t xdr_state_protect_how4(XDR *, state_protect_how4*);
   3424 extern  bool_t xdr_state_protect4_a(XDR *, state_protect4_a*);
   3425 extern  bool_t xdr_EXCHANGE_ID4args(XDR *, EXCHANGE_ID4args*);
   3426 extern  bool_t xdr_ssv_prot_info4(XDR *, ssv_prot_info4*);
   3427 extern  bool_t xdr_state_protect4_r(XDR *, state_protect4_r*);
   3428 extern  bool_t xdr_EXCHANGE_ID4resok(XDR *, EXCHANGE_ID4resok*);
   3429 extern  bool_t xdr_EXCHANGE_ID4res(XDR *, EXCHANGE_ID4res*);
   3430 extern  bool_t xdr_channel_attrs4(XDR *, channel_attrs4*);
   3431 extern  bool_t xdr_CREATE_SESSION4args(XDR *, CREATE_SESSION4args*);
   3432 extern  bool_t xdr_CREATE_SESSION4resok(XDR *, CREATE_SESSION4resok*);
   3433 extern  bool_t xdr_CREATE_SESSION4res(XDR *, CREATE_SESSION4res*);
   3434 extern  bool_t xdr_DESTROY_SESSION4args(XDR *, DESTROY_SESSION4args*);
   3435 extern  bool_t xdr_DESTROY_SESSION4res(XDR *, DESTROY_SESSION4res*);
   3436 extern  bool_t xdr_FREE_STATEID4args(XDR *, FREE_STATEID4args*);
   3437 extern  bool_t xdr_FREE_STATEID4res(XDR *, FREE_STATEID4res*);
   3438 extern  bool_t xdr_attr_notice4(XDR *, attr_notice4*);
   3439 extern  bool_t xdr_GET_DIR_DELEGATION4args(XDR *, GET_DIR_DELEGATION4args*);
   3440 extern  bool_t xdr_GET_DIR_DELEGATION4resok(XDR *, GET_DIR_DELEGATION4resok*);
   3441 extern  bool_t xdr_gddrnf4_status(XDR *, gddrnf4_status*);
   3442 extern  bool_t xdr_GET_DIR_DELEGATION4res_non_fatal(XDR *,
   3443 					GET_DIR_DELEGATION4res_non_fatal*);
   3444 extern  bool_t xdr_GET_DIR_DELEGATION4res(XDR *, GET_DIR_DELEGATION4res*);
   3445 extern  bool_t xdr_GETDEVICEINFO4args(XDR *, GETDEVICEINFO4args*);
   3446 extern  bool_t xdr_GETDEVICEINFO4resok(XDR *, GETDEVICEINFO4resok*);
   3447 extern  bool_t xdr_GETDEVICEINFO4res(XDR *, GETDEVICEINFO4res*);
   3448 extern  bool_t xdr_GETDEVICELIST4args(XDR *, GETDEVICELIST4args*);
   3449 extern  bool_t xdr_GETDEVICELIST4resok(XDR *, GETDEVICELIST4resok*);
   3450 extern  bool_t xdr_GETDEVICELIST4res(XDR *, GETDEVICELIST4res*);
   3451 extern  bool_t xdr_newtime4(XDR *, newtime4*);
   3452 extern  bool_t xdr_newoffset4(XDR *, newoffset4*);
   3453 extern  bool_t xdr_LAYOUTCOMMIT4args(XDR *, LAYOUTCOMMIT4args*);
   3454 extern  bool_t xdr_newsize4(XDR *, newsize4*);
   3455 extern  bool_t xdr_LAYOUTCOMMIT4resok(XDR *, LAYOUTCOMMIT4resok*);
   3456 extern  bool_t xdr_LAYOUTCOMMIT4res(XDR *, LAYOUTCOMMIT4res*);
   3457 extern  bool_t xdr_LAYOUTGET4args(XDR *, LAYOUTGET4args*);
   3458 extern  bool_t xdr_LAYOUTGET4resok(XDR *, LAYOUTGET4resok*);
   3459 extern  bool_t xdr_LAYOUTGET4res(XDR *, LAYOUTGET4res*);
   3460 extern  bool_t xdr_LAYOUTRETURN4args(XDR *, LAYOUTRETURN4args*);
   3461 extern  bool_t xdr_layoutreturn_stateid(XDR *, layoutreturn_stateid*);
   3462 extern  bool_t xdr_LAYOUTRETURN4res(XDR *, LAYOUTRETURN4res*);
   3463 extern  bool_t xdr_secinfo_style4(XDR *, secinfo_style4*);
   3464 extern  bool_t xdr_SECINFO_NO_NAME4args(XDR *, SECINFO_NO_NAME4args*);
   3465 extern  bool_t xdr_SECINFO_NO_NAME4res(XDR *, SECINFO_NO_NAME4res*);
   3466 extern  bool_t xdr_SEQUENCE4args(XDR *, SEQUENCE4args*);
   3467 extern  bool_t xdr_SEQUENCE4resok(XDR *, SEQUENCE4resok*);
   3468 extern  bool_t xdr_SEQUENCE4res(XDR *, SEQUENCE4res*);
   3469 extern  bool_t xdr_ssa_digest_input4(XDR *, ssa_digest_input4*);
   3470 extern  bool_t xdr_SET_SSV4args(XDR *, SET_SSV4args*);
   3471 extern  bool_t xdr_ssr_digest_input4(XDR *, ssr_digest_input4*);
   3472 extern  bool_t xdr_SET_SSV4resok(XDR *, SET_SSV4resok*);
   3473 extern  bool_t xdr_SET_SSV4res(XDR *, SET_SSV4res*);
   3474 extern  bool_t xdr_TEST_STATEID4args(XDR *, TEST_STATEID4args*);
   3475 extern  bool_t xdr_TEST_STATEID4resok(XDR *, TEST_STATEID4resok*);
   3476 extern  bool_t xdr_TEST_STATEID4res(XDR *, TEST_STATEID4res*);
   3477 extern  bool_t xdr_deleg_claim4(XDR *, deleg_claim4*);
   3478 extern  bool_t xdr_WANT_DELEGATION4args(XDR *, WANT_DELEGATION4args*);
   3479 extern  bool_t xdr_WANT_DELEGATION4res(XDR *, WANT_DELEGATION4res*);
   3480 extern  bool_t xdr_DESTROY_CLIENTID4args(XDR *, DESTROY_CLIENTID4args*);
   3481 extern  bool_t xdr_DESTROY_CLIENTID4res(XDR *, DESTROY_CLIENTID4res*);
   3482 extern  bool_t xdr_RECLAIM_COMPLETE4args(XDR *, RECLAIM_COMPLETE4args*);
   3483 extern  bool_t xdr_RECLAIM_COMPLETE4res(XDR *, RECLAIM_COMPLETE4res*);
   3484 extern  bool_t xdr_nfs_opnum4(XDR *, nfs_opnum4*);
   3485 extern  bool_t xdr_nfs_argop4(XDR *, nfs_argop4*);
   3486 extern  bool_t xdr_nfs_resop4(XDR *, nfs_resop4*);
   3487 extern  bool_t xdr_COMPOUND4args(XDR *, COMPOUND4args*);
   3488 extern  bool_t xdr_COMPOUND4res(XDR *, COMPOUND4res*);
   3489 extern  bool_t xdr_CB_GETATTR4args(XDR *, CB_GETATTR4args*);
   3490 extern  bool_t xdr_CB_GETATTR4resok(XDR *, CB_GETATTR4resok*);
   3491 extern  bool_t xdr_CB_GETATTR4res(XDR *, CB_GETATTR4res*);
   3492 extern  bool_t xdr_CB_RECALL4args(XDR *, CB_RECALL4args*);
   3493 extern  bool_t xdr_CB_RECALL4res(XDR *, CB_RECALL4res*);
   3494 extern  bool_t xdr_CB_ILLEGAL4res(XDR *, CB_ILLEGAL4res*);
   3495 extern  bool_t xdr_layoutrecall_type4(XDR *, layoutrecall_type4*);
   3496 extern  bool_t xdr_layoutrecall_file4(XDR *, layoutrecall_file4*);
   3497 extern  bool_t xdr_layoutrecall4(XDR *, layoutrecall4*);
   3498 extern  bool_t xdr_CB_LAYOUTRECALL4args(XDR *, CB_LAYOUTRECALL4args*);
   3499 extern  bool_t xdr_CB_LAYOUTRECALL4res(XDR *, CB_LAYOUTRECALL4res*);
   3500 extern  bool_t xdr_notify_type4(XDR *, notify_type4*);
   3501 extern  bool_t xdr_notify_entry4(XDR *, notify_entry4*);
   3502 extern  bool_t xdr_prev_entry4(XDR *, prev_entry4*);
   3503 extern  bool_t xdr_notify_remove4(XDR *, notify_remove4*);
   3504 extern  bool_t xdr_notify_add4(XDR *, notify_add4*);
   3505 extern  bool_t xdr_notify_attr4(XDR *, notify_attr4*);
   3506 extern  bool_t xdr_notify_rename4(XDR *, notify_rename4*);
   3507 extern  bool_t xdr_notify_verifier4(XDR *, notify_verifier4*);
   3508 extern  bool_t xdr_notifylist4(XDR *, notifylist4*);
   3509 extern  bool_t xdr_notify4(XDR *, notify4*);
   3510 extern  bool_t xdr_CB_NOTIFY4args(XDR *, CB_NOTIFY4args*);
   3511 extern  bool_t xdr_CB_NOTIFY4res(XDR *, CB_NOTIFY4res*);
   3512 extern  bool_t xdr_CB_PUSH_DELEG4args(XDR *, CB_PUSH_DELEG4args*);
   3513 extern  bool_t xdr_CB_PUSH_DELEG4res(XDR *, CB_PUSH_DELEG4res*);
   3514 extern  bool_t xdr_CB_RECALL_ANY4args(XDR *, CB_RECALL_ANY4args*);
   3515 extern  bool_t xdr_CB_RECALL_ANY4res(XDR *, CB_RECALL_ANY4res*);
   3516 extern  bool_t xdr_CB_RECALLABLE_OBJ_AVAIL4args(XDR *,
   3517 					CB_RECALLABLE_OBJ_AVAIL4args*);
   3518 extern  bool_t xdr_CB_RECALLABLE_OBJ_AVAIL4res(XDR *,
   3519 					CB_RECALLABLE_OBJ_AVAIL4res*);
   3520 extern  bool_t xdr_CB_RECALL_SLOT4args(XDR *, CB_RECALL_SLOT4args*);
   3521 extern  bool_t xdr_CB_RECALL_SLOT4res(XDR *, CB_RECALL_SLOT4res*);
   3522 extern  bool_t xdr_referring_call4(XDR *, referring_call4*);
   3523 extern  bool_t xdr_referring_call_list4(XDR *, referring_call_list4*);
   3524 extern  bool_t xdr_CB_SEQUENCE4args(XDR *, CB_SEQUENCE4args*);
   3525 extern  bool_t xdr_CB_SEQUENCE4resok(XDR *, CB_SEQUENCE4resok*);
   3526 extern  bool_t xdr_CB_SEQUENCE4res(XDR *, CB_SEQUENCE4res*);
   3527 extern  bool_t xdr_CB_WANTS_CANCELLED4args(XDR *, CB_WANTS_CANCELLED4args*);
   3528 extern  bool_t xdr_CB_WANTS_CANCELLED4res(XDR *, CB_WANTS_CANCELLED4res*);
   3529 extern  bool_t xdr_CB_NOTIFY_LOCK4args(XDR *, CB_NOTIFY_LOCK4args*);
   3530 extern  bool_t xdr_CB_NOTIFY_LOCK4res(XDR *, CB_NOTIFY_LOCK4res*);
   3531 extern  bool_t xdr_notify_deviceid_type4(XDR *, notify_deviceid_type4*);
   3532 extern  bool_t xdr_notify_deviceid_delete4(XDR *, notify_deviceid_delete4*);
   3533 extern  bool_t xdr_notify_deviceid_change4(XDR *, notify_deviceid_change4*);
   3534 extern  bool_t xdr_CB_NOTIFY_DEVICEID4args(XDR *, CB_NOTIFY_DEVICEID4args*);
   3535 extern  bool_t xdr_CB_NOTIFY_DEVICEID4res(XDR *, CB_NOTIFY_DEVICEID4res*);
   3536 extern  bool_t xdr_nfs_cb_opnum4(XDR *, nfs_cb_opnum4*);
   3537 extern  bool_t xdr_nfs_cb_argop4(XDR *, nfs_cb_argop4*);
   3538 extern  bool_t xdr_nfs_cb_resop4(XDR *, nfs_cb_resop4*);
   3539 extern  bool_t xdr_CB_COMPOUND4args(XDR *, CB_COMPOUND4args*);
   3540 extern  bool_t xdr_CB_COMPOUND4res(XDR *, CB_COMPOUND4res*);
   3541 
   3542 #else /* K&R C */
   3543 extern bool_t xdr_nfs_ftype4();
   3544 extern bool_t xdr_nfsstat4();
   3545 extern bool_t xdr_attrlist4();
   3546 extern bool_t xdr_bitmap4();
   3547 extern bool_t xdr_changeid4();
   3548 extern bool_t xdr_clientid4();
   3549 extern bool_t xdr_count4();
   3550 extern bool_t xdr_length4();
   3551 extern bool_t xdr_mode4();
   3552 extern bool_t xdr_nfs_cookie4();
   3553 extern bool_t xdr_nfs_fh4();
   3554 extern bool_t xdr_offset4();
   3555 extern bool_t xdr_qop4();
   3556 extern bool_t xdr_sec_oid4();
   3557 extern bool_t xdr_sequenceid4();
   3558 extern bool_t xdr_seqid4();
   3559 extern bool_t xdr_sessionid4();
   3560 extern bool_t xdr_slotid4();
   3561 extern bool_t xdr_utf8string();
   3562 extern bool_t xdr_utf8str_cis();
   3563 extern bool_t xdr_utf8str_cs();
   3564 extern bool_t xdr_utf8str_mixed();
   3565 extern bool_t xdr_component4();
   3566 extern bool_t xdr_linktext4();
   3567 extern bool_t xdr_pathname4();
   3568 extern bool_t xdr_verifier4();
   3569 extern bool_t xdr_nfstime4();
   3570 extern bool_t xdr_time_how4();
   3571 extern bool_t xdr_settime4();
   3572 extern bool_t xdr_nfs_lease4();
   3573 extern bool_t xdr_fsid4();
   3574 extern bool_t xdr_change_policy4();
   3575 extern bool_t xdr_fs_location4();
   3576 extern bool_t xdr_fs_locations4();
   3577 extern bool_t xdr_acetype4();
   3578 extern bool_t xdr_aceflag4();
   3579 extern bool_t xdr_acemask4();
   3580 extern bool_t xdr_nfsace4();
   3581 extern bool_t xdr_aclflag4();
   3582 extern bool_t xdr_nfsacl41();
   3583 extern bool_t xdr_mode_masked4();
   3584 extern bool_t xdr_specdata4();
   3585 extern bool_t xdr_netaddr4();
   3586 extern bool_t xdr_nfs_impl_id4();
   3587 extern bool_t xdr_stateid4();
   3588 extern bool_t xdr_layouttype4();
   3589 extern bool_t xdr_layout_content4();
   3590 extern bool_t xdr_layouthint4();
   3591 extern bool_t xdr_layoutiomode4();
   3592 extern bool_t xdr_layout4();
   3593 extern bool_t xdr_deviceid4();
   3594 extern bool_t xdr_device_addr4();
   3595 extern bool_t xdr_layoutupdate4();
   3596 extern bool_t xdr_layoutreturn_type4();
   3597 extern bool_t xdr_layoutreturn_file4();
   3598 extern bool_t xdr_layoutreturn4();
   3599 extern bool_t xdr_fs4_status_type();
   3600 extern bool_t xdr_fs4_status();
   3601 extern bool_t xdr_threshold4_read_size();
   3602 extern bool_t xdr_threshold4_write_size();
   3603 extern bool_t xdr_threshold4_read_iosize();
   3604 extern bool_t xdr_threshold4_write_iosize();
   3605 extern bool_t xdr_threshold_item4();
   3606 extern bool_t xdr_mdsthreshold4();
   3607 extern bool_t xdr_retention_get4();
   3608 extern bool_t xdr_retention_set4();
   3609 extern bool_t xdr_fs_charset_cap4();
   3610 extern bool_t xdr_fattr4_supported_attrs();
   3611 extern bool_t xdr_fattr4_suppattr_exclcreat();
   3612 extern bool_t xdr_fattr4_type();
   3613 extern bool_t xdr_fattr4_fh_expire_type();
   3614 extern bool_t xdr_fattr4_change();
   3615 extern bool_t xdr_fattr4_size();
   3616 extern bool_t xdr_fattr4_link_support();
   3617 extern bool_t xdr_fattr4_symlink_support();
   3618 extern bool_t xdr_fattr4_named_attr();
   3619 extern bool_t xdr_fattr4_fsid();
   3620 extern bool_t xdr_fattr4_unique_handles();
   3621 extern bool_t xdr_fattr4_lease_time();
   3622 extern bool_t xdr_fattr4_rdattr_error();
   3623 extern bool_t xdr_fattr4_acl();
   3624 extern bool_t xdr_fattr4_aclsupport();
   3625 extern bool_t xdr_fattr4_archive();
   3626 extern bool_t xdr_fattr4_cansettime();
   3627 extern bool_t xdr_fattr4_case_insensitive();
   3628 extern bool_t xdr_fattr4_case_preserving();
   3629 extern bool_t xdr_fattr4_chown_restricted();
   3630 extern bool_t xdr_fattr4_fileid();
   3631 extern bool_t xdr_fattr4_files_avail();
   3632 extern bool_t xdr_fattr4_filehandle();
   3633 extern bool_t xdr_fattr4_files_free();
   3634 extern bool_t xdr_fattr4_files_total();
   3635 extern bool_t xdr_fattr4_fs_locations();
   3636 extern bool_t xdr_fattr4_hidden();
   3637 extern bool_t xdr_fattr4_homogeneous();
   3638 extern bool_t xdr_fattr4_maxfilesize();
   3639 extern bool_t xdr_fattr4_maxlink();
   3640 extern bool_t xdr_fattr4_maxname();
   3641 extern bool_t xdr_fattr4_maxread();
   3642 extern bool_t xdr_fattr4_maxwrite();
   3643 extern bool_t xdr_fattr4_mimetype();
   3644 extern bool_t xdr_fattr4_mode();
   3645 extern bool_t xdr_fattr4_mode_set_masked();
   3646 extern bool_t xdr_fattr4_mounted_on_fileid();
   3647 extern bool_t xdr_fattr4_no_trunc();
   3648 extern bool_t xdr_fattr4_numlinks();
   3649 extern bool_t xdr_fattr4_owner();
   3650 extern bool_t xdr_fattr4_owner_group();
   3651 extern bool_t xdr_fattr4_quota_avail_hard();
   3652 extern bool_t xdr_fattr4_quota_avail_soft();
   3653 extern bool_t xdr_fattr4_quota_used();
   3654 extern bool_t xdr_fattr4_rawdev();
   3655 extern bool_t xdr_fattr4_space_avail();
   3656 extern bool_t xdr_fattr4_space_free();
   3657 extern bool_t xdr_fattr4_space_total();
   3658 extern bool_t xdr_fattr4_space_used();
   3659 extern bool_t xdr_fattr4_system();
   3660 extern bool_t xdr_fattr4_time_access();
   3661 extern bool_t xdr_fattr4_time_access_set();
   3662 extern bool_t xdr_fattr4_time_backup();
   3663 extern bool_t xdr_fattr4_time_create();
   3664 extern bool_t xdr_fattr4_time_delta();
   3665 extern bool_t xdr_fattr4_time_metadata();
   3666 extern bool_t xdr_fattr4_time_modify();
   3667 extern bool_t xdr_fattr4_time_modify_set();
   3668 extern bool_t xdr_fattr4_dir_notif_delay();
   3669 extern bool_t xdr_fattr4_dirent_notif_delay();
   3670 extern bool_t xdr_fattr4_absent();
   3671 extern bool_t xdr_fattr4_fs_layout_types();
   3672 extern bool_t xdr_fattr4_fs_status();
   3673 extern bool_t xdr_fattr4_fs_charset_cap4();
   3674 extern bool_t xdr_fattr4_layout_alignment();
   3675 extern bool_t xdr_fattr4_layout_blksize();
   3676 extern bool_t xdr_fattr4_layout_hint();
   3677 extern bool_t xdr_fattr4_layout_types();
   3678 extern bool_t xdr_fattr4_mdsthreshold();
   3679 extern bool_t xdr_fattr4_retention_get();
   3680 extern bool_t xdr_fattr4_retention_set();
   3681 extern bool_t xdr_fattr4_retentevt_get();
   3682 extern bool_t xdr_fattr4_retentevt_set();
   3683 extern bool_t xdr_fattr4_retention_hold();
   3684 extern bool_t xdr_fattr4_dacl();
   3685 extern bool_t xdr_fattr4_sacl();
   3686 extern bool_t xdr_fattr4();
   3687 extern bool_t xdr_change_info4();
   3688 extern bool_t xdr_clientaddr4();
   3689 extern bool_t xdr_cb_client4();
   3690 extern bool_t xdr_nfs_client_id4();
   3691 extern bool_t xdr_client_owner4();
   3692 extern bool_t xdr_server_owner4();
   3693 extern bool_t xdr_state_owner4();
   3694 extern bool_t xdr_open_owner4();
   3695 extern bool_t xdr_lock_owner4();
   3696 extern bool_t xdr_nfs_lock_type4();
   3697 extern bool_t xdr_ssv_subkey4();
   3698 extern bool_t xdr_ssv_mic_plain_tkn4();
   3699 extern bool_t xdr_ssv_mic_tkn4();
   3700 extern bool_t xdr_ssv_seal_plain_tkn4();
   3701 extern bool_t xdr_ssv_seal_cipher_tkn4();
   3702 extern bool_t xdr_fs_locations_server4();
   3703 extern bool_t xdr_fs_locations_item4();
   3704 extern bool_t xdr_fs_locations_info4();
   3705 extern bool_t xdr_fattr4_fs_locations_info();
   3706 extern bool_t xdr_nfl_util4();
   3707 extern bool_t xdr_filelayout_hint_care4();
   3708 extern bool_t xdr_nfsv4_1_file_layouthint4();
   3709 extern bool_t xdr_multipath_list4();
   3710 extern bool_t xdr_nfsv4_1_file_layout_ds_addr4();
   3711 extern bool_t xdr_nfsv4_1_file_layout4();
   3712 extern bool_t xdr_ACCESS4args();
   3713 extern bool_t xdr_ACCESS4resok();
   3714 extern bool_t xdr_ACCESS4res();
   3715 extern bool_t xdr_CLOSE4args();
   3716 extern bool_t xdr_CLOSE4res();
   3717 extern bool_t xdr_COMMIT4args();
   3718 extern bool_t xdr_COMMIT4resok();
   3719 extern bool_t xdr_COMMIT4res();
   3720 extern bool_t xdr_createtype4();
   3721 extern bool_t xdr_CREATE4args();
   3722 extern bool_t xdr_CREATE4resok();
   3723 extern bool_t xdr_CREATE4res();
   3724 extern bool_t xdr_DELEGPURGE4args();
   3725 extern bool_t xdr_DELEGPURGE4res();
   3726 extern bool_t xdr_DELEGRETURN4args();
   3727 extern bool_t xdr_DELEGRETURN4res();
   3728 extern bool_t xdr_GETATTR4args();
   3729 extern bool_t xdr_GETATTR4resok();
   3730 extern bool_t xdr_GETATTR4res();
   3731 extern bool_t xdr_GETFH4resok();
   3732 extern bool_t xdr_GETFH4res();
   3733 extern bool_t xdr_LINK4args();
   3734 extern bool_t xdr_LINK4resok();
   3735 extern bool_t xdr_LINK4res();
   3736 extern bool_t xdr_open_to_lock_owner4();
   3737 extern bool_t xdr_exist_lock_owner4();
   3738 extern bool_t xdr_locker4();
   3739 extern bool_t xdr_LOCK4args();
   3740 extern bool_t xdr_LOCK4denied();
   3741 extern bool_t xdr_LOCK4resok();
   3742 extern bool_t xdr_LOCK4res();
   3743 extern bool_t xdr_LOCKT4args();
   3744 extern bool_t xdr_LOCKT4res();
   3745 extern bool_t xdr_LOCKU4args();
   3746 extern bool_t xdr_LOCKU4res();
   3747 extern bool_t xdr_LOOKUP4args();
   3748 extern bool_t xdr_LOOKUP4res();
   3749 extern bool_t xdr_LOOKUPP4res();
   3750 extern bool_t xdr_NVERIFY4args();
   3751 extern bool_t xdr_NVERIFY4res();
   3752 extern bool_t xdr_createmode4();
   3753 extern bool_t xdr_creatverfattr();
   3754 extern bool_t xdr_createhow4();
   3755 extern bool_t xdr_opentype4();
   3756 extern bool_t xdr_openflag4();
   3757 extern bool_t xdr_limit_by4();
   3758 extern bool_t xdr_nfs_modified_limit4();
   3759 extern bool_t xdr_nfs_space_limit4();
   3760 extern bool_t xdr_open_delegation_type4();
   3761 extern bool_t xdr_open_claim_type4();
   3762 extern bool_t xdr_open_claim_delegate_cur4();
   3763 extern bool_t xdr_open_claim4();
   3764 extern bool_t xdr_OPEN4args();
   3765 extern bool_t xdr_open_read_delegation4();
   3766 extern bool_t xdr_open_write_delegation4();
   3767 extern bool_t xdr_why_no_delegation4();
   3768 extern bool_t xdr_open_none_delegation4();
   3769 extern bool_t xdr_open_delegation4();
   3770 extern bool_t xdr_OPEN4resok();
   3771 extern bool_t xdr_OPEN4res();
   3772 extern bool_t xdr_OPENATTR4args();
   3773 extern bool_t xdr_OPENATTR4res();
   3774 extern bool_t xdr_OPEN_CONFIRM4args();
   3775 extern bool_t xdr_OPEN_CONFIRM4resok();
   3776 extern bool_t xdr_OPEN_CONFIRM4res();
   3777 extern bool_t xdr_OPEN_DOWNGRADE4args();
   3778 extern bool_t xdr_OPEN_DOWNGRADE4resok();
   3779 extern bool_t xdr_OPEN_DOWNGRADE4res();
   3780 extern bool_t xdr_PUTFH4args();
   3781 extern bool_t xdr_PUTFH4res();
   3782 extern bool_t xdr_PUTPUBFH4res();
   3783 extern bool_t xdr_PUTROOTFH4res();
   3784 extern bool_t xdr_READ4args();
   3785 extern bool_t xdr_READ4resok();
   3786 extern bool_t xdr_READ4res();
   3787 extern bool_t xdr_READDIR4args();
   3788 extern bool_t xdr_entry4();
   3789 extern bool_t xdr_dirlist4();
   3790 extern bool_t xdr_READDIR4resok();
   3791 extern bool_t xdr_READDIR4res();
   3792 extern bool_t xdr_READLINK4resok();
   3793 extern bool_t xdr_READLINK4res();
   3794 extern bool_t xdr_REMOVE4args();
   3795 extern bool_t xdr_REMOVE4resok();
   3796 extern bool_t xdr_REMOVE4res();
   3797 extern bool_t xdr_RENAME4args();
   3798 extern bool_t xdr_RENAME4resok();
   3799 extern bool_t xdr_RENAME4res();
   3800 extern bool_t xdr_RENEW4args();
   3801 extern bool_t xdr_RENEW4res();
   3802 extern bool_t xdr_RESTOREFH4res();
   3803 extern bool_t xdr_SAVEFH4res();
   3804 extern bool_t xdr_SECINFO4args();
   3805 extern bool_t xdr_rpc_gss_svc_t();
   3806 extern bool_t xdr_rpcsec_gss_info();
   3807 extern bool_t xdr_secinfo4();
   3808 extern bool_t xdr_SECINFO4resok();
   3809 extern bool_t xdr_SECINFO4res();
   3810 extern bool_t xdr_SETATTR4args();
   3811 extern bool_t xdr_SETATTR4res();
   3812 extern bool_t xdr_SETCLIENTID4args();
   3813 extern bool_t xdr_SETCLIENTID4resok();
   3814 extern bool_t xdr_SETCLIENTID4res();
   3815 extern bool_t xdr_SETCLIENTID_CONFIRM4args();
   3816 extern bool_t xdr_SETCLIENTID_CONFIRM4res();
   3817 extern bool_t xdr_VERIFY4args();
   3818 extern bool_t xdr_VERIFY4res();
   3819 extern bool_t xdr_stable_how4();
   3820 extern bool_t xdr_WRITE4args();
   3821 extern bool_t xdr_WRITE4resok();
   3822 extern bool_t xdr_WRITE4res();
   3823 extern bool_t xdr_RELEASE_LOCKOWNER4args();
   3824 extern bool_t xdr_RELEASE_LOCKOWNER4res();
   3825 extern bool_t xdr_ILLEGAL4res();
   3826 extern bool_t xdr_gsshandle4_t();
   3827 extern bool_t xdr_gss_cb_handles4();
   3828 extern bool_t xdr_callback_sec_parms4();
   3829 extern bool_t xdr_BACKCHANNEL_CTL4args();
   3830 extern bool_t xdr_BACKCHANNEL_CTL4res();
   3831 extern bool_t xdr_channel_dir_from_client4();
   3832 extern bool_t xdr_BIND_CONN_TO_SESSION4args();
   3833 extern bool_t xdr_channel_dir_from_server4();
   3834 extern bool_t xdr_BIND_CONN_TO_SESSION4resok();
   3835 extern bool_t xdr_BIND_CONN_TO_SESSION4res();
   3836 extern bool_t xdr_state_protect_ops4();
   3837 extern bool_t xdr_ssv_sp_parms4();
   3838 extern bool_t xdr_state_protect_how4();
   3839 extern bool_t xdr_state_protect4_a();
   3840 extern bool_t xdr_EXCHANGE_ID4args();
   3841 extern bool_t xdr_ssv_prot_info4();
   3842 extern bool_t xdr_state_protect4_r();
   3843 extern bool_t xdr_EXCHANGE_ID4resok();
   3844 extern bool_t xdr_EXCHANGE_ID4res();
   3845 extern bool_t xdr_channel_attrs4();
   3846 extern bool_t xdr_CREATE_SESSION4args();
   3847 extern bool_t xdr_CREATE_SESSION4resok();
   3848 extern bool_t xdr_CREATE_SESSION4res();
   3849 extern bool_t xdr_DESTROY_SESSION4args();
   3850 extern bool_t xdr_DESTROY_SESSION4res();
   3851 extern bool_t xdr_FREE_STATEID4args();
   3852 extern bool_t xdr_FREE_STATEID4res();
   3853 extern bool_t xdr_attr_notice4();
   3854 extern bool_t xdr_GET_DIR_DELEGATION4args();
   3855 extern bool_t xdr_GET_DIR_DELEGATION4resok();
   3856 extern bool_t xdr_gddrnf4_status();
   3857 extern bool_t xdr_GET_DIR_DELEGATION4res_non_fatal();
   3858 extern bool_t xdr_GET_DIR_DELEGATION4res();
   3859 extern bool_t xdr_GETDEVICEINFO4args();
   3860 extern bool_t xdr_GETDEVICEINFO4resok();
   3861 extern bool_t xdr_GETDEVICEINFO4res();
   3862 extern bool_t xdr_GETDEVICELIST4args();
   3863 extern bool_t xdr_GETDEVICELIST4resok();
   3864 extern bool_t xdr_GETDEVICELIST4res();
   3865 extern bool_t xdr_newtime4();
   3866 extern bool_t xdr_newoffset4();
   3867 extern bool_t xdr_LAYOUTCOMMIT4args();
   3868 extern bool_t xdr_newsize4();
   3869 extern bool_t xdr_LAYOUTCOMMIT4resok();
   3870 extern bool_t xdr_LAYOUTCOMMIT4res();
   3871 extern bool_t xdr_LAYOUTGET4args();
   3872 extern bool_t xdr_LAYOUTGET4resok();
   3873 extern bool_t xdr_LAYOUTGET4res();
   3874 extern bool_t xdr_LAYOUTRETURN4args();
   3875 extern bool_t xdr_layoutreturn_stateid();
   3876 extern bool_t xdr_LAYOUTRETURN4res();
   3877 extern bool_t xdr_secinfo_style4();
   3878 extern bool_t xdr_SECINFO_NO_NAME4args();
   3879 extern bool_t xdr_SECINFO_NO_NAME4res();
   3880 extern bool_t xdr_SEQUENCE4args();
   3881 extern bool_t xdr_SEQUENCE4resok();
   3882 extern bool_t xdr_SEQUENCE4res();
   3883 extern bool_t xdr_ssa_digest_input4();
   3884 extern bool_t xdr_SET_SSV4args();
   3885 extern bool_t xdr_ssr_digest_input4();
   3886 extern bool_t xdr_SET_SSV4resok();
   3887 extern bool_t xdr_SET_SSV4res();
   3888 extern bool_t xdr_TEST_STATEID4args();
   3889 extern bool_t xdr_TEST_STATEID4resok();
   3890 extern bool_t xdr_TEST_STATEID4res();
   3891 extern bool_t xdr_deleg_claim4();
   3892 extern bool_t xdr_WANT_DELEGATION4args();
   3893 extern bool_t xdr_WANT_DELEGATION4res();
   3894 extern bool_t xdr_DESTROY_CLIENTID4args();
   3895 extern bool_t xdr_DESTROY_CLIENTID4res();
   3896 extern bool_t xdr_RECLAIM_COMPLETE4args();
   3897 extern bool_t xdr_RECLAIM_COMPLETE4res();
   3898 extern bool_t xdr_nfs_opnum4();
   3899 extern bool_t xdr_nfs_argop4();
   3900 extern bool_t xdr_nfs_resop4();
   3901 extern bool_t xdr_COMPOUND4args();
   3902 extern bool_t xdr_COMPOUND4res();
   3903 extern bool_t xdr_CB_GETATTR4args();
   3904 extern bool_t xdr_CB_GETATTR4resok();
   3905 extern bool_t xdr_CB_GETATTR4res();
   3906 extern bool_t xdr_CB_RECALL4args();
   3907 extern bool_t xdr_CB_RECALL4res();
   3908 extern bool_t xdr_CB_ILLEGAL4res();
   3909 extern bool_t xdr_layoutrecall_type4();
   3910 extern bool_t xdr_layoutrecall_file4();
   3911 extern bool_t xdr_layoutrecall4();
   3912 extern bool_t xdr_CB_LAYOUTRECALL4args();
   3913 extern bool_t xdr_CB_LAYOUTRECALL4res();
   3914 extern bool_t xdr_notify_type4();
   3915 extern bool_t xdr_notify_entry4();
   3916 extern bool_t xdr_prev_entry4();
   3917 extern bool_t xdr_notify_remove4();
   3918 extern bool_t xdr_notify_add4();
   3919 extern bool_t xdr_notify_attr4();
   3920 extern bool_t xdr_notify_rename4();
   3921 extern bool_t xdr_notify_verifier4();
   3922 extern bool_t xdr_notifylist4();
   3923 extern bool_t xdr_notify4();
   3924 extern bool_t xdr_CB_NOTIFY4args();
   3925 extern bool_t xdr_CB_NOTIFY4res();
   3926 extern bool_t xdr_CB_PUSH_DELEG4args();
   3927 extern bool_t xdr_CB_PUSH_DELEG4res();
   3928 extern bool_t xdr_CB_RECALL_ANY4args();
   3929 extern bool_t xdr_CB_RECALL_ANY4res();
   3930 extern bool_t xdr_CB_RECALLABLE_OBJ_AVAIL4args();
   3931 extern bool_t xdr_CB_RECALLABLE_OBJ_AVAIL4res();
   3932 extern bool_t xdr_CB_RECALL_SLOT4args();
   3933 extern bool_t xdr_CB_RECALL_SLOT4res();
   3934 extern bool_t xdr_referring_call4();
   3935 extern bool_t xdr_referring_call_list4();
   3936 extern bool_t xdr_CB_SEQUENCE4args();
   3937 extern bool_t xdr_CB_SEQUENCE4resok();
   3938 extern bool_t xdr_CB_SEQUENCE4res();
   3939 extern bool_t xdr_CB_WANTS_CANCELLED4args();
   3940 extern bool_t xdr_CB_WANTS_CANCELLED4res();
   3941 extern bool_t xdr_CB_NOTIFY_LOCK4args();
   3942 extern bool_t xdr_CB_NOTIFY_LOCK4res();
   3943 extern bool_t xdr_notify_deviceid_type4();
   3944 extern bool_t xdr_notify_deviceid_delete4();
   3945 extern bool_t xdr_notify_deviceid_change4();
   3946 extern bool_t xdr_CB_NOTIFY_DEVICEID4args();
   3947 extern bool_t xdr_CB_NOTIFY_DEVICEID4res();
   3948 extern bool_t xdr_nfs_cb_opnum4();
   3949 extern bool_t xdr_nfs_cb_argop4();
   3950 extern bool_t xdr_nfs_cb_resop4();
   3951 extern bool_t xdr_CB_COMPOUND4args();
   3952 extern bool_t xdr_CB_COMPOUND4res();
   3953 
   3954 #endif /* K&R C */
   3955 
   3956 #ifdef __cplusplus
   3957 }
   3958 #endif
   3959 
   3960 #endif /* !_NFS4_PROT_H */
   3961