xref: /netbsd-src/external/bsd/openldap/dist/servers/slapd/component.h (revision b7b7574d3bf8eeb51a1fa3977b59142ec6434a55)
1 /*	$NetBSD: component.h,v 1.1.1.4 2014/05/28 09:58:46 tron Exp $	*/
2 
3 /* component.h */
4 /* $OpenLDAP$ */
5 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
6  *
7  * Copyright 2004-2014 The OpenLDAP Foundation.
8  * Portions Copyright 2004 by IBM Corporation.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted only as authorized by the OpenLDAP
13  * Public License.
14  *
15  * A copy of this license is available in the file LICENSE in the
16  * top-level directory of the distribution or, alternatively, at
17  * <http://www.OpenLDAP.org/license.html>.
18  */
19 
20 #ifndef _H_SLAPD_COMPONENT
21 #define _H_SLAPD_COMPONENT
22 
23 #include "portable.h"
24 
25 #include <ac/string.h>
26 #include <ac/socket.h>
27 #include <ldap_pvt.h>
28 #include "lutil.h"
29 #include <ldap.h>
30 #include "slap.h"
31 
32 typedef enum { ASN_BASIC, ASN_COMPOSITE } AsnType;
33 /*
34  * Decoder Modes
35  * Different operation is required to handle Decoding(2), Extracted Component
36  * decoding(0), ANY DEFINED TYPe(2)
37  * b0 : Component Alloc(yes)
38  *      Constructed type : Component Alloc (Yes)
39  *      Primitive type : Component Alloc (Yes)
40  *      set to mode 2 in inner decoders
41  * b1 : Component Alloc (No)
42  *      Constructed type : Component Alloc (No)
43  *      Primitive type : Component Alloc (No)
44  *      set to mode 2 in inner decoders
45  * b2 : Default Mode
46  *      Constructed type : Component Alloc (Yes)
47  *      Primitive type : Component Alloc (No)
48  * in addition to above modes, the 4th bit has special meaning,
49  * b4 : if the 4th bit is clear, DecxxxContent is called
50  * b4 : if the 4th bit is set, Decxxx is called, then it is cleared.
51  */
52 #define DEC_ALLOC_MODE_0        0x01
53 #define DEC_ALLOC_MODE_1        0x02
54 #define DEC_ALLOC_MODE_2        0x04
55 #define CALL_TAG_DECODER        0x08
56 #define CALL_CONTENT_DECODER    ~0x08
57 /*
58  * For Attribute Aliasing
59  */
60 #define MAX_ALIASING_ENTRY 128
61 typedef struct comp_attribute_aliasing {
62 	AttributeDescription*	aa_aliasing_ad;
63 	AttributeDescription*	aa_aliased_ad;
64 	ComponentFilter*	aa_cf;
65 	MatchingRule*		aa_mr;
66 	char*			aa_cf_str;
67 } AttributeAliasing;
68 
69 typedef struct comp_matchingrule_aliasing {
70 	MatchingRule*	mra_aliasing_attr;
71 	MatchingRule*	mra_aliased_attr;
72 	AttributeDescription*	mra_attr;
73 	ComponentFilter*	mra_cf;
74 	MatchingRule*		mra_mr;
75 	char*			mra_cf_str;
76 } MatchingRuleAliasing;
77 
78 #endif
79