version 1.37.2.11, 2005/08/17 21:33:45
|
version 1.37.2.14, 2005/11/26 23:54:52
|
Line 1
|
Line 1
|
/* rwm.c - rewrite/remap operations */ |
/* rwm.c - rewrite/remap operations */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwm.c,v 1.64 2005/08/17 17:40:02 ando Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwm.c,v 1.37.2.13 2005/11/03 18:03:02 kurt Exp $ */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
* Copyright 2003-2005 The OpenLDAP Foundation. |
* Copyright 2003-2005 The OpenLDAP Foundation. |
Line 669 rwm_op_search( Operation *op, SlapReply
|
Line 669 rwm_op_search( Operation *op, SlapReply
|
char *text = NULL; |
char *text = NULL; |
|
|
#ifdef ENABLE_REWRITE |
#ifdef ENABLE_REWRITE |
rc = rwm_op_dn_massage( op, rs, "searchDN" ); |
rc = rewrite_session_var_set( rwmap->rwm_rw, op->o_conn, |
|
"searchFilter", op->ors_filterstr.bv_val ); |
|
if ( rc == LDAP_SUCCESS ) |
|
rc = rwm_op_dn_massage( op, rs, "searchDN" ); |
#else /* ! ENABLE_REWRITE */ |
#else /* ! ENABLE_REWRITE */ |
rc = 1; |
rc = 1; |
rc = rwm_op_dn_massage( op, rs, &rc ); |
rc = rwm_op_dn_massage( op, rs, &rc ); |
Line 692 rwm_op_search( Operation *op, SlapReply
|
Line 695 rwm_op_search( Operation *op, SlapReply
|
dc.normalized = 0; |
dc.normalized = 0; |
#endif /* ! ENABLE_REWRITE */ |
#endif /* ! ENABLE_REWRITE */ |
|
|
rc = rwm_filter_map_rewrite( &dc, op->ors_filter, &fstr ); |
rc = rwm_filter_map_rewrite( op, &dc, op->ors_filter, &fstr ); |
if ( rc != LDAP_SUCCESS ) { |
if ( rc != LDAP_SUCCESS ) { |
text = "searchFilter/searchFilterAttrDN massage error"; |
text = "searchFilter/searchFilterAttrDN massage error"; |
goto error_return; |
goto error_return; |
Line 1040 rwm_send_entry( Operation *op, SlapReply
|
Line 1043 rwm_send_entry( Operation *op, SlapReply
|
goto fail; |
goto fail; |
} |
} |
|
|
|
flags &= ~REP_ENTRY_MUSTRELEASE; |
flags |= ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED ); |
flags |= ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED ); |
} |
} |
|
|
Line 1072 rwm_send_entry( Operation *op, SlapReply
|
Line 1076 rwm_send_entry( Operation *op, SlapReply
|
* to return, and remap them accordingly */ |
* to return, and remap them accordingly */ |
(void)rwm_attrs( op, rs, &e->e_attrs, 1 ); |
(void)rwm_attrs( op, rs, &e->e_attrs, 1 ); |
|
|
#if 0 |
if ( rs->sr_flags & REP_ENTRY_MUSTRELEASE ) { |
if ( rs->sr_operational_attrs ) { |
be_entry_release_rw( op, rs->sr_entry, 0 ); |
(void)rwm_attrs( op, rs, &rs->sr_operational_attrs, 0 ); |
|
} |
} |
#endif |
|
|
|
rs->sr_entry = e; |
rs->sr_entry = e; |
rs->sr_flags = flags; |
rs->sr_flags = flags; |
Line 1392 rwm_db_config(
|
Line 1394 rwm_db_config(
|
} else if ( strcasecmp( argv[ 1 ], "yes" ) == 0 ) { |
} else if ( strcasecmp( argv[ 1 ], "yes" ) == 0 ) { |
rwmap->rwm_flags |= RWM_F_SUPPORT_T_F; |
rwmap->rwm_flags |= RWM_F_SUPPORT_T_F; |
|
|
#if 0 |
|
/* TODO: not implemented yet */ |
/* TODO: not implemented yet */ |
} else if ( strcasecmp( argv[ 1 ], "discover" ) == 0 ) { |
} else if ( strcasecmp( argv[ 1 ], "discover" ) == 0 ) { |
|
fprintf( stderr, |
|
"%s: line %d: \"discover\" not supported yet " |
|
"in \"t-f-support {no|yes|discover}\".\n", |
|
fname, lineno ); |
|
return( 1 ); |
|
#if 0 |
rwmap->rwm_flags |= RWM_F_SUPPORT_T_F_DISCOVER; |
rwmap->rwm_flags |= RWM_F_SUPPORT_T_F_DISCOVER; |
#endif |
#endif |
|
|
Line 1474 rwm_db_destroy(
|
Line 1481 rwm_db_destroy(
|
(struct ldaprwmap *)on->on_bi.bi_private; |
(struct ldaprwmap *)on->on_bi.bi_private; |
|
|
#ifdef ENABLE_REWRITE |
#ifdef ENABLE_REWRITE |
if (rwmap->rwm_rw) { |
if ( rwmap->rwm_rw ) { |
rewrite_info_delete( &rwmap->rwm_rw ); |
rewrite_info_delete( &rwmap->rwm_rw ); |
} |
} |
#else /* !ENABLE_REWRITE */ |
#else /* !ENABLE_REWRITE */ |
Line 1483 rwm_db_destroy(
|
Line 1490 rwm_db_destroy(
|
} |
} |
#endif /* !ENABLE_REWRITE */ |
#endif /* !ENABLE_REWRITE */ |
|
|
avl_free( rwmap->rwm_oc.remap, NULL ); |
avl_free( rwmap->rwm_oc.remap, rwm_mapping_dst_free ); |
avl_free( rwmap->rwm_oc.map, rwm_mapping_free ); |
avl_free( rwmap->rwm_oc.map, rwm_mapping_free ); |
avl_free( rwmap->rwm_at.remap, NULL ); |
avl_free( rwmap->rwm_at.remap, rwm_mapping_dst_free ); |
avl_free( rwmap->rwm_at.map, rwm_mapping_free ); |
avl_free( rwmap->rwm_at.map, rwm_mapping_free ); |
|
|
ch_free( rwmap ); |
ch_free( rwmap ); |
Line 1497 rwm_db_destroy(
|
Line 1504 rwm_db_destroy(
|
static slap_overinst rwm = { { NULL } }; |
static slap_overinst rwm = { { NULL } }; |
|
|
int |
int |
rwm_init(void) |
rwm_initialize(void) |
{ |
{ |
memset( &rwm, 0, sizeof( slap_overinst ) ); |
memset( &rwm, 0, sizeof( slap_overinst ) ); |
|
|
Line 1534 rwm_init(void)
|
Line 1541 rwm_init(void)
|
int |
int |
init_module( int argc, char *argv[] ) |
init_module( int argc, char *argv[] ) |
{ |
{ |
return rwm_init(); |
return rwm_initialize(); |
} |
} |
#endif /* SLAPD_OVER_RWM == SLAPD_MOD_DYNAMIC */ |
#endif /* SLAPD_OVER_RWM == SLAPD_MOD_DYNAMIC */ |
|
|