nfs4.1: Minimal SP4_MACH_CRED implementation
This is a minimal client side implementation of SP4_MACH_CRED. It will attempt to negotiate SP4_MACH_CRED iff the EXCHANGE_ID is using krb5i or krb5p auth. SP4_MACH_CRED will be used if the server supports the minimal operations: BIND_CONN_TO_SESSION EXCHANGE_ID CREATE_SESSION DESTROY_SESSION DESTROY_CLIENTID This patch only includes the EXCHANGE_ID negotiation code because the client will already use the machine cred for these operations. If the server doesn't support SP4_MACH_CRED or doesn't support the minimal operations, the exchange id will be resent with SP4_NONE. Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:

committed by
Trond Myklebust

parent
92cb6c5be8
commit
2031cd1af1
@@ -1107,6 +1107,23 @@ struct pnfs_ds_commit_info {
|
||||
struct pnfs_commit_bucket *buckets;
|
||||
};
|
||||
|
||||
#define NFS4_OP_MAP_NUM_LONGS \
|
||||
DIV_ROUND_UP(LAST_NFS4_OP, 8 * sizeof(unsigned long))
|
||||
#define NFS4_OP_MAP_NUM_WORDS \
|
||||
(NFS4_OP_MAP_NUM_LONGS * sizeof(unsigned long) / sizeof(u32))
|
||||
struct nfs4_op_map {
|
||||
union {
|
||||
unsigned long longs[NFS4_OP_MAP_NUM_LONGS];
|
||||
u32 words[NFS4_OP_MAP_NUM_WORDS];
|
||||
} u;
|
||||
};
|
||||
|
||||
struct nfs41_state_protection {
|
||||
u32 how;
|
||||
struct nfs4_op_map enforce;
|
||||
struct nfs4_op_map allow;
|
||||
};
|
||||
|
||||
#define NFS4_EXCHANGE_ID_LEN (48)
|
||||
struct nfs41_exchange_id_args {
|
||||
struct nfs_client *client;
|
||||
@@ -1114,6 +1131,7 @@ struct nfs41_exchange_id_args {
|
||||
unsigned int id_len;
|
||||
char id[NFS4_EXCHANGE_ID_LEN];
|
||||
u32 flags;
|
||||
struct nfs41_state_protection state_protect;
|
||||
};
|
||||
|
||||
struct nfs41_server_owner {
|
||||
@@ -1146,6 +1164,7 @@ struct nfs41_exchange_id_res {
|
||||
struct nfs41_server_owner *server_owner;
|
||||
struct nfs41_server_scope *server_scope;
|
||||
struct nfs41_impl_id *impl_id;
|
||||
struct nfs41_state_protection state_protect;
|
||||
};
|
||||
|
||||
struct nfs41_create_session_args {
|
||||
|
Reference in New Issue
Block a user