xref: /illumos-gate/usr/src/lib/libldap5/include/ldap/ldaprot.h (revision 1da57d551424de5a9d469760be7c4b4d4f10a755)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * Copyright (c) 2001 by Sun Microsystems, Inc.
3*7c478bd9Sstevel@tonic-gate  * All rights reserved.
4*7c478bd9Sstevel@tonic-gate  */
5*7c478bd9Sstevel@tonic-gate 
6*7c478bd9Sstevel@tonic-gate /*
7*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the Netscape Public
8*7c478bd9Sstevel@tonic-gate  * License Version 1.1 (the "License"); you may not use this file
9*7c478bd9Sstevel@tonic-gate  * except in compliance with the License. You may obtain a copy of
10*7c478bd9Sstevel@tonic-gate  * the License at http://www.mozilla.org/NPL/
11*7c478bd9Sstevel@tonic-gate  *
12*7c478bd9Sstevel@tonic-gate  * Software distributed under the License is distributed on an "AS
13*7c478bd9Sstevel@tonic-gate  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
14*7c478bd9Sstevel@tonic-gate  * implied. See the License for the specific language governing
15*7c478bd9Sstevel@tonic-gate  * rights and limitations under the License.
16*7c478bd9Sstevel@tonic-gate  *
17*7c478bd9Sstevel@tonic-gate  * The Original Code is Mozilla Communicator client code, released
18*7c478bd9Sstevel@tonic-gate  * March 31, 1998.
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * The Initial Developer of the Original Code is Netscape
21*7c478bd9Sstevel@tonic-gate  * Communications Corporation. Portions created by Netscape are
22*7c478bd9Sstevel@tonic-gate  * Copyright (C) 1998-1999 Netscape Communications Corporation. All
23*7c478bd9Sstevel@tonic-gate  * Rights Reserved.
24*7c478bd9Sstevel@tonic-gate  *
25*7c478bd9Sstevel@tonic-gate  * Contributor(s):
26*7c478bd9Sstevel@tonic-gate  */
27*7c478bd9Sstevel@tonic-gate 
28*7c478bd9Sstevel@tonic-gate #ifndef _LDAPROT_H
29*7c478bd9Sstevel@tonic-gate #define _LDAPROT_H
30*7c478bd9Sstevel@tonic-gate 
31*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
32*7c478bd9Sstevel@tonic-gate extern "C" {
33*7c478bd9Sstevel@tonic-gate #endif
34*7c478bd9Sstevel@tonic-gate 
35*7c478bd9Sstevel@tonic-gate #define LDAP_VERSION1	1
36*7c478bd9Sstevel@tonic-gate #define LDAP_VERSION2	2
37*7c478bd9Sstevel@tonic-gate #define LDAP_VERSION3	3
38*7c478bd9Sstevel@tonic-gate #define LDAP_VERSION	LDAP_VERSION2
39*7c478bd9Sstevel@tonic-gate 
40*7c478bd9Sstevel@tonic-gate #define COMPAT20
41*7c478bd9Sstevel@tonic-gate #define COMPAT30
42*7c478bd9Sstevel@tonic-gate #if defined(COMPAT20) || defined(COMPAT30)
43*7c478bd9Sstevel@tonic-gate #define COMPAT
44*7c478bd9Sstevel@tonic-gate #endif
45*7c478bd9Sstevel@tonic-gate 
46*7c478bd9Sstevel@tonic-gate #define LDAP_URL_PREFIX		"ldap://"
47*7c478bd9Sstevel@tonic-gate #define LDAP_URL_PREFIX_LEN	7
48*7c478bd9Sstevel@tonic-gate #define LDAPS_URL_PREFIX	"ldaps://"
49*7c478bd9Sstevel@tonic-gate #define LDAPS_URL_PREFIX_LEN	8
50*7c478bd9Sstevel@tonic-gate #define LDAP_REF_STR		"Referral:\n"
51*7c478bd9Sstevel@tonic-gate #define LDAP_REF_STR_LEN	10
52*7c478bd9Sstevel@tonic-gate 
53*7c478bd9Sstevel@tonic-gate /*
54*7c478bd9Sstevel@tonic-gate  * specific LDAP instantiations of BER types we know about
55*7c478bd9Sstevel@tonic-gate  */
56*7c478bd9Sstevel@tonic-gate 
57*7c478bd9Sstevel@tonic-gate #ifdef _SOLARIS_SDK
58*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_LDAPDN         0x04   /* OCTET STRING */
59*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_TAG_MESSAGE    0x10   /* forgot the constructed bit  */
60*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_OID        0x81   /* context specific + primitive + 1 */
61*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_TYPE       0x82   /* context specific + primitive + 2 */
62*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_VALUE      0x83   /* context specific + primitive + 3 */
63*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_DNATTRS    0x84   /* context specific + primitive + 4 */
64*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_REQ_OID   0x80   /* context specific + primitive + 0 */
65*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_REQ_VALUE 0x81   /* context specific + primitive + 1 */
66*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_RES_OID   0x8a   /* context specific + primitive + 10 */
67*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_RES_VALUE 0x8b   /* context specific + primitive + 11 */
68*7c478bd9Sstevel@tonic-gate #endif /* ifdef _SOLARIS_SDK */
69*7c478bd9Sstevel@tonic-gate 
70*7c478bd9Sstevel@tonic-gate #ifndef _SOLARIS_SDK
71*7c478bd9Sstevel@tonic-gate 
72*7c478bd9Sstevel@tonic-gate /* general stuff */
73*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MESSAGE	0x30L	/* tag is 16 + constructed bit */
74*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MSGID		0x02L   /* INTEGER */
75*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_CONTROLS	0xa0L	/* context specific + constructed + 0 */
76*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_REFERRAL	0xa3L	/* context specific + constructed + 3 */
77*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_NEWSUPERIOR	0x80L	/* context specific + primitive + 0 */
78*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_SASL_RES_CREDS	0x87L	/* context specific + primitive + 7 */
79*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_VLV_BY_INDEX	0xa0L	/* context specific + constructed + 0 */
80*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_VLV_BY_VALUE	0x81L	/* context specific + primitive + 1 */
81*7c478bd9Sstevel@tonic-gate 
82*7c478bd9Sstevel@tonic-gate 
83*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_LDAPDN		0x04L	/* OCTET STRING */
84*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_TAG_MESSAGE	0x10L	/* forgot the constructed bit  */
85*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_OID	0x81L	/* context specific + primitive + 1 */
86*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_TYPE	0x82L	/* context specific + primitive + 2 */
87*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_VALUE	0x83L	/* context specific + primitive + 3 */
88*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_MRA_DNATTRS	0x84L	/* context specific + primitive + 4 */
89*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_REQ_OID	0x80L	/* context specific + primitive + 0 */
90*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_REQ_VALUE	0x81L	/* context specific + primitive + 1 */
91*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_RES_OID	0x8aL	/* context specific + primitive + 10 */
92*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_EXOP_RES_VALUE	0x8bL	/* context specific + primitive + 11 */
93*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_SK_MATCHRULE   0x80L   /* context specific + primitive + 0 */
94*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_SK_REVERSE 	0x81L	/* context specific + primitive + 1 */
95*7c478bd9Sstevel@tonic-gate #define LDAP_TAG_SR_ATTRTYPE    0x80L   /* context specific + primitive + 0 */
96*7c478bd9Sstevel@tonic-gate 
97*7c478bd9Sstevel@tonic-gate /* possible operations a client can invoke */
98*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_BIND		0x60L	/* application + constructed + 0 */
99*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_UNBIND		0x42L	/* application + primitive   + 2 */
100*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_SEARCH		0x63L	/* application + constructed + 3 */
101*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_MODIFY		0x66L	/* application + constructed + 6 */
102*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_ADD		0x68L	/* application + constructed + 8 */
103*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_DELETE		0x4aL	/* application + primitive   + 10 */
104*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_MODRDN		0x6cL	/* application + constructed + 12 */
105*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_MODDN		0x6cL	/* application + constructed + 12 */
106*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_RENAME		0x6cL	/* application + constructed + 12 */
107*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_COMPARE	0x6eL	/* application + constructed + 14 */
108*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_ABANDON	0x50L	/* application + primitive   + 16 */
109*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_EXTENDED	0x77L	/* application + constructed + 23 */
110*7c478bd9Sstevel@tonic-gate 
111*7c478bd9Sstevel@tonic-gate /* U-M LDAP release 3.0 compatibility stuff */
112*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_UNBIND_30	0x62L
113*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_DELETE_30	0x6aL
114*7c478bd9Sstevel@tonic-gate #define LDAP_REQ_ABANDON_30	0x70L
115*7c478bd9Sstevel@tonic-gate 
116*7c478bd9Sstevel@tonic-gate /* U-M LDAP 3.0 compatibility auth methods */
117*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_SIMPLE_30	0xa0L	/* context specific + constructed */
118*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_KRBV41_30	0xa1L	/* context specific + constructed */
119*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_KRBV42_30	0xa2L	/* context specific + constructed */
120*7c478bd9Sstevel@tonic-gate 
121*7c478bd9Sstevel@tonic-gate /*
122*7c478bd9Sstevel@tonic-gate  * old broken stuff for backwards compatibility - forgot application tag
123*7c478bd9Sstevel@tonic-gate  * and constructed/primitive bit
124*7c478bd9Sstevel@tonic-gate  */
125*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_BIND	0x00L
126*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_UNBIND	0x02L
127*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_SEARCH	0x03L
128*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_MODIFY	0x06L
129*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_ADD	0x08L
130*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_DELETE	0x0aL
131*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_MODRDN	0x0cL
132*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_MODDN	0x0cL
133*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_COMPARE	0x0eL
134*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_REQ_ABANDON	0x10L
135*7c478bd9Sstevel@tonic-gate 
136*7c478bd9Sstevel@tonic-gate /* old broken stuff for backwards compatibility */
137*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_BIND		0x01L
138*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_SEARCH_ENTRY	0x04L
139*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_SEARCH_RESULT	0x05L
140*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_MODIFY		0x07L
141*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_ADD		0x09L
142*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_DELETE		0x0bL
143*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_MODRDN		0x0dL
144*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_MODDN		0x0dL
145*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_RES_COMPARE		0x0fL
146*7c478bd9Sstevel@tonic-gate 
147*7c478bd9Sstevel@tonic-gate /* U-M LDAP 3.0 compatibility auth methods */
148*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_SIMPLE_30	0xa0L	/* context specific + constructed */
149*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_KRBV41_30	0xa1L	/* context specific + constructed */
150*7c478bd9Sstevel@tonic-gate #define LDAP_AUTH_KRBV42_30	0xa2L	/* context specific + constructed */
151*7c478bd9Sstevel@tonic-gate 
152*7c478bd9Sstevel@tonic-gate /* old broken stuff */
153*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_AUTH_SIMPLE	0x00L
154*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_AUTH_KRBV4	0x01L
155*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_AUTH_KRBV42	0x02L
156*7c478bd9Sstevel@tonic-gate 
157*7c478bd9Sstevel@tonic-gate /* U-M LDAP 3.0 compatibility filter types */
158*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_PRESENT_30	0xa7L	/* context specific + constructed */
159*7c478bd9Sstevel@tonic-gate 
160*7c478bd9Sstevel@tonic-gate /* filter types */
161*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_AND		0xa0L	/* context specific + constructed + 0 */
162*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_OR		0xa1L	/* context specific + constructed + 1 */
163*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_NOT		0xa2L	/* context specific + constructed + 2 */
164*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EQUALITY	0xa3L	/* context specific + constructed + 3 */
165*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_SUBSTRINGS	0xa4L	/* context specific + constructed + 4 */
166*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_GE		0xa5L	/* context specific + constructed + 5 */
167*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_LE		0xa6L	/* context specific + constructed + 6 */
168*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_PRESENT	0x87L	/* context specific + primitive   + 7 */
169*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_APPROX	0xa8L	/* context specific + constructed + 8 */
170*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EXTENDED	0xa9L	/* context specific + constructed + 0 */
171*7c478bd9Sstevel@tonic-gate 
172*7c478bd9Sstevel@tonic-gate /* old broken stuff */
173*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_AND		0x00L
174*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_OR		0x01L
175*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_NOT		0x02L
176*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_EQUALITY	0x03L
177*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_SUBSTRINGS	0x04L
178*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_GE		0x05L
179*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_LE		0x06L
180*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_PRESENT		0x07L
181*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_FILTER_APPROX		0x08L
182*7c478bd9Sstevel@tonic-gate 
183*7c478bd9Sstevel@tonic-gate /* substring filter component types */
184*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_INITIAL	0x80L	/* context specific + primitive + 0 */
185*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_ANY	0x81L	/* context specific + primitive + 1 */
186*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_FINAL	0x82L	/* context specific + primitive + 2 */
187*7c478bd9Sstevel@tonic-gate 
188*7c478bd9Sstevel@tonic-gate /* extended filter component types */
189*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EXTENDED_OID	0x81L	/* context spec. + prim. + 1 */
190*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EXTENDED_TYPE	0x82L	/* context spec. + prim. + 2 */
191*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EXTENDED_VALUE	0x83L	/* context spec. + prim. + 3 */
192*7c478bd9Sstevel@tonic-gate #define LDAP_FILTER_EXTENDED_DNATTRS	0x84L	/* context spec. + prim. + 4 */
193*7c478bd9Sstevel@tonic-gate 
194*7c478bd9Sstevel@tonic-gate /* U-M LDAP 3.0 compatibility substring filter component types */
195*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_INITIAL_30	0xa0L	/* context specific */
196*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_ANY_30		0xa1L	/* context specific */
197*7c478bd9Sstevel@tonic-gate #define LDAP_SUBSTRING_FINAL_30		0xa2L	/* context specific */
198*7c478bd9Sstevel@tonic-gate 
199*7c478bd9Sstevel@tonic-gate /* old broken stuff */
200*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_SUBSTRING_INITIAL	0x00L
201*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_SUBSTRING_ANY		0x01L
202*7c478bd9Sstevel@tonic-gate #define OLD_LDAP_SUBSTRING_FINAL	0x02L
203*7c478bd9Sstevel@tonic-gate 
204*7c478bd9Sstevel@tonic-gate #endif /* _SOLARIS_SDK */
205*7c478bd9Sstevel@tonic-gate 
206*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
207*7c478bd9Sstevel@tonic-gate }
208*7c478bd9Sstevel@tonic-gate #endif
209*7c478bd9Sstevel@tonic-gate #endif /* _LDAPROT_H */
210