2 * Modifications for Lustre
4 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
6 * Author: Eric Mei <ericm@clusterfs.com>
9 #ifndef LGSS_KRB5_UTILS_H
10 #define LGSS_KRB5_UTILS_H
18 #include "lgss_utils.h"
20 extern struct lgss_mech_type lgss_mech_null;
21 extern struct lgss_mech_type lgss_mech_krb5;
22 extern struct lgss_mech_type lgss_mech_sk;
24 #define LGSS_DEFAULT_CRED_DIR "/tmp"
25 #define LGSS_USER_CRED_DIR "/run/user/%U"
26 #define LGSS_DEFAULT_CRED_PREFIX "krb5cc"
28 extern char *lgss_client_realm;
31 * convenient macros, these perhaps need further cleanup
35 #define KEYTAB_ENTRY_MATCH(kte, name) \
37 (kte).principal->data[0].length == (sizeof(name)-1) && \
38 strncmp((kte).principal->data[0].data, (name), sizeof(name)-1) == 0 \
41 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
42 krb5_free_unparsed_name((ctx), (name));
44 #define KRB5_STRDUP(str) \
45 strndup((str).data, (str).length)
47 #define KRB5_STRCMP(str, name) \
49 (str)->length != strlen(name) || \
50 strncmp((str)->data, (name), (str)->length) != 0 \
53 #define KRB5_STRCASECMP(str, name) \
55 (str)->length != strlen(name) || \
56 strncasecmp((str)->data, (name), (str)->length) != 0 \
60 char *lgss_krb5_strdup(krb5_data *kstr)
62 return strndup(kstr->data, kstr->length);
66 int lgss_krb5_strcmp(krb5_data *kstr, const char *str)
68 return (kstr->length != strlen(str) ||
69 memcmp(kstr->data, str, kstr->length) != 0);
73 int lgss_krb5_strcasecmp(krb5_data *kstr, const char *str)
75 return (kstr->length != strlen(str) ||
76 strncasecmp(kstr->data, str, kstr->length) != 0);
79 #else /* !HAVE_KRB5 */
81 #define KEYTAB_ENTRY_MATCH(kte, name) \
83 strlen((kte).principal->name.name_string.val[0]) == \
85 strncmp(kte.principal->name.name_string.val[0], (name), \
86 sizeof(name)-1) == 0 \
89 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
92 #define KRB5_STRDUP(str) \
95 #define KRB5_STRCMP(str, name) \
98 #define KRB5_STRCASECMP(str, name) \
101 #endif /* HAVE_KRB5 */
103 #endif /* LGSS_KRB5_UTILS_H */