1/* $NetBSD: component.h,v 1.3 2021/08/14 16:14:58 christos Exp $ */ 2 3/* component.h */ 4/* $OpenLDAP$ */ 5/* This work is part of OpenLDAP Software <http://www.openldap.org/>. 6 * 7 * Copyright 2004-2021 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 <sys/cdefs.h> 24__RCSID("$NetBSD: component.h,v 1.3 2021/08/14 16:14:58 christos Exp $"); 25 26#include "portable.h" 27 28#include <ac/string.h> 29#include <ac/socket.h> 30#include <ldap_pvt.h> 31#include "lutil.h" 32#include <ldap.h> 33#include "slap.h" 34 35typedef enum { ASN_BASIC, ASN_COMPOSITE } AsnType; 36/* 37 * Decoder Modes 38 * Different operation is required to handle Decoding(2), Extracted Component 39 * decoding(0), ANY DEFINED TYPe(2) 40 * b0 : Component Alloc(yes) 41 * Constructed type : Component Alloc (Yes) 42 * Primitive type : Component Alloc (Yes) 43 * set to mode 2 in inner decoders 44 * b1 : Component Alloc (No) 45 * Constructed type : Component Alloc (No) 46 * Primitive type : Component Alloc (No) 47 * set to mode 2 in inner decoders 48 * b2 : Default Mode 49 * Constructed type : Component Alloc (Yes) 50 * Primitive type : Component Alloc (No) 51 * in addition to above modes, the 4th bit has special meaning, 52 * b4 : if the 4th bit is clear, DecxxxContent is called 53 * b4 : if the 4th bit is set, Decxxx is called, then it is cleared. 54 */ 55#define DEC_ALLOC_MODE_0 0x01 56#define DEC_ALLOC_MODE_1 0x02 57#define DEC_ALLOC_MODE_2 0x04 58#define CALL_TAG_DECODER 0x08 59#define CALL_CONTENT_DECODER ~0x08 60/* 61 * For Attribute Aliasing 62 */ 63#define MAX_ALIASING_ENTRY 128 64typedef struct comp_attribute_aliasing { 65 AttributeDescription* aa_aliasing_ad; 66 AttributeDescription* aa_aliased_ad; 67 ComponentFilter* aa_cf; 68 MatchingRule* aa_mr; 69 char* aa_cf_str; 70} AttributeAliasing; 71 72typedef struct comp_matchingrule_aliasing { 73 MatchingRule* mra_aliasing_attr; 74 MatchingRule* mra_aliased_attr; 75 AttributeDescription* mra_attr; 76 ComponentFilter* mra_cf; 77 MatchingRule* mra_mr; 78 char* mra_cf_str; 79} MatchingRuleAliasing; 80 81#endif 82