nfsv4.1 Add SEQUENCE operation
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>master
parent
a45799ca50
commit
52f905291c
|
@ -113,6 +113,16 @@ zdr_seqid4 (ZDR *zdrs, seqid4 *objp)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_slotid4 (ZDR *zdrs, slotid4 *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_uint32_t (zdrs, objp))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_utf8string (ZDR *zdrs, utf8string *objp)
|
||||
{
|
||||
|
@ -3245,6 +3255,62 @@ zdr_LAYOUTRETURN4res (ZDR *zdrs, LAYOUTRETURN4res *objp)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SEQUENCE4args (ZDR *zdrs, SEQUENCE4args *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_sessionid4 (zdrs, objp->sa_sessionid))
|
||||
return FALSE;
|
||||
if (!zdr_sequenceid4 (zdrs, &objp->sa_sequenceid))
|
||||
return FALSE;
|
||||
if (!zdr_slotid4 (zdrs, &objp->sa_slotid))
|
||||
return FALSE;
|
||||
if (!zdr_slotid4 (zdrs, &objp->sa_highest_slotid))
|
||||
return FALSE;
|
||||
if (!zdr_bool (zdrs, &objp->sa_cachethis))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SEQUENCE4resok (ZDR *zdrs, SEQUENCE4resok *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_sessionid4 (zdrs, objp->sr_sessionid))
|
||||
return FALSE;
|
||||
if (!zdr_sequenceid4 (zdrs, &objp->sr_sequenceid))
|
||||
return FALSE;
|
||||
if (!zdr_slotid4 (zdrs, &objp->sr_slotid))
|
||||
return FALSE;
|
||||
if (!zdr_slotid4 (zdrs, &objp->sr_highest_slotid))
|
||||
return FALSE;
|
||||
if (!zdr_slotid4 (zdrs, &objp->sr_target_highest_slotid))
|
||||
return FALSE;
|
||||
if (!zdr_uint32_t (zdrs, &objp->sr_status_flags))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SEQUENCE4res (ZDR *zdrs, SEQUENCE4res *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_nfsstat4 (zdrs, &objp->sr_status))
|
||||
return FALSE;
|
||||
switch (objp->sr_status) {
|
||||
case NFS4_OK:
|
||||
if (!zdr_SEQUENCE4resok (zdrs, &objp->SEQUENCE4res_u.sr_resok4))
|
||||
return FALSE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_ILLEGAL4res (ZDR *zdrs, ILLEGAL4res *objp)
|
||||
{
|
||||
|
@ -3439,6 +3505,10 @@ zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
|
|||
if (!zdr_LAYOUTRETURN4args (zdrs, &objp->nfs_argop4_u.oplayoutreturn))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SEQUENCE:
|
||||
if (!zdr_SEQUENCE4args (zdrs, &objp->nfs_argop4_u.opsequence))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_ILLEGAL:
|
||||
break;
|
||||
default:
|
||||
|
@ -3635,6 +3705,10 @@ zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
|
|||
if (!zdr_LAYOUTRETURN4res (zdrs, &objp->nfs_resop4_u.oplayoutreturn))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SEQUENCE:
|
||||
if (!zdr_SEQUENCE4res (zdrs, &objp->nfs_resop4_u.opsequence))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_ILLEGAL:
|
||||
if (!zdr_ILLEGAL4res (zdrs, &objp->nfs_resop4_u.opillegal))
|
||||
return FALSE;
|
||||
|
|
|
@ -147,6 +147,8 @@ typedef uint32_t sequenceid4;
|
|||
|
||||
typedef uint32_t seqid4;
|
||||
|
||||
typedef uint32_t slotid4;
|
||||
|
||||
typedef struct {
|
||||
u_int utf8string_len;
|
||||
char *utf8string_val;
|
||||
|
@ -1627,6 +1629,46 @@ struct LAYOUTRETURN4res {
|
|||
};
|
||||
typedef struct LAYOUTRETURN4res LAYOUTRETURN4res;
|
||||
|
||||
struct SEQUENCE4args {
|
||||
sessionid4 sa_sessionid;
|
||||
sequenceid4 sa_sequenceid;
|
||||
slotid4 sa_slotid;
|
||||
slotid4 sa_highest_slotid;
|
||||
uint32_t sa_cachethis;
|
||||
};
|
||||
typedef struct SEQUENCE4args SEQUENCE4args;
|
||||
#define SEQ4_STATUS_CB_PATH_DOWN 0x00000001
|
||||
#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002
|
||||
#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED 0x00000004
|
||||
#define SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED 0x00000008
|
||||
#define SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED 0x00000010
|
||||
#define SEQ4_STATUS_ADMIN_STATE_REVOKED 0x00000020
|
||||
#define SEQ4_STATUS_RECALLABLE_STATE_REVOKED 0x00000040
|
||||
#define SEQ4_STATUS_LEASE_MOVED 0x00000080
|
||||
#define SEQ4_STATUS_RESTART_RECLAIM_NEEDED 0x00000100
|
||||
#define SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200
|
||||
#define SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400
|
||||
#define SEQ4_STATUS_DEVID_CHANGED 0x00000800
|
||||
#define SEQ4_STATUS_DEVID_DELETED 0x00001000
|
||||
|
||||
struct SEQUENCE4resok {
|
||||
sessionid4 sr_sessionid;
|
||||
sequenceid4 sr_sequenceid;
|
||||
slotid4 sr_slotid;
|
||||
slotid4 sr_highest_slotid;
|
||||
slotid4 sr_target_highest_slotid;
|
||||
uint32_t sr_status_flags;
|
||||
};
|
||||
typedef struct SEQUENCE4resok SEQUENCE4resok;
|
||||
|
||||
struct SEQUENCE4res {
|
||||
nfsstat4 sr_status;
|
||||
union {
|
||||
SEQUENCE4resok sr_resok4;
|
||||
} SEQUENCE4res_u;
|
||||
};
|
||||
typedef struct SEQUENCE4res SEQUENCE4res;
|
||||
|
||||
struct ILLEGAL4res {
|
||||
nfsstat4 status;
|
||||
};
|
||||
|
@ -1679,6 +1721,7 @@ enum nfs_opnum4 {
|
|||
OP_LAYOUTCOMMIT = 49,
|
||||
OP_LAYOUTGET = 50,
|
||||
OP_LAYOUTRETURN = 51,
|
||||
OP_SEQUENCE = 53,
|
||||
OP_ILLEGAL = 10044,
|
||||
};
|
||||
typedef enum nfs_opnum4 nfs_opnum4;
|
||||
|
@ -1724,6 +1767,7 @@ struct nfs_argop4 {
|
|||
LAYOUTCOMMIT4args oplayoutcommit;
|
||||
LAYOUTGET4args oplayoutget;
|
||||
LAYOUTRETURN4args oplayoutreturn;
|
||||
SEQUENCE4args opsequence;
|
||||
} nfs_argop4_u;
|
||||
};
|
||||
typedef struct nfs_argop4 nfs_argop4;
|
||||
|
@ -1776,6 +1820,7 @@ struct nfs_resop4 {
|
|||
LAYOUTCOMMIT4res oplayoutcommit;
|
||||
LAYOUTGET4res oplayoutget;
|
||||
LAYOUTRETURN4res oplayoutreturn;
|
||||
SEQUENCE4res opsequence;
|
||||
ILLEGAL4res opillegal;
|
||||
} nfs_resop4_u;
|
||||
};
|
||||
|
@ -1940,6 +1985,7 @@ extern uint32_t zdr_length4 (ZDR *, length4*);
|
|||
extern uint32_t zdr_clientid4 (ZDR *, clientid4*);
|
||||
extern uint32_t zdr_sequenceid4 (ZDR *, sequenceid4*);
|
||||
extern uint32_t zdr_seqid4 (ZDR *, seqid4*);
|
||||
extern uint32_t zdr_slotid4 (ZDR *, slotid4*);
|
||||
extern uint32_t zdr_utf8string (ZDR *, utf8string*);
|
||||
extern uint32_t zdr_utf8str_cis (ZDR *, utf8str_cis*);
|
||||
extern uint32_t zdr_utf8str_cs (ZDR *, utf8str_cs*);
|
||||
|
@ -2181,6 +2227,9 @@ extern uint32_t zdr_layoutreturn4 (ZDR *, layoutreturn4*);
|
|||
extern uint32_t zdr_LAYOUTRETURN4args (ZDR *, LAYOUTRETURN4args*);
|
||||
extern uint32_t zdr_layoutreturn_stateid (ZDR *, layoutreturn_stateid*);
|
||||
extern uint32_t zdr_LAYOUTRETURN4res (ZDR *, LAYOUTRETURN4res*);
|
||||
extern uint32_t zdr_SEQUENCE4args (ZDR *, SEQUENCE4args*);
|
||||
extern uint32_t zdr_SEQUENCE4resok (ZDR *, SEQUENCE4resok*);
|
||||
extern uint32_t zdr_SEQUENCE4res (ZDR *, SEQUENCE4res*);
|
||||
extern uint32_t zdr_ILLEGAL4res (ZDR *, ILLEGAL4res*);
|
||||
extern uint32_t zdr_nfs_opnum4 (ZDR *, nfs_opnum4*);
|
||||
extern uint32_t zdr_nfs_argop4 (ZDR *, nfs_argop4*);
|
||||
|
@ -2209,6 +2258,7 @@ extern uint32_t zdr_length4 ();
|
|||
extern uint32_t zdr_clientid4 ();
|
||||
extern uint32_t zdr_sequenceid4 ();
|
||||
extern uint32_t zdr_seqid4 ();
|
||||
extern uint32_t zdr_slotid4 ();
|
||||
extern uint32_t zdr_utf8string ();
|
||||
extern uint32_t zdr_utf8str_cis ();
|
||||
extern uint32_t zdr_utf8str_cs ();
|
||||
|
@ -2450,6 +2500,9 @@ extern uint32_t zdr_layoutreturn4 ();
|
|||
extern uint32_t zdr_LAYOUTRETURN4args ();
|
||||
extern uint32_t zdr_layoutreturn_stateid ();
|
||||
extern uint32_t zdr_LAYOUTRETURN4res ();
|
||||
extern uint32_t zdr_SEQUENCE4args ();
|
||||
extern uint32_t zdr_SEQUENCE4resok ();
|
||||
extern uint32_t zdr_SEQUENCE4res ();
|
||||
extern uint32_t zdr_ILLEGAL4res ();
|
||||
extern uint32_t zdr_nfs_opnum4 ();
|
||||
extern uint32_t zdr_nfs_argop4 ();
|
||||
|
|
45
nfs4/nfs4.x
45
nfs4/nfs4.x
|
@ -133,6 +133,7 @@ typedef uint64_t length4;
|
|||
typedef uint64_t clientid4;
|
||||
typedef uint32_t sequenceid4;
|
||||
typedef uint32_t seqid4;
|
||||
typedef uint32_t slotid4;
|
||||
typedef opaque utf8string<>;
|
||||
typedef utf8string utf8str_cis;
|
||||
typedef utf8string utf8str_cs;
|
||||
|
@ -1742,6 +1743,47 @@ default:
|
|||
void;
|
||||
};
|
||||
|
||||
/*
|
||||
* SEQUENCE
|
||||
*/
|
||||
struct SEQUENCE4args {
|
||||
sessionid4 sa_sessionid;
|
||||
sequenceid4 sa_sequenceid;
|
||||
slotid4 sa_slotid;
|
||||
slotid4 sa_highest_slotid;
|
||||
bool sa_cachethis;
|
||||
};
|
||||
|
||||
const SEQ4_STATUS_CB_PATH_DOWN = 0x00000001;
|
||||
const SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING = 0x00000002;
|
||||
const SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED = 0x00000004;
|
||||
const SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED = 0x00000008;
|
||||
const SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED = 0x00000010;
|
||||
const SEQ4_STATUS_ADMIN_STATE_REVOKED = 0x00000020;
|
||||
const SEQ4_STATUS_RECALLABLE_STATE_REVOKED = 0x00000040;
|
||||
const SEQ4_STATUS_LEASE_MOVED = 0x00000080;
|
||||
const SEQ4_STATUS_RESTART_RECLAIM_NEEDED = 0x00000100;
|
||||
const SEQ4_STATUS_CB_PATH_DOWN_SESSION = 0x00000200;
|
||||
const SEQ4_STATUS_BACKCHANNEL_FAULT = 0x00000400;
|
||||
const SEQ4_STATUS_DEVID_CHANGED = 0x00000800;
|
||||
const SEQ4_STATUS_DEVID_DELETED = 0x00001000;
|
||||
|
||||
struct SEQUENCE4resok {
|
||||
sessionid4 sr_sessionid;
|
||||
sequenceid4 sr_sequenceid;
|
||||
slotid4 sr_slotid;
|
||||
slotid4 sr_highest_slotid;
|
||||
slotid4 sr_target_highest_slotid;
|
||||
uint32_t sr_status_flags;
|
||||
};
|
||||
|
||||
union SEQUENCE4res switch (nfsstat4 sr_status) {
|
||||
case NFS4_OK:
|
||||
SEQUENCE4resok sr_resok4;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
/*
|
||||
* ILLEGAL: Response for illegal operation numbers
|
||||
*/
|
||||
|
@ -1800,6 +1842,7 @@ enum nfs_opnum4 {
|
|||
OP_LAYOUTCOMMIT = 49,
|
||||
OP_LAYOUTGET = 50,
|
||||
OP_LAYOUTRETURN = 51,
|
||||
OP_SEQUENCE = 53,
|
||||
OP_ILLEGAL = 10044
|
||||
};
|
||||
|
||||
|
@ -1854,6 +1897,7 @@ union nfs_argop4 switch (nfs_opnum4 argop) {
|
|||
case OP_LAYOUTCOMMIT: LAYOUTCOMMIT4args oplayoutcommit;
|
||||
case OP_LAYOUTGET: LAYOUTGET4args oplayoutget;
|
||||
case OP_LAYOUTRETURN: LAYOUTRETURN4args oplayoutreturn;
|
||||
case OP_SEQUENCE: SEQUENCE4args opsequence;
|
||||
case OP_ILLEGAL: void;
|
||||
};
|
||||
|
||||
|
@ -1908,6 +1952,7 @@ union nfs_resop4 switch (nfs_opnum4 resop){
|
|||
case OP_LAYOUTCOMMIT: LAYOUTCOMMIT4res oplayoutcommit;
|
||||
case OP_LAYOUTGET: LAYOUTGET4res oplayoutget;
|
||||
case OP_LAYOUTRETURN: LAYOUTRETURN4res oplayoutreturn;
|
||||
case OP_SEQUENCE: SEQUENCE4res opsequence;
|
||||
case OP_ILLEGAL: ILLEGAL4res opillegal;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue