nfsv4.1 Add TEST_STATEID operation

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
master
Ronnie Sahlberg 2020-06-08 14:18:26 +10:00
parent 523df1eee4
commit d690031049
3 changed files with 102 additions and 0 deletions

View File

@ -3371,6 +3371,46 @@ zdr_SET_SSV4res (ZDR *zdrs, SET_SSV4res *objp)
return TRUE;
}
uint32_t
zdr_TEST_STATEID4args (ZDR *zdrs, TEST_STATEID4args *objp)
{
if (!zdr_array (zdrs, (char **)&objp->ts_stateids.ts_stateids_val, (u_int *) &objp->ts_stateids.ts_stateids_len, ~0,
sizeof (stateid4), (zdrproc_t) zdr_stateid4))
return FALSE;
return TRUE;
}
uint32_t
zdr_TEST_STATEID4resok (ZDR *zdrs, TEST_STATEID4resok *objp)
{
if (!zdr_array (zdrs, (char **)&objp->tsr_status_codes.tsr_status_codes_val, (u_int *) &objp->tsr_status_codes.tsr_status_codes_len, ~0,
sizeof (nfsstat4), (zdrproc_t) zdr_nfsstat4))
return FALSE;
return TRUE;
}
uint32_t
zdr_TEST_STATEID4res (ZDR *zdrs, TEST_STATEID4res *objp)
{
if (!zdr_nfsstat4 (zdrs, &objp->tsr_status))
return FALSE;
switch (objp->tsr_status) {
case NFS4_OK:
if (!zdr_TEST_STATEID4resok (zdrs, &objp->TEST_STATEID4res_u.tsr_resok4))
return FALSE;
break;
default:
break;
}
return TRUE;
}
uint32_t
zdr_ILLEGAL4res (ZDR *zdrs, ILLEGAL4res *objp)
{
@ -3573,6 +3613,10 @@ zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
if (!zdr_SET_SSV4args (zdrs, &objp->nfs_argop4_u.opsetssv))
return FALSE;
break;
case OP_TEST_STATEID:
if (!zdr_TEST_STATEID4args (zdrs, &objp->nfs_argop4_u.opteststateid))
return FALSE;
break;
case OP_ILLEGAL:
break;
default:
@ -3777,6 +3821,10 @@ zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
if (!zdr_SET_SSV4res (zdrs, &objp->nfs_resop4_u.opsetssv))
return FALSE;
break;
case OP_TEST_STATEID:
if (!zdr_TEST_STATEID4res (zdrs, &objp->nfs_resop4_u.opteststateid))
return FALSE;
break;
case OP_ILLEGAL:
if (!zdr_ILLEGAL4res (zdrs, &objp->nfs_resop4_u.opillegal))
return FALSE;

View File

@ -1707,6 +1707,30 @@ struct SET_SSV4res {
};
typedef struct SET_SSV4res SET_SSV4res;
struct TEST_STATEID4args {
struct {
u_int ts_stateids_len;
stateid4 *ts_stateids_val;
} ts_stateids;
};
typedef struct TEST_STATEID4args TEST_STATEID4args;
struct TEST_STATEID4resok {
struct {
u_int tsr_status_codes_len;
nfsstat4 *tsr_status_codes_val;
} tsr_status_codes;
};
typedef struct TEST_STATEID4resok TEST_STATEID4resok;
struct TEST_STATEID4res {
nfsstat4 tsr_status;
union {
TEST_STATEID4resok tsr_resok4;
} TEST_STATEID4res_u;
};
typedef struct TEST_STATEID4res TEST_STATEID4res;
struct ILLEGAL4res {
nfsstat4 status;
};
@ -1761,6 +1785,7 @@ enum nfs_opnum4 {
OP_LAYOUTRETURN = 51,
OP_SEQUENCE = 53,
OP_SET_SSV = 54,
OP_TEST_STATEID = 55,
OP_ILLEGAL = 10044,
};
typedef enum nfs_opnum4 nfs_opnum4;
@ -1808,6 +1833,7 @@ struct nfs_argop4 {
LAYOUTRETURN4args oplayoutreturn;
SEQUENCE4args opsequence;
SET_SSV4args opsetssv;
TEST_STATEID4args opteststateid;
} nfs_argop4_u;
};
typedef struct nfs_argop4 nfs_argop4;
@ -1862,6 +1888,7 @@ struct nfs_resop4 {
LAYOUTRETURN4res oplayoutreturn;
SEQUENCE4res opsequence;
SET_SSV4res opsetssv;
TEST_STATEID4res opteststateid;
ILLEGAL4res opillegal;
} nfs_resop4_u;
};
@ -2276,6 +2303,9 @@ extern uint32_t zdr_SET_SSV4args (ZDR *, SET_SSV4args*);
extern uint32_t zdr_ssr_digest_input4 (ZDR *, ssr_digest_input4*);
extern uint32_t zdr_SET_SSV4resok (ZDR *, SET_SSV4resok*);
extern uint32_t zdr_SET_SSV4res (ZDR *, SET_SSV4res*);
extern uint32_t zdr_TEST_STATEID4args (ZDR *, TEST_STATEID4args*);
extern uint32_t zdr_TEST_STATEID4resok (ZDR *, TEST_STATEID4resok*);
extern uint32_t zdr_TEST_STATEID4res (ZDR *, TEST_STATEID4res*);
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*);
@ -2554,6 +2584,9 @@ extern uint32_t zdr_SET_SSV4args ();
extern uint32_t zdr_ssr_digest_input4 ();
extern uint32_t zdr_SET_SSV4resok ();
extern uint32_t zdr_SET_SSV4res ();
extern uint32_t zdr_TEST_STATEID4args ();
extern uint32_t zdr_TEST_STATEID4resok ();
extern uint32_t zdr_TEST_STATEID4res ();
extern uint32_t zdr_ILLEGAL4res ();
extern uint32_t zdr_nfs_opnum4 ();
extern uint32_t zdr_nfs_argop4 ();

