X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Fgss%2Flgss_utils.h;h=98c25c9bcb56cf2f8abc176cf37b44a3bc9feb21;hb=449186a71320e3406f6f06cc8cc89be71c016e9f;hp=51a8f4599a208f1b14e7df792fe54e87280be47b;hpb=4817574ad5a31d6dbafc2bd0dfc2b6a33851ea11;p=fs%2Flustre-release.git diff --git a/lustre/utils/gss/lgss_utils.h b/lustre/utils/gss/lgss_utils.h index 51a8f45..98c25c9 100644 --- a/lustre/utils/gss/lgss_utils.h +++ b/lustre/utils/gss/lgss_utils.h @@ -39,10 +39,13 @@ #ifndef LGSS_UTILS_H #define LGSS_UTILS_H +#include #include #include #include +#include "lsupport.h" + #define LGSS_SVC_MGS_STR "lustre_mgs" #define LGSS_SVC_MDS_STR "lustre_mds" #define LGSS_SVC_OSS_STR "lustre_oss" @@ -62,8 +65,8 @@ extern const char *lgss_svc_str[LGSS_SVC_MAX]; ****************************************/ typedef enum { - LGSS_MUTEX_KRB5 = 0, - LGSS_MUTEX_MAX + LGSS_MUTEX_KRB5 = 0, + LGSS_MUTEX_MAX } lgss_mutex_id_t; int lgss_mutex_lock(lgss_mutex_id_t mid); @@ -137,10 +140,8 @@ do { \ extern gss_OID_desc krb5oid; extern gss_OID_desc spkm3oid; - -typedef enum { - LGSS_MECH_KRB5 = 0, -} lgss_mech_t; +extern gss_OID_desc nulloid; +extern gss_OID_desc skoid; /**************************************** * client credentials * @@ -149,33 +150,31 @@ typedef enum { struct lgss_cred; struct lgss_mech_type { - char *lmt_name; - lgss_mech_t lmt_mech_n; - - int (*lmt_init)(void); - void (*lmt_fini)(void); - int (*lmt_prepare_cred)(struct lgss_cred *cred); - void (*lmt_release_cred)(struct lgss_cred *cred); - int (*lmt_using_cred)(struct lgss_cred *cred); -}; - -enum { - LGSS_ROOT_CRED_ROOT = 0x01, - LGSS_ROOT_CRED_MDT = 0x02, - LGSS_ROOT_CRED_OST = 0x04, - - LGSS_ROOT_CRED_NR = 3 + char *lmt_name; + enum lgss_mech lmt_mech_n; + + int (*lmt_init)(void); + void (*lmt_fini)(void); + int (*lmt_prepare_cred)(struct lgss_cred *cred); + void (*lmt_release_cred)(struct lgss_cred *cred); + int (*lmt_using_cred)(struct lgss_cred *cred); + int (*lmt_validate_cred)(struct lgss_cred *cred, + gss_buffer_desc *token, + gss_buffer_desc *ctx_token); }; struct lgss_cred { - int lc_uid; - unsigned int lc_root_flags; - uint64_t lc_self_nid; - uint64_t lc_tgt_nid; - uint32_t lc_tgt_svc; - - struct lgss_mech_type *lc_mech; - void *lc_mech_cred; + int lc_uid; + unsigned int lc_root_flags; + uint64_t lc_self_nid; + uint64_t lc_tgt_nid; + uint32_t lc_tgt_svc; + char lc_svc_type; + char *lc_tgt_uuid; + + struct lgss_mech_type *lc_mech; + void *lc_mech_cred; + gss_buffer_desc lc_mech_token; }; struct lgss_mech_type *lgss_name2mech(const char *mech_name); @@ -187,13 +186,11 @@ void lgss_destroy_cred(struct lgss_cred *cred); int lgss_prepare_cred(struct lgss_cred *cred); void lgss_release_cred(struct lgss_cred *cred); int lgss_using_cred(struct lgss_cred *cred); +int lgss_validate_cred(struct lgss_cred *cred, gss_buffer_desc *token, + gss_buffer_desc *ctx_token); int lgss_get_service_str(char **string, uint32_t lsvc, uint64_t tgt_nid); - -extern gss_OID_desc krb5oid; -extern gss_OID_desc spkm3oid; - static inline int gss_OID_equal(gss_OID_desc *oid1, gss_OID_desc *oid2) {