2003-11-27 10:35:20 +08:00
|
|
|
/* $OpenLDAP$ */
|
|
|
|
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
|
|
|
*
|
2004-01-02 03:15:16 +08:00
|
|
|
* Copyright 2001-2004 The OpenLDAP Foundation.
|
2003-12-09 01:41:40 +08:00
|
|
|
* Portions Copyright 2001-2003 Pierangelo Masarati.
|
2003-11-27 10:35:20 +08:00
|
|
|
* 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 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 Pierangelo Masarati for inclusion
|
|
|
|
* in OpenLDAP Software.
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
|
|
|
|
2003-04-13 12:51:12 +08:00
|
|
|
#ifndef _PROTO_BACK_MONITOR
|
|
|
|
#define _PROTO_BACK_MONITOR
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
#include <ldap_cdefs.h>
|
|
|
|
|
|
|
|
LDAP_BEGIN_DECL
|
|
|
|
|
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* backends
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_backend_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* cache
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
2004-11-08 18:10:15 +08:00
|
|
|
extern int monitor_cache_cmp LDAP_P(( const void *c1, const void *c2 ));
|
|
|
|
extern int monitor_cache_dup LDAP_P(( void *c1, void *c2 ));
|
2004-11-09 02:52:27 +08:00
|
|
|
extern int monitor_cache_add LDAP_P(( monitor_info_t *mi, Entry *e ));
|
|
|
|
extern int monitor_cache_get LDAP_P(( monitor_info_t *mi, struct berval *ndn, Entry **ep ));
|
2004-11-08 18:10:15 +08:00
|
|
|
extern int monitor_cache_dn2entry LDAP_P(( Operation *op, struct berval *ndn, Entry **ep, Entry **matched ));
|
|
|
|
extern int monitor_cache_lock LDAP_P(( Entry *e ));
|
2004-11-09 02:52:27 +08:00
|
|
|
extern int monitor_cache_release LDAP_P(( monitor_info_t *mi, Entry *e ));
|
2004-11-08 18:10:15 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* connections
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_conn_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2004-11-08 18:10:15 +08:00
|
|
|
int monitor_subsys_conn_update LDAP_P(( Operation *op, Entry *e ));
|
|
|
|
int monitor_subsys_conn_create LDAP_P(( Operation *op, struct berval *ndn,
|
|
|
|
Entry *e_parent, Entry **ep ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* databases
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_database_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2004-04-27 09:56:38 +08:00
|
|
|
int monitor_subsys_database_modify LDAP_P(( Operation *op, Entry *e ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* entry
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
2004-11-08 18:10:15 +08:00
|
|
|
extern int monitor_entry_update LDAP_P(( Operation *op, Entry *e ));
|
|
|
|
extern int monitor_entry_create LDAP_P(( Operation *op, struct berval *ndn,
|
|
|
|
Entry *e_parent, Entry **ep ));
|
|
|
|
extern int monitor_entry_modify LDAP_P(( Operation *op, Entry *e ));
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_entry_test_flags LDAP_P(( monitor_entry_t *mp, int cond ));
|
|
|
|
extern monitor_entry_t * monitor_entrypriv_create LDAP_P(( void ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* init
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
extern int monitor_back_register_subsys LDAP_P(( monitor_subsys_t *ms ));
|
|
|
|
extern monitor_subsys_t * monitor_back_get_subsys LDAP_P(( const char *name ));
|
|
|
|
extern monitor_subsys_t * monitor_back_get_subsys_by_dn LDAP_P(( struct berval *ndn, int sub ));
|
2004-11-12 20:54:42 +08:00
|
|
|
extern int monitor_back_register_entry LDAP_P(( Entry *e, monitor_callback_t *cb ));
|
|
|
|
extern int monitor_filter2ndn LDAP_P(( struct berval *base, int scope, struct berval *filter, struct berval *ndn ));
|
|
|
|
extern int monitor_back_register_entry_attrs LDAP_P(( struct berval *ndn, Attribute *a, monitor_callback_t *cb, struct berval *base, int scope, struct berval *filter ));
|
|
|
|
extern int monitor_back_register_entry_callback LDAP_P(( struct berval *ndn, monitor_callback_t *cb, struct berval *base, int scope, struct berval *filter ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* listener
|
2001-07-15 01:34:24 +08:00
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_listener_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2001-07-15 01:34:24 +08:00
|
|
|
|
2001-12-10 17:50:06 +08:00
|
|
|
/*
|
|
|
|
* log
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_log_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2003-04-12 09:17:05 +08:00
|
|
|
int monitor_subsys_log_modify LDAP_P(( Operation *op, Entry *e ));
|
2001-12-10 17:50:06 +08:00
|
|
|
|
2001-12-23 03:14:10 +08:00
|
|
|
/*
|
|
|
|
* operations
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_ops_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2003-04-12 07:08:16 +08:00
|
|
|
int monitor_subsys_ops_update LDAP_P(( Operation *op, Entry *e ));
|
2001-12-23 03:14:10 +08:00
|
|
|
|
2004-03-17 05:58:29 +08:00
|
|
|
/*
|
|
|
|
* overlay
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_overlay_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2004-03-17 05:58:29 +08:00
|
|
|
|
2001-12-23 03:14:10 +08:00
|
|
|
/*
|
|
|
|
* sent
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_sent_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2003-04-12 07:08:16 +08:00
|
|
|
int monitor_subsys_sent_update LDAP_P(( Operation *op, Entry *e ));
|
2001-12-23 03:14:10 +08:00
|
|
|
|
2002-01-11 19:43:35 +08:00
|
|
|
/*
|
2004-11-08 18:10:15 +08:00
|
|
|
* threads
|
2002-01-11 19:43:35 +08:00
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_thread_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2004-11-08 18:10:15 +08:00
|
|
|
int monitor_subsys_thread_update LDAP_P(( Operation *op, Entry *e ));
|
2002-01-11 19:43:35 +08:00
|
|
|
|
2002-01-29 20:15:13 +08:00
|
|
|
/*
|
|
|
|
* time
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_time_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2003-04-12 07:08:16 +08:00
|
|
|
int monitor_subsys_time_update LDAP_P(( Operation *op, Entry *e ));
|
2002-01-29 20:15:13 +08:00
|
|
|
|
2004-11-08 18:10:15 +08:00
|
|
|
/*
|
|
|
|
* waiters
|
|
|
|
*/
|
2004-11-09 02:52:27 +08:00
|
|
|
int monitor_subsys_rww_init LDAP_P(( BackendDB *be, monitor_subsys_t *ms ));
|
2004-11-08 18:10:15 +08:00
|
|
|
int monitor_subsys_rww_update LDAP_P(( Operation *op, Entry *e ));
|
|
|
|
|
2004-09-13 06:12:58 +08:00
|
|
|
/* NOTE: this macro assumes that bv has been allocated
|
|
|
|
* by ber_* malloc functions or is { 0L, NULL } */
|
2004-09-27 06:58:47 +08:00
|
|
|
#if defined(HAVE_BIGNUM)
|
|
|
|
#define UI2BV(bv,ui) \
|
|
|
|
do { \
|
|
|
|
char *val; \
|
|
|
|
ber_len_t len; \
|
|
|
|
val = BN_bn2dec(ui); \
|
|
|
|
if (val) { \
|
|
|
|
len = strlen(val); \
|
|
|
|
if ( len > (bv)->bv_len ) { \
|
|
|
|
(bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
|
|
|
|
} \
|
|
|
|
AC_MEMCPY((bv)->bv_val, val, len + 1); \
|
|
|
|
(bv)->bv_len = len; \
|
|
|
|
OPENSSL_free(val); \
|
|
|
|
} else { \
|
|
|
|
ber_memfree( (bv)->bv_val ); \
|
|
|
|
BER_BVZERO( (bv) ); \
|
|
|
|
} \
|
|
|
|
} while ( 0 )
|
|
|
|
#elif defined(HAVE_GMP)
|
2004-09-13 06:12:58 +08:00
|
|
|
/* NOTE: according to the documentation, the result
|
|
|
|
* of mpz_sizeinbase() can exceed the length of the
|
|
|
|
* string representation of the number by 1
|
|
|
|
*/
|
|
|
|
#define UI2BV(bv,ui) \
|
|
|
|
do { \
|
|
|
|
ber_len_t len = mpz_sizeinbase( (ui), 10 ); \
|
|
|
|
if ( len > (bv)->bv_len ) { \
|
|
|
|
(bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
|
|
|
|
} \
|
|
|
|
(void)mpz_get_str( (bv)->bv_val, 10, (ui) ); \
|
|
|
|
if ( (bv)->bv_val[ len - 1 ] == '\0' ) { \
|
|
|
|
len--; \
|
|
|
|
} \
|
|
|
|
(bv)->bv_len = len; \
|
|
|
|
} while ( 0 )
|
2004-09-27 06:58:47 +08:00
|
|
|
#else /* ! HAVE_BIGNUM && ! HAVE_GMP */
|
2004-09-13 06:12:58 +08:00
|
|
|
#define UI2BV(bv,ui) \
|
|
|
|
do { \
|
|
|
|
char buf[] = "+9223372036854775807L"; \
|
|
|
|
ber_len_t len; \
|
|
|
|
snprintf( buf, sizeof( buf ), "%lu", (ui) ); \
|
|
|
|
len = strlen( buf ); \
|
|
|
|
if ( len > (bv)->bv_len ) { \
|
|
|
|
(bv)->bv_val = ber_memrealloc( (bv)->bv_val, len + 1 ); \
|
|
|
|
} \
|
|
|
|
AC_MEMCPY( (bv)->bv_val, buf, len + 1 ); \
|
|
|
|
} while ( 0 )
|
|
|
|
#endif /* ! HAVE_GMP */
|
|
|
|
|
2004-11-11 08:39:19 +08:00
|
|
|
/*
|
|
|
|
* former external.h
|
|
|
|
*/
|
|
|
|
|
2004-11-16 03:45:49 +08:00
|
|
|
extern BI_init monitor_back_initialize;
|
|
|
|
|
2004-11-11 08:39:19 +08:00
|
|
|
extern BI_db_init monitor_back_db_init;
|
|
|
|
extern BI_db_open monitor_back_db_open;
|
|
|
|
extern BI_config monitor_back_config;
|
|
|
|
extern BI_db_destroy monitor_back_db_destroy;
|
|
|
|
extern BI_db_config monitor_back_db_config;
|
|
|
|
|
|
|
|
extern BI_op_search monitor_back_search;
|
|
|
|
extern BI_op_compare monitor_back_compare;
|
|
|
|
extern BI_op_modify monitor_back_modify;
|
|
|
|
extern BI_op_bind monitor_back_bind;
|
|
|
|
extern BI_operational monitor_back_operational;
|
|
|
|
|
2001-07-15 01:34:24 +08:00
|
|
|
LDAP_END_DECL
|
2001-12-27 23:16:12 +08:00
|
|
|
|
2003-04-13 12:51:12 +08:00
|
|
|
#endif /* _PROTO_BACK_MONITOR */
|
2003-04-12 07:08:16 +08:00
|
|
|
|