View File

@ -1811,6 +1811,24 @@ default:
void;
};
/*
* TEST_STATEID
*/
struct TEST_STATEID4args {
stateid4 ts_stateids<>;
};
struct TEST_STATEID4resok {
nfsstat4 tsr_status_codes<>;
};
union TEST_STATEID4res switch (nfsstat4 tsr_status) {
case NFS4_OK:
TEST_STATEID4resok tsr_resok4;
default:
void;
};
/*
* ILLEGAL: Response for illegal operation numbers
*/
@ -1871,6 +1889,7 @@ enum nfs_opnum4 {
OP_LAYOUTRETURN = 51,
OP_SEQUENCE = 53,
OP_SET_SSV = 54,
OP_TEST_STATEID = 55,
OP_ILLEGAL = 10044
};
@ -1927,6 +1946,7 @@ union nfs_argop4 switch (nfs_opnum4 argop) {
case OP_LAYOUTRETURN: LAYOUTRETURN4args oplayoutreturn;
case OP_SEQUENCE: SEQUENCE4args opsequence;
case OP_SET_SSV: SET_SSV4args opsetssv;
case OP_TEST_STATEID: TEST_STATEID4args opteststateid;
case OP_ILLEGAL: void;
};
@ -1983,6 +2003,7 @@ union nfs_resop4 switch (nfs_opnum4 resop){
case OP_LAYOUTRETURN: LAYOUTRETURN4res oplayoutreturn;
case OP_SEQUENCE: SEQUENCE4res opsequence;
case OP_SET_SSV: SET_SSV4res opsetssv;
case OP_TEST_STATEID: TEST_STATEID4res opteststateid;
case OP_ILLEGAL: ILLEGAL4res opillegal;
};