Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  *  linux/include/sunrpc/gss_err.h
0003  *
0004  *  Adapted from MIT Kerberos 5-1.2.1 include/gssapi/gssapi.h
0005  *
0006  *  Copyright (c) 2002 The Regents of the University of Michigan.
0007  *  All rights reserved.
0008  *
0009  *  Andy Adamson   <andros@umich.edu>
0010  */
0011 
0012 /*
0013  * Copyright 1993 by OpenVision Technologies, Inc.
0014  * 
0015  * Permission to use, copy, modify, distribute, and sell this software
0016  * and its documentation for any purpose is hereby granted without fee,
0017  * provided that the above copyright notice appears in all copies and
0018  * that both that copyright notice and this permission notice appear in
0019  * supporting documentation, and that the name of OpenVision not be used
0020  * in advertising or publicity pertaining to distribution of the software
0021  * without specific, written prior permission. OpenVision makes no
0022  * representations about the suitability of this software for any
0023  * purpose.  It is provided "as is" without express or implied warranty.
0024  * 
0025  * OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
0026  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
0027  * EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
0028  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
0029  * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
0030  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
0031  * PERFORMANCE OF THIS SOFTWARE.
0032  */
0033 
0034 #ifndef _LINUX_SUNRPC_GSS_ERR_H
0035 #define _LINUX_SUNRPC_GSS_ERR_H
0036 
0037 typedef unsigned int OM_uint32;
0038 
0039 /*
0040  * Flag bits for context-level services.
0041  */
0042 #define GSS_C_DELEG_FLAG 1
0043 #define GSS_C_MUTUAL_FLAG 2
0044 #define GSS_C_REPLAY_FLAG 4
0045 #define GSS_C_SEQUENCE_FLAG 8
0046 #define GSS_C_CONF_FLAG 16
0047 #define GSS_C_INTEG_FLAG 32
0048 #define GSS_C_ANON_FLAG 64
0049 #define GSS_C_PROT_READY_FLAG 128
0050 #define GSS_C_TRANS_FLAG 256
0051 
0052 /*
0053  * Credential usage options
0054  */
0055 #define GSS_C_BOTH 0
0056 #define GSS_C_INITIATE 1
0057 #define GSS_C_ACCEPT 2
0058 
0059 /*
0060  * Status code types for gss_display_status
0061  */
0062 #define GSS_C_GSS_CODE 1
0063 #define GSS_C_MECH_CODE 2
0064 
0065 
0066 /*
0067  * Expiration time of 2^32-1 seconds means infinite lifetime for a
0068  * credential or security context
0069  */
0070 #define GSS_C_INDEFINITE ((OM_uint32) 0xfffffffful)
0071 
0072 
0073 /* Major status codes */
0074 
0075 #define GSS_S_COMPLETE 0
0076 
0077 /*
0078  * Some "helper" definitions to make the status code macros obvious.
0079  */
0080 #define GSS_C_CALLING_ERROR_OFFSET 24
0081 #define GSS_C_ROUTINE_ERROR_OFFSET 16
0082 #define GSS_C_SUPPLEMENTARY_OFFSET 0
0083 #define GSS_C_CALLING_ERROR_MASK ((OM_uint32) 0377ul)
0084 #define GSS_C_ROUTINE_ERROR_MASK ((OM_uint32) 0377ul)
0085 #define GSS_C_SUPPLEMENTARY_MASK ((OM_uint32) 0177777ul)
0086 
0087 /*
0088  * The macros that test status codes for error conditions.  Note that the
0089  * GSS_ERROR() macro has changed slightly from the V1 GSSAPI so that it now
0090  * evaluates its argument only once.
0091  */
0092 #define GSS_CALLING_ERROR(x) \
0093   ((x) & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET))
0094 #define GSS_ROUTINE_ERROR(x) \
0095   ((x) & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))
0096 #define GSS_SUPPLEMENTARY_INFO(x) \
0097   ((x) & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET))
0098 #define GSS_ERROR(x) \
0099   ((x) & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \
0100       (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)))
0101 
0102 /*
0103  * Now the actual status code definitions
0104  */
0105 
0106 /*
0107  * Calling errors:
0108  */
0109 #define GSS_S_CALL_INACCESSIBLE_READ \
0110                              (((OM_uint32) 1ul) << GSS_C_CALLING_ERROR_OFFSET)
0111 #define GSS_S_CALL_INACCESSIBLE_WRITE \
0112                              (((OM_uint32) 2ul) << GSS_C_CALLING_ERROR_OFFSET)
0113 #define GSS_S_CALL_BAD_STRUCTURE \
0114                              (((OM_uint32) 3ul) << GSS_C_CALLING_ERROR_OFFSET)
0115 
0116 /*
0117  * Routine errors:
0118  */
0119 #define GSS_S_BAD_MECH (((OM_uint32) 1ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0120 #define GSS_S_BAD_NAME (((OM_uint32) 2ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0121 #define GSS_S_BAD_NAMETYPE (((OM_uint32) 3ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0122 #define GSS_S_BAD_BINDINGS (((OM_uint32) 4ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0123 #define GSS_S_BAD_STATUS (((OM_uint32) 5ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0124 #define GSS_S_BAD_SIG (((OM_uint32) 6ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0125 #define GSS_S_NO_CRED (((OM_uint32) 7ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0126 #define GSS_S_NO_CONTEXT (((OM_uint32) 8ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0127 #define GSS_S_DEFECTIVE_TOKEN (((OM_uint32) 9ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0128 #define GSS_S_DEFECTIVE_CREDENTIAL \
0129      (((OM_uint32) 10ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0130 #define GSS_S_CREDENTIALS_EXPIRED \
0131      (((OM_uint32) 11ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0132 #define GSS_S_CONTEXT_EXPIRED \
0133      (((OM_uint32) 12ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0134 #define GSS_S_FAILURE (((OM_uint32) 13ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0135 #define GSS_S_BAD_QOP (((OM_uint32) 14ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0136 #define GSS_S_UNAUTHORIZED (((OM_uint32) 15ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0137 #define GSS_S_UNAVAILABLE (((OM_uint32) 16ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0138 #define GSS_S_DUPLICATE_ELEMENT \
0139      (((OM_uint32) 17ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0140 #define GSS_S_NAME_NOT_MN \
0141      (((OM_uint32) 18ul) << GSS_C_ROUTINE_ERROR_OFFSET)
0142 
0143 /*
0144  * Supplementary info bits:
0145  */
0146 #define GSS_S_CONTINUE_NEEDED (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 0))
0147 #define GSS_S_DUPLICATE_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 1))
0148 #define GSS_S_OLD_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 2))
0149 #define GSS_S_UNSEQ_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 3))
0150 #define GSS_S_GAP_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 4))
0151 
0152 /* XXXX these are not part of the GSSAPI C bindings!  (but should be) */
0153 
0154 #define GSS_CALLING_ERROR_FIELD(x) \
0155    (((x) >> GSS_C_CALLING_ERROR_OFFSET) & GSS_C_CALLING_ERROR_MASK)
0156 #define GSS_ROUTINE_ERROR_FIELD(x) \
0157    (((x) >> GSS_C_ROUTINE_ERROR_OFFSET) & GSS_C_ROUTINE_ERROR_MASK)
0158 #define GSS_SUPPLEMENTARY_INFO_FIELD(x) \
0159    (((x) >> GSS_C_SUPPLEMENTARY_OFFSET) & GSS_C_SUPPLEMENTARY_MASK)
0160 
0161 /* XXXX This is a necessary evil until the spec is fixed */
0162 #define GSS_S_CRED_UNAVAIL GSS_S_FAILURE
0163 
0164 #endif /* __LINUX_SUNRPC_GSS_ERR_H */