1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Modifications for Lustre
5 * Copyright 2007, Cluster File Systems, Inc.
7 * Author: Eric Mei <ericm@clusterfs.com>
10 #ifndef LGSS_KRB5_UTILS_H
11 #define LGSS_KRB5_UTILS_H
19 #include "lgss_utils.h"
21 extern struct lgss_mech_type lgss_mech_krb5;
24 * convenient macros, these perhaps need further cleanup
28 #define KEYTAB_ENTRY_MATCH(kte, name) \
30 (kte).principal->data[0].length == (sizeof(name)-1) && \
31 strncmp((kte).principal->data[0].data, (name), sizeof(name)-1) == 0 \
34 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
35 krb5_free_unparsed_name((ctx), (name));
37 #define KRB5_STRDUP(str) \
38 strndup((str).data, (str).length)
40 #define KRB5_STRCMP(str, name) \
42 (str)->length != strlen(name) || \
43 strncmp((str)->data, (name), (str)->length) != 0 \
46 #define KRB5_STRCASECMP(str, name) \
48 (str)->length != strlen(name) || \
49 strncasecmp((str)->data, (name), (str)->length) != 0 \
53 char *lgss_krb5_strdup(krb5_data *kstr)
55 return strndup(kstr->data, kstr->length);
59 int lgss_krb5_strcmp(krb5_data *kstr, const char *str)
61 return (kstr->length != strlen(str) ||
62 memcmp(kstr->data, str, kstr->length) != 0);
66 int lgss_krb5_strcasecmp(krb5_data *kstr, const char *str)
68 return (kstr->length != strlen(str) ||
69 strncasecmp(kstr->data, str, kstr->length) != 0);
72 #else /* !HAVE_KRB5 */
74 #define KEYTAB_ENTRY_MATCH(kte, name) \
76 strlen((kte).principal->name.name_string.val[0]) == \
78 strncmp(kte.principal->name.name_string.val[0], (name), \
79 sizeof(name)-1) == 0 \
82 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
85 #define KRB5_STRDUP(str) \
88 #define KRB5_STRCMP(str, name) \
91 #define KRB5_STRCASECMP(str, name) \
94 #endif /* HAVE_KRB5 */
96 #endif /* LGSS_KRB5_UTILS_H */