X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fback-monitor%2Fback-monitor.h;h=58e775ae5ea39c07844e14ccd97340e3dad887dd;hb=21fee6a7f1291cafa1468473a1924751d594d667;hp=97030eef499691b8ba24689a3de6273cc0e39b80;hpb=95f1740aa6bad5df15552a05c7a1d78ba62d0995;p=openldap diff --git a/servers/slapd/back-monitor/back-monitor.h b/servers/slapd/back-monitor/back-monitor.h index 97030eef49..58e775ae5e 100644 --- a/servers/slapd/back-monitor/back-monitor.h +++ b/servers/slapd/back-monitor/back-monitor.h @@ -1,46 +1,31 @@ /* back-monitor.h - ldap monitor back-end header file */ -/* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 2001-2005 The OpenLDAP Foundation. + * Portions Copyright 2001-2003 Pierangelo Masarati. + * 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 + * . */ -/* - * Copyright 2001 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file - * - * Copyright 2001, Pierangelo Masarati, All rights reserved. - * - * This work has beed deveolped for the OpenLDAP Foundation - * in the hope that it may be useful to the Open Source community, - * but WITHOUT ANY WARRANTY. - * - * Permission is granted to anyone to use this software for any purpose - * on any computer system, and to alter it and redistribute it, subject - * to the following restrictions: - * - * 1. The author and SysNet s.n.c. are not responsible for the consequences - * of use of this software, no matter how awful, even if they arise from - * flaws in it. - * - * 2. The origin of this software must not be misrepresented, either by - * explicit claim or by omission. Since few users ever read sources, - * credits should appear in the documentation. - * - * 3. Altered versions must be plainly marked as such, and must not be - * misrepresented as being the original software. Since few users - * ever read sources, credits should appear in the documentation. - * SysNet s.n.c. cannot be responsible for the consequences of the - * alterations. - * - * 4. This notice may not be removed or altered. +/* ACKNOWLEDGEMENTS: + * This work was initially developed by Pierangelo Masarati for inclusion + * in OpenLDAP Software. */ #ifndef _BACK_MONITOR_H_ #define _BACK_MONITOR_H_ -#include -#include #include #include +#include +#include LDAP_BEGIN_DECL @@ -51,7 +36,7 @@ LDAP_BEGIN_DECL * selection. */ struct monitorcache { - char *mc_ndn; + struct berval mc_ndn; Entry *mc_e; }; @@ -74,109 +59,179 @@ struct monitorentrypriv { }; struct monitorinfo { + + /* + * Internal data + */ Avlnode *mi_cache; ldap_pvt_thread_mutex_t mi_cache_mutex; + + /* + * Config parameters + */ + struct berval mi_l; + struct berval mi_startTime; /* don't free it */ + + /* + * Specific schema entities + */ + ObjectClass *mi_oc_monitor; + ObjectClass *mi_oc_monitorServer; + ObjectClass *mi_oc_monitorContainer; + ObjectClass *mi_oc_monitorCounterObject; + ObjectClass *mi_oc_monitorOperation; + ObjectClass *mi_oc_monitorConnection; + ObjectClass *mi_oc_managedObject; + ObjectClass *mi_oc_monitoredObject; + + AttributeDescription *mi_ad_monitoredInfo; + AttributeDescription *mi_ad_managedInfo; + AttributeDescription *mi_ad_monitorCounter; + AttributeDescription *mi_ad_monitorOpCompleted; + AttributeDescription *mi_ad_monitorOpInitiated; + AttributeDescription *mi_ad_monitorConnectionNumber; + AttributeDescription *mi_ad_monitorConnectionAuthzDN; + AttributeDescription *mi_ad_monitorConnectionLocalAddress; + AttributeDescription *mi_ad_monitorConnectionPeerAddress; + AttributeDescription *mi_ad_monitorTimestamp; + AttributeDescription *mi_ad_monitorOverlay; + + /* + * Generic description attribute + */ + AttributeDescription *mi_ad_description; + AttributeDescription *mi_ad_seeAlso; + AttributeDescription *mi_ad_l; + AttributeDescription *mi_ad_labeledURI; }; /* * DNs */ + +#define SLAPD_MONITOR_AT "cn" + #define SLAPD_MONITOR_LISTENER 0 -#define SLAPD_MONITOR_LISTENER_NAME "Listener" +#define SLAPD_MONITOR_LISTENER_NAME "Listeners" #define SLAPD_MONITOR_LISTENER_RDN \ - "cn=" SLAPD_MONITOR_LISTENER_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_LISTENER_NAME #define SLAPD_MONITOR_LISTENER_DN \ SLAPD_MONITOR_LISTENER_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_DATABASE 1 #define SLAPD_MONITOR_DATABASE_NAME "Databases" #define SLAPD_MONITOR_DATABASE_RDN \ - "cn=" SLAPD_MONITOR_DATABASE_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_DATABASE_NAME #define SLAPD_MONITOR_DATABASE_DN \ SLAPD_MONITOR_DATABASE_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_BACKEND 2 #define SLAPD_MONITOR_BACKEND_NAME "Backends" #define SLAPD_MONITOR_BACKEND_RDN \ - "cn=" SLAPD_MONITOR_BACKEND_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_BACKEND_NAME #define SLAPD_MONITOR_BACKEND_DN \ SLAPD_MONITOR_BACKEND_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_THREAD 3 #define SLAPD_MONITOR_THREAD_NAME "Threads" #define SLAPD_MONITOR_THREAD_RDN \ - "cn=" SLAPD_MONITOR_THREAD_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_THREAD_NAME #define SLAPD_MONITOR_THREAD_DN \ SLAPD_MONITOR_THREAD_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_SASL 4 #define SLAPD_MONITOR_SASL_NAME "SASL" #define SLAPD_MONITOR_SASL_RDN \ - "cn=" SLAPD_MONITOR_SASL_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_SASL_NAME #define SLAPD_MONITOR_SASL_DN \ SLAPD_MONITOR_SASL_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_TLS 5 #define SLAPD_MONITOR_TLS_NAME "TLS" #define SLAPD_MONITOR_TLS_RDN \ - "cn=" SLAPD_MONITOR_TLS_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_TLS_NAME #define SLAPD_MONITOR_TLS_DN \ SLAPD_MONITOR_TLS_RDN "," SLAPD_MONITOR_DN #define SLAPD_MONITOR_CONN 6 #define SLAPD_MONITOR_CONN_NAME "Connections" #define SLAPD_MONITOR_CONN_RDN \ - "cn=" SLAPD_MONITOR_CONN_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_CONN_NAME #define SLAPD_MONITOR_CONN_DN \ SLAPD_MONITOR_CONN_RDN "," SLAPD_MONITOR_DN -#define SLAPD_MONITOR_READW 7 -#define SLAPD_MONITOR_READW_NAME "Read Waiters" -#define SLAPD_MONITOR_READW_RDN \ - "cn=" SLAPD_MONITOR_READW_NAME -#define SLAPD_MONITOR_READW_DN \ - SLAPD_MONITOR_READW_RDN "," SLAPD_MONITOR_DN - -#define SLAPD_MONITOR_WRITEW 8 -#define SLAPD_MONITOR_WRITEW_NAME "Write Waiters" -#define SLAPD_MONITOR_WRITEW_RDN \ - "cn=" SLAPD_MONITOR_WRITEW_NAME -#define SLAPD_MONITOR_WRITEW_DN \ - SLAPD_MONITOR_WRITEW_RDN "," SLAPD_MONITOR_DN - -#define SLAPD_MONITOR_LOG 9 +#define SLAPD_MONITOR_RWW 7 +#define SLAPD_MONITOR_RWW_NAME "Waiters" +#define SLAPD_MONITOR_RWW_RDN \ + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_RWW_NAME +#define SLAPD_MONITOR_RWW_DN \ + SLAPD_MONITOR_RWW_RDN "," SLAPD_MONITOR_DN + +#define SLAPD_MONITOR_LOG 8 #define SLAPD_MONITOR_LOG_NAME "Log" #define SLAPD_MONITOR_LOG_RDN \ - "cn=" SLAPD_MONITOR_LOG_NAME + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_LOG_NAME #define SLAPD_MONITOR_LOG_DN \ SLAPD_MONITOR_LOG_RDN "," SLAPD_MONITOR_DN +#define SLAPD_MONITOR_OPS 9 +#define SLAPD_MONITOR_OPS_NAME "Operations" +#define SLAPD_MONITOR_OPS_RDN \ + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_OPS_NAME +#define SLAPD_MONITOR_OPS_DN \ + SLAPD_MONITOR_OPS_RDN "," SLAPD_MONITOR_DN + +#define SLAPD_MONITOR_SENT 10 +#define SLAPD_MONITOR_SENT_NAME "Statistics" +#define SLAPD_MONITOR_SENT_RDN \ + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_SENT_NAME +#define SLAPD_MONITOR_SENT_DN \ + SLAPD_MONITOR_SENT_RDN "," SLAPD_MONITOR_DN + +#define SLAPD_MONITOR_TIME 11 +#define SLAPD_MONITOR_TIME_NAME "Time" +#define SLAPD_MONITOR_TIME_RDN \ + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_TIME_NAME +#define SLAPD_MONITOR_TIME_DN \ + SLAPD_MONITOR_TIME_RDN "," SLAPD_MONITOR_DN + +#define SLAPD_MONITOR_OVERLAY 12 +#define SLAPD_MONITOR_OVERLAY_NAME "Overlay" +#define SLAPD_MONITOR_OVERLAY_RDN \ + SLAPD_MONITOR_AT "=" SLAPD_MONITOR_OVERLAY_NAME +#define SLAPD_MONITOR_OVERLAY_DN \ + SLAPD_MONITOR_OVERLAY_RDN "," SLAPD_MONITOR_DN + struct monitorsubsys { int mss_type; char *mss_name; - char *mss_rdn; - char *mss_dn; - char *mss_ndn; + struct berval mss_rdn; + struct berval mss_dn; + struct berval mss_ndn; int mss_flags; #define MONITOR_HAS_VOLATILE_CH( mp ) \ ( ( mp )->mp_flags & MONITOR_F_VOLATILE_CH ) +#define MONITOR_HAS_CHILDREN( mp ) \ + ( ( mp )->mp_children || MONITOR_HAS_VOLATILE_CH( mp ) ) /* initialize entry and subentries */ int ( *mss_init )( BackendDB * ); /* update existing dynamic entry and subentries */ - int ( *mss_update )( struct monitorinfo *, Entry * ); + int ( *mss_update )( Operation *, Entry * ); /* create new dynamic subentries */ - int ( *mss_create )( struct monitorinfo *, const char *ndn, - Entry *, Entry ** ); + int ( *mss_create )( Operation *, + struct berval *ndn, Entry *, Entry ** ); /* modify entry and subentries */ - int ( *mss_modify )( struct monitorinfo *, Entry *, - Modifications *modlist ); + int ( *mss_modify )( Operation *, Entry * ); }; extern struct monitorsubsys monitor_subsys[]; -extern AttributeDescription *monitor_ad_desc; +extern BackendDB *be_monitor; + +/* increase this bufsize if entries in string form get too big */ +#define BACKMONITOR_BUFSIZE 1024 /* * cache @@ -185,8 +240,8 @@ extern AttributeDescription *monitor_ad_desc; extern int monitor_cache_cmp LDAP_P(( const void *c1, const void *c2 )); extern int monitor_cache_dup LDAP_P(( void *c1, void *c2 )); extern int monitor_cache_add LDAP_P(( struct monitorinfo *mi, Entry *e )); -extern int monitor_cache_get LDAP_P(( struct monitorinfo *mi, const char *ndn, Entry **ep )); -extern int monitor_cache_dn2entry LDAP_P(( struct monitorinfo *mi, const char *ndn, Entry **ep, Entry **matched )); +extern int monitor_cache_get LDAP_P(( struct monitorinfo *mi, struct berval *ndn, Entry **ep )); +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 )); extern int monitor_cache_release LDAP_P(( struct monitorinfo *mi, Entry *e )); @@ -194,9 +249,10 @@ extern int monitor_cache_release LDAP_P(( struct monitorinfo *mi, Entry *e )); * update */ -extern int monitor_entry_update LDAP_P(( struct monitorinfo *mi, Entry *e )); -extern int monitor_entry_create LDAP_P(( struct monitorinfo *mi, const char *ndn, Entry *e_parent, Entry **ep )); -extern int monitor_entry_modify LDAP_P(( struct monitorinfo *mi, Entry *e, Modifications *modlist )); +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 )); LDAP_END_DECL