?? back-meta.h
字號:
/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/back-meta.h,v 1.23.2.22 2007/01/27 23:56:43 ando Exp $ *//* This work is part of OpenLDAP Software <http://www.openldap.org/>. * * Copyright 1999-2007 The OpenLDAP Foundation. * Portions Copyright 2001-2003 Pierangelo Masarati. * Portions Copyright 1999-2003 Howard Chu. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in the file LICENSE in the * top-level directory of the distribution or, alternatively, at * <http://www.OpenLDAP.org/license.html>. *//* ACKNOWLEDGEMENTS: * This work was initially developed by the Howard Chu for inclusion * in OpenLDAP Software and subsequently enhanced by Pierangelo * Masarati. */#ifndef SLAPD_LDAP_H#error "include servers/slapd/back-ldap/back-ldap.h before this file!"#endif /* SLAPD_LDAP_H */#ifndef SLAPD_META_H#define SLAPD_META_H#include "proto-meta.h"/* String rewrite library */#include "rewrite.h"LDAP_BEGIN_DECL/* * Set META_BACK_PRINT_CONNTREE larger than 0 to dump the connection tree (debug only) */#ifndef META_BACK_PRINT_CONNTREE#define META_BACK_PRINT_CONNTREE 0#endif /* !META_BACK_PRINT_CONNTREE */struct slap_conn;struct slap_op;/* from back-ldap.h before rwm removal */struct ldapmap { int drop_missing; Avlnode *map; Avlnode *remap;};struct ldapmapping { struct berval src; struct berval dst;};struct ldaprwmap { /* * DN rewriting */#ifdef ENABLE_REWRITE struct rewrite_info *rwm_rw;#else /* !ENABLE_REWRITE */ /* some time the suffix massaging without librewrite * will be disabled */ BerVarray rwm_suffix_massage;#endif /* !ENABLE_REWRITE */ /* * Attribute/objectClass mapping */ struct ldapmap rwm_oc; struct ldapmap rwm_at;};/* Whatever context ldap_back_dn_massage needs... */typedef struct dncookie { struct metatarget_t *target;#ifdef ENABLE_REWRITE Connection *conn; char *ctx; SlapReply *rs;#else int normalized; int tofrom;#endif} dncookie;int ldap_back_dn_massage(dncookie *dc, struct berval *dn, struct berval *res);extern int ldap_back_conn_cmp( const void *c1, const void *c2);extern int ldap_back_conn_dup( void *c1, void *c2 );extern void ldap_back_conn_free( void *c );/* attributeType/objectClass mapping */int mapping_cmp (const void *, const void *);int mapping_dup (void *, void *);void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );int ldap_back_mapping ( struct ldapmap *map, struct berval *s, struct ldapmapping **m, int remap );void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m, int remap );#define BACKLDAP_MAP 0#define BACKLDAP_REMAP 1char *ldap_back_map_filter( struct ldapmap *at_map, struct ldapmap *oc_map, struct berval *f, int remap );intldap_back_map_attrs( struct ldapmap *at_map, AttributeName *a, int remap, char ***mapped_attrs );extern int ldap_back_map_config( struct ldapmap *oc_map, struct ldapmap *at_map, const char *fname, int lineno, int argc, char **argv );extern intldap_back_filter_map_rewrite( dncookie *dc, Filter *f, struct berval *fstr, int remap );/* suffix massaging by means of librewrite */#ifdef ENABLE_REWRITEextern intsuffix_massage_config( struct rewrite_info *info, struct berval *pvnc, struct berval *nvnc, struct berval *prnc, struct berval *nrnc );#endif /* ENABLE_REWRITE */extern intldap_back_referral_result_rewrite( dncookie *dc, BerVarray a_vals );extern intldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );extern intldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );/* (end of) from back-ldap.h before rwm removal *//* * A metasingleconn_t can be in the following, mutually exclusive states: * * - none (0x0U) * - creating META_BACK_FCONN_CREATING * - initialized META_BACK_FCONN_INITED * - binding LDAP_BACK_FCONN_BINDING * - bound/anonymous LDAP_BACK_FCONN_ISBOUND/LDAP_BACK_FCONN_ISANON * * possible modifiers are: * * - privileged LDAP_BACK_FCONN_ISPRIV * - privileged, TLS LDAP_BACK_FCONN_ISTLS * - subjected to idassert LDAP_BACK_FCONN_ISIDASR * - tainted LDAP_BACK_FCONN_TAINTED */#define META_BACK_FCONN_INITED (0x00100000U)#define META_BACK_FCONN_CREATING (0x00200000U)#define META_BACK_CONN_INITED(lc) LDAP_BACK_CONN_ISSET((lc), META_BACK_FCONN_INITED)#define META_BACK_CONN_INITED_SET(lc) LDAP_BACK_CONN_SET((lc), META_BACK_FCONN_INITED)#define META_BACK_CONN_INITED_CLEAR(lc) LDAP_BACK_CONN_CLEAR((lc), META_BACK_FCONN_INITED)#define META_BACK_CONN_INITED_CPY(lc, mlc) LDAP_BACK_CONN_CPY((lc), META_BACK_FCONN_INITED, (mlc))#define META_BACK_CONN_CREATING(lc) LDAP_BACK_CONN_ISSET((lc), META_BACK_FCONN_CREATING)#define META_BACK_CONN_CREATING_SET(lc) LDAP_BACK_CONN_SET((lc), META_BACK_FCONN_CREATING)#define META_BACK_CONN_CREATING_CLEAR(lc) LDAP_BACK_CONN_CLEAR((lc), META_BACK_FCONN_CREATING)#define META_BACK_CONN_CREATING_CPY(lc, mlc) LDAP_BACK_CONN_CPY((lc), META_BACK_FCONN_CREATING, (mlc))struct metainfo_t;#define META_NOT_CANDIDATE ((ber_tag_t)0x0)#define META_CANDIDATE ((ber_tag_t)0x1)#define META_BINDING ((ber_tag_t)0x2)#define META_RETRYING ((ber_tag_t)0x4)typedef struct metasingleconn_t {#define META_CND_ISSET(rs,f) ( ( (rs)->sr_tag & (f) ) == (f) )#define META_CND_SET(rs,f) ( (rs)->sr_tag |= (f) )#define META_CND_CLEAR(rs,f) ( (rs)->sr_tag &= ~(f) )#define META_CANDIDATE_RESET(rs) ( (rs)->sr_tag = 0 )#define META_IS_CANDIDATE(rs) META_CND_ISSET( (rs), META_CANDIDATE )#define META_CANDIDATE_SET(rs) META_CND_SET( (rs), META_CANDIDATE )#define META_CANDIDATE_CLEAR(rs) META_CND_CLEAR( (rs), META_CANDIDATE )#define META_IS_BINDING(rs) META_CND_ISSET( (rs), META_BINDING )#define META_BINDING_SET(rs) META_CND_SET( (rs), META_BINDING )#define META_BINDING_CLEAR(rs) META_CND_CLEAR( (rs), META_BINDING )#define META_IS_RETRYING(rs) META_CND_ISSET( (rs), META_RETRYING )#define META_RETRYING_SET(rs) META_CND_SET( (rs), META_RETRYING )#define META_RETRYING_CLEAR(rs) META_CND_CLEAR( (rs), META_RETRYING ) LDAP *msc_ld; time_t msc_time; struct berval msc_bound_ndn; struct berval msc_cred; unsigned msc_mscflags; /* NOTE: lc_lcflags is redefined to msc_mscflags to reuse the macros * defined for back-ldap */#define lc_lcflags msc_mscflags} metasingleconn_t;typedef struct metaconn_t { struct slap_conn *mc_conn;#define lc_conn mc_conn unsigned mc_refcnt; time_t mc_create_time; time_t mc_time; struct berval mc_local_ndn; /* NOTE: msc_mscflags is used to recycle the #define * in metasingleconn_t */ unsigned msc_mscflags; /* * means that the connection is bound; * of course only one target actually is ... */ int mc_authz_target;#define META_BOUND_NONE (-1)#define META_BOUND_ALL (-2) struct metainfo_t *mc_info; LDAP_TAILQ_ENTRY(metaconn_t) mc_q; /* supersedes the connection stuff */ metasingleconn_t mc_conns[ 1 ]; /* NOTE: mc_conns must be last, because * the required number of conns is malloc'ed * in one block with the metaconn_t structure */} metaconn_t;typedef struct metatarget_t { char *mt_uri; ldap_pvt_thread_mutex_t mt_uri_mutex; /* TODO: we might want to enable different strategies * for different targets */ LDAP_REBIND_PROC *mt_rebind_f; void *mt_urllist_p; BerVarray mt_subtree_exclude; int mt_scope; struct berval mt_psuffix; /* pretty suffix */ struct berval mt_nsuffix; /* normalized suffix */ struct berval mt_binddn; struct berval mt_bindpw; slap_idassert_t mt_idassert;#define mt_idassert_mode mt_idassert.si_mode#define mt_idassert_authcID mt_idassert.si_bc.sb_authcId#define mt_idassert_authcDN mt_idassert.si_bc.sb_binddn#define mt_idassert_passwd mt_idassert.si_bc.sb_cred#define mt_idassert_authzID mt_idassert.si_bc.sb_authzId#define mt_idassert_authmethod mt_idassert.si_bc.sb_method#define mt_idassert_sasl_mech mt_idassert.si_bc.sb_saslmech#define mt_idassert_sasl_realm mt_idassert.si_bc.sb_realm#define mt_idassert_secprops mt_idassert.si_bc.sb_secprops#define mt_idassert_tls mt_idassert.si_bc.sb_tls#define mt_idassert_flags mt_idassert.si_flags#define mt_idassert_authz mt_idassert.si_authz int mt_nretries;#define META_RETRY_UNDEFINED (-2)#define META_RETRY_FOREVER (-1)#define META_RETRY_NEVER (0)#define META_RETRY_DEFAULT (10)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -