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_krb5;
23 * convenient macros, these perhaps need further cleanup
27 #define KEYTAB_ENTRY_MATCH(kte, name) \
29 (kte).principal->data[0].length == (sizeof(name)-1) && \
30 strncmp((kte).principal->data[0].data, (name), sizeof(name)-1) == 0 \
33 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
34 krb5_free_unparsed_name((ctx), (name));
36 #define KRB5_STRDUP(str) \
37 strndup((str).data, (str).length)
39 #define KRB5_STRCMP(str, name) \
41 (str)->length != strlen(name) || \
42 strncmp((str)->data, (name), (str)->length) != 0 \
45 #define KRB5_STRCASECMP(str, name) \
47 (str)->length != strlen(name) || \
48 strncasecmp((str)->data, (name), (str)->length) != 0 \
52 char *lgss_krb5_strdup(krb5_data *kstr)
54 return strndup(kstr->data, kstr->length);
58 int lgss_krb5_strcmp(krb5_data *kstr, const char *str)
60 return (kstr->length != strlen(str) ||
61 memcmp(kstr->data, str, kstr->length) != 0);
65 int lgss_krb5_strcasecmp(krb5_data *kstr, const char *str)
67 return (kstr->length != strlen(str) ||
68 strncasecmp(kstr->data, str, kstr->length) != 0);
71 #else /* !HAVE_KRB5 */
73 #define KEYTAB_ENTRY_MATCH(kte, name) \
75 strlen((kte).principal->name.name_string.val[0]) == \
77 strncmp(kte.principal->name.name_string.val[0], (name), \
78 sizeof(name)-1) == 0 \
81 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
84 #define KRB5_STRDUP(str) \
87 #define KRB5_STRCMP(str, name) \
90 #define KRB5_STRCASECMP(str, name) \
93 #endif /* HAVE_KRB5 */
95 #endif /* LGSS_KRB5_UTILS_H */