From 6495247869b6724039f7652babd7c71fce19894a Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Mon, 14 Nov 2005 19:28:28 +0000 Subject: [PATCH] initialize back-monitor only if configured (so resources get released at shutdown) --- servers/slapd/back-monitor/init.c | 176 +++++++++++++++--------------- 1 file changed, 90 insertions(+), 86 deletions(-) diff --git a/servers/slapd/back-monitor/init.c b/servers/slapd/back-monitor/init.c index a13056cdf6..1f6a5777f5 100644 --- a/servers/slapd/back-monitor/init.c +++ b/servers/slapd/back-monitor/init.c @@ -970,11 +970,100 @@ int monitor_back_initialize( BackendInfo *bi ) { - monitor_subsys_t *ms; static char *controls[] = { LDAP_CONTROL_MANAGEDSAIT, NULL }; + + static ConfigTable monitorcfg[] = { + { NULL, NULL, 0, 0, 0, ARG_IGNORED, + NULL, NULL, NULL, NULL } + }; + + static ConfigOCs monitorocs[] = { + { "( OLcfgDbOc:4.1 " + "NAME 'olcMonitorConfig' " + "DESC 'Monitor backend configuration' " + "SUP olcDatabaseConfig " + ")", + Cft_Database, monitorcfg }, + { NULL, 0, NULL } + }; + + int rc; + + bi->bi_controls = controls; + + bi->bi_init = 0; + bi->bi_open = 0; + bi->bi_config = monitor_back_config; + bi->bi_close = 0; + bi->bi_destroy = 0; + + bi->bi_db_init = monitor_back_db_init; + bi->bi_db_config = monitor_back_db_config; + bi->bi_db_open = monitor_back_db_open; + bi->bi_db_close = 0; + bi->bi_db_destroy = monitor_back_db_destroy; + + bi->bi_op_bind = monitor_back_bind; + bi->bi_op_unbind = 0; + bi->bi_op_search = monitor_back_search; + bi->bi_op_compare = monitor_back_compare; + bi->bi_op_modify = monitor_back_modify; + bi->bi_op_modrdn = 0; + bi->bi_op_add = 0; + bi->bi_op_delete = 0; + bi->bi_op_abandon = 0; + + bi->bi_extended = 0; + + bi->bi_entry_release_rw = 0; + bi->bi_chk_referrals = 0; + bi->bi_operational = monitor_back_operational; + + /* + * hooks for slap tools + */ + bi->bi_tool_entry_open = 0; + bi->bi_tool_entry_close = 0; + bi->bi_tool_entry_first = 0; + bi->bi_tool_entry_next = 0; + bi->bi_tool_entry_get = 0; + bi->bi_tool_entry_put = 0; + bi->bi_tool_entry_reindex = 0; + bi->bi_tool_sync = 0; + bi->bi_tool_dn2id_get = 0; + bi->bi_tool_id2entry_get = 0; + bi->bi_tool_entry_modify = 0; + + bi->bi_connection_init = 0; + bi->bi_connection_destroy = 0; + + /* + * configuration objectClasses (fake) + */ + bi->bi_cf_ocs = monitorocs; + + rc = config_register_schema( monitorcfg, monitorocs ); + if ( rc ) { + return rc; + } + + return 0; +} + +int +monitor_back_db_init( + BackendDB *be ) +{ + int rc; + struct berval dn = BER_BVC( SLAPD_MONITOR_DN ), + pdn, + ndn; + BackendDB *be2; + + monitor_subsys_t *ms; monitor_info_t *mi = &monitor_info; int i; const char *text; @@ -1252,78 +1341,6 @@ monitor_back_initialize( offsetof(monitor_info_t, mi_ad_monitorRuntimeConfig) }, { NULL, NULL, 0, -1 } }; - static ConfigTable monitorcfg[] = { - { NULL, NULL, 0, 0, 0, ARG_IGNORED, - NULL, NULL, NULL, NULL } - }; - static ConfigOCs monitorocs[] = { - { "( OLcfgDbOc:4.1 " - "NAME 'olcMonitorConfig' " - "DESC 'Monitor backend configuration' " - "SUP olcDatabaseConfig " - ")", - Cft_Database, monitorcfg }, - { NULL, 0, NULL } - }; - int rc; - - bi->bi_controls = controls; - - bi->bi_init = 0; - bi->bi_open = 0; - bi->bi_config = monitor_back_config; - bi->bi_close = 0; - bi->bi_destroy = 0; - - bi->bi_db_init = monitor_back_db_init; - bi->bi_db_config = monitor_back_db_config; - bi->bi_db_open = monitor_back_db_open; - bi->bi_db_close = 0; - bi->bi_db_destroy = monitor_back_db_destroy; - - bi->bi_op_bind = monitor_back_bind; - bi->bi_op_unbind = 0; - bi->bi_op_search = monitor_back_search; - bi->bi_op_compare = monitor_back_compare; - bi->bi_op_modify = monitor_back_modify; - bi->bi_op_modrdn = 0; - bi->bi_op_add = 0; - bi->bi_op_delete = 0; - bi->bi_op_abandon = 0; - - bi->bi_extended = 0; - - bi->bi_entry_release_rw = 0; - bi->bi_chk_referrals = 0; - bi->bi_operational = monitor_back_operational; - - /* - * hooks for slap tools - */ - bi->bi_tool_entry_open = 0; - bi->bi_tool_entry_close = 0; - bi->bi_tool_entry_first = 0; - bi->bi_tool_entry_next = 0; - bi->bi_tool_entry_get = 0; - bi->bi_tool_entry_put = 0; - bi->bi_tool_entry_reindex = 0; - bi->bi_tool_sync = 0; - bi->bi_tool_dn2id_get = 0; - bi->bi_tool_id2entry_get = 0; - bi->bi_tool_entry_modify = 0; - - bi->bi_connection_init = 0; - bi->bi_connection_destroy = 0; - - /* - * configuration objectClasses (fake) - */ - bi->bi_cf_ocs = monitorocs; - - rc = config_register_schema( monitorcfg, monitorocs ); - if ( rc ) { - return rc; - } /* * register subsys @@ -1423,19 +1440,6 @@ monitor_back_initialize( ((ObjectClass **)&(((char *)mi)[ moc[ i ].offset ]))[ 0 ] = Oc; } - return 0; -} - -int -monitor_back_db_init( - BackendDB *be ) -{ - int rc; - struct berval dn = BER_BVC( SLAPD_MONITOR_DN ), - pdn, - ndn; - BackendDB *be2; - /* * database monitor can be defined once only */ -- 2.39.5