1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Modifications for Lustre
6 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
8 * Author: Eric Mei <ericm@clusterfs.com>
11 #ifndef LGSS_KRB5_UTILS_H
12 #define LGSS_KRB5_UTILS_H
20 #include "lgss_utils.h"
22 extern struct lgss_mech_type lgss_mech_krb5;
25 * convenient macros, these perhaps need further cleanup
29 #define KEYTAB_ENTRY_MATCH(kte, name) \
31 (kte).principal->data[0].length == (sizeof(name)-1) && \
32 strncmp((kte).principal->data[0].data, (name), sizeof(name)-1) == 0 \
35 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
36 krb5_free_unparsed_name((ctx), (name));
38 #define KRB5_STRDUP(str) \
39 strndup((str).data, (str).length)
41 #define KRB5_STRCMP(str, name) \
43 (str)->length != strlen(name) || \
44 strncmp((str)->data, (name), (str)->length) != 0 \
47 #define KRB5_STRCASECMP(str, name) \
49 (str)->length != strlen(name) || \
50 strncasecmp((str)->data, (name), (str)->length) != 0 \
54 char *lgss_krb5_strdup(krb5_data *kstr)
56 return strndup(kstr->data, kstr->length);
60 int lgss_krb5_strcmp(krb5_data *kstr, const char *str)
62 return (kstr->length != strlen(str) ||
63 memcmp(kstr->data, str, kstr->length) != 0);
67 int lgss_krb5_strcasecmp(krb5_data *kstr, const char *str)
69 return (kstr->length != strlen(str) ||
70 strncasecmp(kstr->data, str, kstr->length) != 0);
73 #else /* !HAVE_KRB5 */
75 #define KEYTAB_ENTRY_MATCH(kte, name) \
77 strlen((kte).principal->name.name_string.val[0]) == \
79 strncmp(kte.principal->name.name_string.val[0], (name), \
80 sizeof(name)-1) == 0 \
83 #define KRB5_FREE_UNPARSED_NAME(ctx, name) \
86 #define KRB5_STRDUP(str) \
89 #define KRB5_STRCMP(str, name) \
92 #define KRB5_STRCASECMP(str, name) \
95 #endif /* HAVE_KRB5 */
97 #endif /* LGSS_KRB5_UTILS_H */