nfsv4.1 Add SECINFO[_NO_NAME] operations
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>master
parent
da2a3dd9d3
commit
c5d022b638
|
@ -2453,6 +2453,87 @@ zdr_SAVEFH4res (ZDR *zdrs, SAVEFH4res *objp)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SECINFO4args (ZDR *zdrs, SECINFO4args *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_component4 (zdrs, &objp->name))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_rpc_gss_svc_t (ZDR *zdrs, rpc_gss_svc_t *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_enum (zdrs, (enum_t *) objp))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_rpcsec_gss_info (ZDR *zdrs, rpcsec_gss_info *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_sec_oid4 (zdrs, &objp->oid))
|
||||
return FALSE;
|
||||
if (!zdr_qop4 (zdrs, &objp->qop))
|
||||
return FALSE;
|
||||
if (!zdr_rpc_gss_svc_t (zdrs, &objp->service))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_secinfo4 (ZDR *zdrs, secinfo4 *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_uint32_t (zdrs, &objp->flavor))
|
||||
return FALSE;
|
||||
switch (objp->flavor) {
|
||||
case RPCSEC_GSS:
|
||||
if (!zdr_rpcsec_gss_info (zdrs, &objp->secinfo4_u.flavor_info))
|
||||
return FALSE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SECINFO4resok (ZDR *zdrs, SECINFO4resok *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_array (zdrs, (char **)&objp->SECINFO4resok_val, (u_int *) &objp->SECINFO4resok_len, ~0,
|
||||
sizeof (secinfo4), (zdrproc_t) zdr_secinfo4))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SECINFO4res (ZDR *zdrs, SECINFO4res *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_nfsstat4 (zdrs, &objp->status))
|
||||
return FALSE;
|
||||
switch (objp->status) {
|
||||
case NFS4_OK:
|
||||
if (!zdr_SECINFO4resok (zdrs, &objp->SECINFO4res_u.resok4))
|
||||
return FALSE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SETATTR4args (ZDR *zdrs, SETATTR4args *objp)
|
||||
{
|
||||
|
@ -3255,6 +3336,36 @@ zdr_LAYOUTRETURN4res (ZDR *zdrs, LAYOUTRETURN4res *objp)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_secinfo_style4 (ZDR *zdrs, secinfo_style4 *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_enum (zdrs, (enum_t *) objp))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SECINFO_NO_NAME4args (ZDR *zdrs, SECINFO_NO_NAME4args *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_secinfo_style4 (zdrs, objp))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SECINFO_NO_NAME4res (ZDR *zdrs, SECINFO_NO_NAME4res *objp)
|
||||
{
|
||||
|
||||
|
||||
if (!zdr_SECINFO4res (zdrs, objp))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
zdr_SEQUENCE4args (ZDR *zdrs, SEQUENCE4args *objp)
|
||||
{
|
||||
|
@ -3637,6 +3748,10 @@ zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
|
|||
break;
|
||||
case OP_SAVEFH:
|
||||
break;
|
||||
case OP_SECINFO:
|
||||
if (!zdr_SECINFO4args (zdrs, &objp->nfs_argop4_u.opsecinfo))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SETATTR:
|
||||
if (!zdr_SETATTR4args (zdrs, &objp->nfs_argop4_u.opsetattr))
|
||||
return FALSE;
|
||||
|
@ -3697,6 +3812,10 @@ zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
|
|||
if (!zdr_LAYOUTRETURN4args (zdrs, &objp->nfs_argop4_u.oplayoutreturn))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SECINFO_NO_NAME:
|
||||
if (!zdr_SECINFO_NO_NAME4args (zdrs, &objp->nfs_argop4_u.opsecinfononame))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SEQUENCE:
|
||||
if (!zdr_SEQUENCE4args (zdrs, &objp->nfs_argop4_u.opsequence))
|
||||
return FALSE;
|
||||
|
@ -3857,6 +3976,10 @@ zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
|
|||
if (!zdr_SAVEFH4res (zdrs, &objp->nfs_resop4_u.opsavefh))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SECINFO:
|
||||
if (!zdr_SECINFO4res (zdrs, &objp->nfs_resop4_u.opsecinfo))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SETATTR:
|
||||
if (!zdr_SETATTR4res (zdrs, &objp->nfs_resop4_u.opsetattr))
|
||||
return FALSE;
|
||||
|
@ -3917,6 +4040,10 @@ zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
|
|||
if (!zdr_LAYOUTRETURN4res (zdrs, &objp->nfs_resop4_u.oplayoutreturn))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SECINFO_NO_NAME:
|
||||
if (!zdr_SECINFO_NO_NAME4res (zdrs, &objp->nfs_resop4_u.opsecinfononame))
|
||||
return FALSE;
|
||||
break;
|
||||
case OP_SEQUENCE:
|
||||
if (!zdr_SEQUENCE4res (zdrs, &objp->nfs_resop4_u.opsequence))
|
||||
return FALSE;
|
||||
|
|
|
@ -1232,6 +1232,47 @@ struct SAVEFH4res {
|
|||
};
|
||||
typedef struct SAVEFH4res SAVEFH4res;
|
||||
|
||||
struct SECINFO4args {
|
||||
component4 name;
|
||||
};
|
||||
typedef struct SECINFO4args SECINFO4args;
|
||||
|
||||
enum rpc_gss_svc_t {
|
||||
RPC_GSS_SVC_NONE = 1,
|
||||
RPC_GSS_SVC_INTEGRITY = 2,
|
||||
RPC_GSS_SVC_PRIVACY = 3,
|
||||
};
|
||||
typedef enum rpc_gss_svc_t rpc_gss_svc_t;
|
||||
|
||||
struct rpcsec_gss_info {
|
||||
sec_oid4 oid;
|
||||
qop4 qop;
|
||||
rpc_gss_svc_t service;
|
||||
};
|
||||
typedef struct rpcsec_gss_info rpcsec_gss_info;
|
||||
#define RPCSEC_GSS 6
|
||||
|
||||
struct secinfo4 {
|
||||
uint32_t flavor;
|
||||
union {
|
||||
rpcsec_gss_info flavor_info;
|
||||
} secinfo4_u;
|
||||
};
|
||||
typedef struct secinfo4 secinfo4;
|
||||
|
||||
typedef struct {
|
||||
u_int SECINFO4resok_len;
|
||||
secinfo4 *SECINFO4resok_val;
|
||||
} SECINFO4resok;
|
||||
|
||||
struct SECINFO4res {
|
||||
nfsstat4 status;
|
||||
union {
|
||||
SECINFO4resok resok4;
|
||||
} SECINFO4res_u;
|
||||
};
|
||||
typedef struct SECINFO4res SECINFO4res;
|
||||
|
||||
struct SETATTR4args {
|
||||
stateid4 stateid;
|
||||
fattr4 obj_attributes;
|
||||
|
@ -1632,6 +1673,16 @@ struct LAYOUTRETURN4res {
|
|||
};
|
||||
typedef struct LAYOUTRETURN4res LAYOUTRETURN4res;
|
||||
|
||||
enum secinfo_style4 {
|
||||
SECINFO_STYLE4_CURRENT_FH = 0,
|
||||
SECINFO_STYLE4_PARENT = 1,
|
||||
};
|
||||
typedef enum secinfo_style4 secinfo_style4;
|
||||
|
||||
typedef secinfo_style4 SECINFO_NO_NAME4args;
|
||||
|
||||
typedef SECINFO4res SECINFO_NO_NAME4res;
|
||||
|
||||
struct SEQUENCE4args {
|
||||
sessionid4 sa_sessionid;
|
||||
sequenceid4 sa_sequenceid;
|
||||
|
@ -1828,6 +1879,7 @@ enum nfs_opnum4 {
|
|||
OP_LAYOUTCOMMIT = 49,
|
||||
OP_LAYOUTGET = 50,
|
||||
OP_LAYOUTRETURN = 51,
|
||||
OP_SECINFO_NO_NAME = 52,
|
||||
OP_SEQUENCE = 53,
|
||||
OP_SET_SSV = 54,
|
||||
OP_TEST_STATEID = 55,
|
||||
|
@ -1864,6 +1916,7 @@ struct nfs_argop4 {
|
|||
REMOVE4args opremove;
|
||||
RENAME4args oprename;
|
||||
RENEW4args oprenew;
|
||||
SECINFO4args opsecinfo;
|
||||
SETATTR4args opsetattr;
|
||||
SETCLIENTID4args opsetclientid;
|
||||
SETCLIENTID_CONFIRM4args opsetclientid_confirm;
|
||||
|
@ -1879,6 +1932,7 @@ struct nfs_argop4 {
|
|||
LAYOUTCOMMIT4args oplayoutcommit;
|
||||
LAYOUTGET4args oplayoutget;
|
||||
LAYOUTRETURN4args oplayoutreturn;
|
||||
SECINFO_NO_NAME4args opsecinfononame;
|
||||
SEQUENCE4args opsequence;
|
||||
SET_SSV4args opsetssv;
|
||||
TEST_STATEID4args opteststateid;
|
||||
|
@ -1922,6 +1976,7 @@ struct nfs_resop4 {
|
|||
RENEW4res oprenew;
|
||||
RESTOREFH4res oprestorefh;
|
||||
SAVEFH4res opsavefh;
|
||||
SECINFO4res opsecinfo;
|
||||
SETATTR4res opsetattr;
|
||||
SETCLIENTID4res opsetclientid;
|
||||
SETCLIENTID_CONFIRM4res opsetclientid_confirm;
|
||||
|
@ -1937,6 +1992,7 @@ struct nfs_resop4 {
|
|||
LAYOUTCOMMIT4res oplayoutcommit;
|
||||
LAYOUTGET4res oplayoutget;
|
||||
LAYOUTRETURN4res oplayoutreturn;
|
||||
SECINFO_NO_NAME4res opsecinfononame;
|
||||
SEQUENCE4res opsequence;
|
||||
SET_SSV4res opsetssv;
|
||||
TEST_STATEID4res opteststateid;
|
||||
|
@ -2298,6 +2354,12 @@ extern uint32_t zdr_RENEW4args (ZDR *, RENEW4args*);
|
|||
extern uint32_t zdr_RENEW4res (ZDR *, RENEW4res*);
|
||||
extern uint32_t zdr_RESTOREFH4res (ZDR *, RESTOREFH4res*);
|
||||
extern uint32_t zdr_SAVEFH4res (ZDR *, SAVEFH4res*);
|
||||
extern uint32_t zdr_SECINFO4args (ZDR *, SECINFO4args*);
|
||||
extern uint32_t zdr_rpc_gss_svc_t (ZDR *, rpc_gss_svc_t*);
|
||||
extern uint32_t zdr_rpcsec_gss_info (ZDR *, rpcsec_gss_info*);
|
||||
extern uint32_t zdr_secinfo4 (ZDR *, secinfo4*);
|
||||
extern uint32_t zdr_SECINFO4resok (ZDR *, SECINFO4resok*);
|
||||
extern uint32_t zdr_SECINFO4res (ZDR *, SECINFO4res*);
|
||||
extern uint32_t zdr_SETATTR4args (ZDR *, SETATTR4args*);
|
||||
extern uint32_t zdr_SETATTR4res (ZDR *, SETATTR4res*);
|
||||
extern uint32_t zdr_SETCLIENTID4args (ZDR *, SETCLIENTID4args*);
|
||||
|
@ -2349,6 +2411,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_secinfo_style4 (ZDR *, secinfo_style4*);
|
||||
extern uint32_t zdr_SECINFO_NO_NAME4args (ZDR *, SECINFO_NO_NAME4args*);
|
||||
extern uint32_t zdr_SECINFO_NO_NAME4res (ZDR *, SECINFO_NO_NAME4res*);
|
||||
extern uint32_t zdr_SEQUENCE4args (ZDR *, SEQUENCE4args*);
|
||||
extern uint32_t zdr_SEQUENCE4resok (ZDR *, SEQUENCE4resok*);
|
||||
extern uint32_t zdr_SEQUENCE4res (ZDR *, SEQUENCE4res*);
|
||||
|
@ -2586,6 +2651,12 @@ extern uint32_t zdr_RENEW4args ();
|
|||
extern uint32_t zdr_RENEW4res ();
|
||||
extern uint32_t zdr_RESTOREFH4res ();
|
||||
extern uint32_t zdr_SAVEFH4res ();
|
||||
extern uint32_t zdr_SECINFO4args ();
|
||||
extern uint32_t zdr_rpc_gss_svc_t ();
|
||||
extern uint32_t zdr_rpcsec_gss_info ();
|
||||
extern uint32_t zdr_secinfo4 ();
|
||||
extern uint32_t zdr_SECINFO4resok ();
|
||||
extern uint32_t zdr_SECINFO4res ();
|
||||
extern uint32_t zdr_SETATTR4args ();
|
||||
extern uint32_t zdr_SETATTR4res ();
|
||||
extern uint32_t zdr_SETCLIENTID4args ();
|
||||
|
@ -2637,6 +2708,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_secinfo_style4 ();
|
||||
extern uint32_t zdr_SECINFO_NO_NAME4args ();
|
||||
extern uint32_t zdr_SECINFO_NO_NAME4res ();
|
||||
extern uint32_t zdr_SEQUENCE4args ();
|
||||
extern uint32_t zdr_SEQUENCE4resok ();
|
||||
extern uint32_t zdr_SEQUENCE4res ();
|
||||
|
|
29
nfs4/nfs4.x
29
nfs4/nfs4.x
|
@ -1297,19 +1297,13 @@ struct SAVEFH4res {
|
|||
nfsstat4 status;
|
||||
};
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* SECINFO: Obtain Available Security Mechanisms
|
||||
*/
|
||||
struct SECINFO4args {
|
||||
/* CURRENT_FH: directory */
|
||||
component4 name;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
* From RFC 2203
|
||||
*/
|
||||
enum rpc_gss_svc_t {
|
||||
RPC_GSS_SVC_NONE = 1,
|
||||
RPC_GSS_SVC_INTEGRITY = 2,
|
||||
|
@ -1322,7 +1316,8 @@ struct rpcsec_gss_info {
|
|||
rpc_gss_svc_t service;
|
||||
};
|
||||
|
||||
/* RPCSEC_GSS has a value of '6' - See RFC 2203 */
|
||||
const RPCSEC_GSS = 6;
|
||||
|
||||
union secinfo4 switch (uint32_t flavor) {
|
||||
case RPCSEC_GSS:
|
||||
rpcsec_gss_info flavor_info;
|
||||
|
@ -1338,7 +1333,6 @@ union SECINFO4res switch (nfsstat4 status) {
|
|||
default:
|
||||
void;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SETATTR: Set attributes
|
||||
|
@ -1746,6 +1740,18 @@ default:
|
|||
void;
|
||||
};
|
||||
|
||||
/*
|
||||
* SECINFO_NO_NAME
|
||||
*/
|
||||
enum secinfo_style4 {
|
||||
SECINFO_STYLE4_CURRENT_FH = 0,
|
||||
SECINFO_STYLE4_PARENT = 1
|
||||
};
|
||||
|
||||
typedef secinfo_style4 SECINFO_NO_NAME4args;
|
||||
|
||||
typedef SECINFO4res SECINFO_NO_NAME4res;
|
||||
|
||||
/*
|
||||
* SEQUENCE
|
||||
*/
|
||||
|
@ -1936,6 +1942,7 @@ enum nfs_opnum4 {
|
|||
OP_LAYOUTCOMMIT = 49,
|
||||
OP_LAYOUTGET = 50,
|
||||
OP_LAYOUTRETURN = 51,
|
||||
OP_SECINFO_NO_NAME = 52,
|
||||
OP_SEQUENCE = 53,
|
||||
OP_SET_SSV = 54,
|
||||
OP_TEST_STATEID = 55,
|
||||
|
@ -1976,9 +1983,7 @@ union nfs_argop4 switch (nfs_opnum4 argop) {
|
|||
case OP_RENEW: RENEW4args oprenew;
|
||||
case OP_RESTOREFH: void;
|
||||
case OP_SAVEFH: void;
|
||||
#if 0
|
||||
case OP_SECINFO: SECINFO4args opsecinfo;
|
||||
#endif
|
||||
case OP_SETATTR: SETATTR4args opsetattr;
|
||||
case OP_SETCLIENTID: SETCLIENTID4args opsetclientid;
|
||||
case OP_SETCLIENTID_CONFIRM: SETCLIENTID_CONFIRM4args
|
||||
|
@ -1996,6 +2001,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_SECINFO_NO_NAME: SECINFO_NO_NAME4args opsecinfononame;
|
||||
case OP_SEQUENCE: SEQUENCE4args opsequence;
|
||||
case OP_SET_SSV: SET_SSV4args opsetssv;
|
||||
case OP_TEST_STATEID: TEST_STATEID4args opteststateid;
|
||||
|
@ -2036,9 +2042,7 @@ union nfs_resop4 switch (nfs_opnum4 resop){
|
|||
case OP_RENEW: RENEW4res oprenew;
|
||||
case OP_RESTOREFH: RESTOREFH4res oprestorefh;
|
||||
case OP_SAVEFH: SAVEFH4res opsavefh;
|
||||
#if 0
|
||||
case OP_SECINFO: SECINFO4res opsecinfo;
|
||||
#endif
|
||||
case OP_SETATTR: SETATTR4res opsetattr;
|
||||
case OP_SETCLIENTID: SETCLIENTID4res opsetclientid;
|
||||
case OP_SETCLIENTID_CONFIRM: SETCLIENTID_CONFIRM4res
|
||||
|
@ -2056,6 +2060,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_SECINFO_NO_NAME: SECINFO_NO_NAME4res opsecinfononame;
|
||||
case OP_SEQUENCE: SEQUENCE4res opsequence;
|
||||
case OP_SET_SSV: SET_SSV4res opsetssv;
|
||||
case OP_TEST_STATEID: TEST_STATEID4res opteststateid;
|
||||
|
|
Loading…
Reference in New Issue