monitor_back_unregister_entry_attrs,
monitor_back_unregister_entry_callback,
- monitor_back_entry_stub
+ monitor_back_entry_stub,
+ monitor_back_entrypriv_create,
+ monitor_back_register_subsys_late
};
LIMBO_DATABASE,
LIMBO_OVERLAY_INFO,
LIMBO_OVERLAY,
+ LIMBO_SUBSYS,
LIMBO_LAST
};
return be_monitor != NULL;
}
+int
+monitor_back_register_subsys_late(
+ monitor_subsys_t *ms )
+{
+ entry_limbo_t **elpp, el = { 0 };
+ monitor_info_t *mi;
+
+ if ( be_monitor == NULL ) {
+ Debug( LDAP_DEBUG_ANY,
+ "monitor_back_register_subsys_late: "
+ "monitor database not configured.\n",
+ 0, 0, 0 );
+ return -1;
+ }
+
+ /* everyting is ready, can register already */
+ if ( monitor_subsys_is_opened() ) {
+ return monitor_back_register_subsys( ms );
+ }
+
+ mi = ( monitor_info_t * )be_monitor->be_private;
+
+
+ el.el_type = LIMBO_SUBSYS;
+
+ el.el_mss = ms;
+
+ for ( elpp = &mi->mi_entry_limbo;
+ *elpp;
+ elpp = &(*elpp)->el_next )
+ /* go to last */;
+
+ *elpp = (entry_limbo_t *)ch_malloc( sizeof( entry_limbo_t ) );
+
+ el.el_next = NULL;
+ **elpp = el;
+
+ return 0;
+}
+
int
monitor_back_register_backend(
BackendInfo *bi )
/*
* creates the "cn=Monitor" entry
*/
- e = monitor_entry_stub( NULL, NULL, &rdn, mi->mi_oc_monitorServer, mi,
+ e = monitor_entry_stub( NULL, NULL, &rdn, mi->mi_oc_monitorServer,
NULL, NULL );
if ( e == NULL) {
}
e = monitor_entry_stub( &root->e_name, &root->e_nname,
- &monitor_subsys[ i ]->mss_rdn, mi->mi_oc_monitorContainer, mi,
+ &monitor_subsys[ i ]->mss_rdn, mi->mi_oc_monitorContainer,
NULL, NULL );
if ( e == NULL) {
rc = monitor_back_register_overlay( el->el_be, el->el_on, el->el_ndn );
break;
+ case LIMBO_SUBSYS:
+ rc = monitor_back_register_subsys( el->el_mss );
+ break;
+
default:
assert( 0 );
}