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