📄 init.c
字号:
if ( sub ) { for ( i = 0; monitor_subsys[ i ] != NULL; i++ ) { if ( dnIsSuffix( ndn, &monitor_subsys[ i ]->mss_ndn ) ) { return monitor_subsys[ i ]; } } } else { for ( i = 0; monitor_subsys[ i ] != NULL; i++ ) { if ( dn_match( ndn, &monitor_subsys[ i ]->mss_ndn ) ) { return monitor_subsys[ i ]; } } } } return NULL;}intmonitor_back_initialize( BackendInfo *bi ){ 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 } }; struct m_s { char *name; char *schema; slap_mask_t flags; int offset; } moc[] = { { "monitor", "( 1.3.6.1.4.1.4203.666.3.16.1 " "NAME 'monitor' " "DESC 'OpenLDAP system monitoring' " "SUP top STRUCTURAL " "MUST cn " "MAY ( " "description " "$ seeAlso " "$ labeledURI " "$ monitoredInfo " "$ managedInfo " "$ monitorOverlay " ") )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitor) }, { "monitorServer", "( 1.3.6.1.4.1.4203.666.3.16.2 " "NAME 'monitorServer' " "DESC 'Server monitoring root entry' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitorServer) }, { "monitorContainer", "( 1.3.6.1.4.1.4203.666.3.16.3 " "NAME 'monitorContainer' " "DESC 'monitor container class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitorContainer) }, { "monitorCounterObject", "( 1.3.6.1.4.1.4203.666.3.16.4 " "NAME 'monitorCounterObject' " "DESC 'monitor counter class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitorCounterObject) }, { "monitorOperation", "( 1.3.6.1.4.1.4203.666.3.16.5 " "NAME 'monitorOperation' " "DESC 'monitor operation class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitorOperation) }, { "monitorConnection", "( 1.3.6.1.4.1.4203.666.3.16.6 " "NAME 'monitorConnection' " "DESC 'monitor connection class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitorConnection) }, { "managedObject", "( 1.3.6.1.4.1.4203.666.3.16.7 " "NAME 'managedObject' " "DESC 'monitor managed entity class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_managedObject) }, { "monitoredObject", "( 1.3.6.1.4.1.4203.666.3.16.8 " "NAME 'monitoredObject' " "DESC 'monitor monitored entity class' " "SUP monitor STRUCTURAL )", SLAP_OC_OPERATIONAL|SLAP_OC_HIDE, offsetof(monitor_info_t, mi_oc_monitoredObject) }, { NULL, NULL, 0, -1 } }, mat[] = { { "monitoredInfo", "( 1.3.6.1.4.1.4203.666.1.55.1 " "NAME 'monitoredInfo' " "DESC 'monitored info' " /* "SUP name " */ "EQUALITY caseIgnoreMatch " "SUBSTR caseIgnoreSubstringsMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitoredInfo) }, { "managedInfo", "( 1.3.6.1.4.1.4203.666.1.55.2 " "NAME 'managedInfo' " "DESC 'monitor managed info' " "SUP name )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_managedInfo) }, { "monitorCounter", "( 1.3.6.1.4.1.4203.666.1.55.3 " "NAME 'monitorCounter' " "DESC 'monitor counter' " "EQUALITY integerMatch " "ORDERING integerOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorCounter) }, { "monitorOpCompleted", "( 1.3.6.1.4.1.4203.666.1.55.4 " "NAME 'monitorOpCompleted' " "DESC 'monitor completed operations' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorOpCompleted) }, { "monitorOpInitiated", "( 1.3.6.1.4.1.4203.666.1.55.5 " "NAME 'monitorOpInitiated' " "DESC 'monitor initiated operations' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorOpInitiated) }, { "monitorConnectionNumber", "( 1.3.6.1.4.1.4203.666.1.55.6 " "NAME 'monitorConnectionNumber' " "DESC 'monitor connection number' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionNumber) }, { "monitorConnectionAuthzDN", "( 1.3.6.1.4.1.4203.666.1.55.7 " "NAME 'monitorConnectionAuthzDN' " "DESC 'monitor connection authorization DN' " /* "SUP distinguishedName " */ "EQUALITY distinguishedNameMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionAuthzDN) }, { "monitorConnectionLocalAddress", "( 1.3.6.1.4.1.4203.666.1.55.8 " "NAME 'monitorConnectionLocalAddress' " "DESC 'monitor connection local address' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionLocalAddress) }, { "monitorConnectionPeerAddress", "( 1.3.6.1.4.1.4203.666.1.55.9 " "NAME 'monitorConnectionPeerAddress' " "DESC 'monitor connection peer address' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionPeerAddress) }, { "monitorTimestamp", "( 1.3.6.1.4.1.4203.666.1.55.10 " "NAME 'monitorTimestamp' " "DESC 'monitor timestamp' " "EQUALITY generalizedTimeMatch " "ORDERING generalizedTimeOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 " "SINGLE-VALUE " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorTimestamp) }, { "monitorOverlay", "( 1.3.6.1.4.1.4203.666.1.55.11 " "NAME 'monitorOverlay' " "DESC 'name of overlays defined for a given database' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorOverlay) }, { "readOnly", "( 1.3.6.1.4.1.4203.666.1.55.12 " "NAME 'readOnly' " "DESC 'read/write status of a given database' " "EQUALITY booleanMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 " "SINGLE-VALUE " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_readOnly) }, { "restrictedOperation", "( 1.3.6.1.4.1.4203.666.1.55.13 " "NAME 'restrictedOperation' " "DESC 'name of restricted operation for a given database' " "SUP managedInfo )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_restrictedOperation ) }, { "monitorConnectionProtocol", "( 1.3.6.1.4.1.4203.666.1.55.14 " "NAME 'monitorConnectionProtocol' " "DESC 'monitor connection protocol' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionProtocol) }, { "monitorConnectionOpsReceived", "( 1.3.6.1.4.1.4203.666.1.55.15 " "NAME 'monitorConnectionOpsReceived' " "DESC 'monitor number of operations received by the connection' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionOpsReceived) }, { "monitorConnectionOpsExecuting", "( 1.3.6.1.4.1.4203.666.1.55.16 " "NAME 'monitorConnectionOpsExecuting' " "DESC 'monitor number of operations in execution within the connection' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionOpsExecuting) }, { "monitorConnectionOpsPending", "( 1.3.6.1.4.1.4203.666.1.55.17 " "NAME 'monitorConnectionOpsPending' " "DESC 'monitor number of pending operations within the connection' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionOpsPending) }, { "monitorConnectionOpsCompleted", "( 1.3.6.1.4.1.4203.666.1.55.18 " "NAME 'monitorConnectionOpsCompleted' " "DESC 'monitor number of operations completed within the connection' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionOpsCompleted) }, { "monitorConnectionGet", "( 1.3.6.1.4.1.4203.666.1.55.19 " "NAME 'monitorConnectionGet' " "DESC 'number of times connection_get() was called so far' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionGet) }, { "monitorConnectionRead", "( 1.3.6.1.4.1.4203.666.1.55.20 " "NAME 'monitorConnectionRead' " "DESC 'number of times connection_read() was called so far' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionRead) }, { "monitorConnectionWrite", "( 1.3.6.1.4.1.4203.666.1.55.21 " "NAME 'monitorConnectionWrite' " "DESC 'number of times connection_write() was called so far' " "SUP monitorCounter " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionWrite) }, { "monitorConnectionMask", "( 1.3.6.1.4.1.4203.666.1.55.22 " "NAME 'monitorConnectionMask' " "DESC 'monitor connection mask' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionMask) }, { "monitorConnectionListener", "( 1.3.6.1.4.1.4203.666.1.55.23 " "NAME 'monitorConnectionListener' " "DESC 'monitor connection listener' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionListener) }, { "monitorConnectionPeerDomain", "( 1.3.6.1.4.1.4203.666.1.55.24 " "NAME 'monitorConnectionPeerDomain' " "DESC 'monitor connection peer domain' " "SUP monitoredInfo " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionPeerDomain) }, { "monitorConnectionStartTime", "( 1.3.6.1.4.1.4203.666.1.55.25 " "NAME 'monitorConnectionStartTime' " "DESC 'monitor connection start time' " "SUP monitorTimestamp " "SINGLE-VALUE " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionStartTime) }, { "monitorConnectionActivityTime", "( 1.3.6.1.4.1.4203.666.1.55.26 " "NAME 'monitorConnectionActivityTime' " "DESC 'monitor connection activity time' " "SUP monitorTimestamp " "SINGLE-VALUE " "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionActivityTime) }, { "monitorIsShadow", "( 1.3.6.1.4.1.4203.666.1.55.27 " "NAME 'monitorIsShadow' " "DESC 'TRUE if the database is shadow' " "EQUALITY booleanMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 " "SINGLE-VALUE " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorIsShadow) }, { "monitorUpdateRef", "( 1.3.6.1.4.1.4203.666.1.55.28 " "NAME 'monitorUpdateRef' " "DESC 'update referral for shadow databases' " "SUP monitoredInfo " "SINGLE-VALUE " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorUpdateRef) }, { "monitorRuntimeConfig", "( 1.3.6.1.4.1.4203.666.1.55.29 " "NAME 'monitorRuntimeConfig' " "DESC 'TRUE if component allows runtime configuration' " "EQUALITY booleanMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 " "SINGLE-VALUE " "USAGE directoryOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorRuntimeConfig) }, { NULL, NULL, 0, -1 } }; int i, rc; const char *text; monitor_info_t *mi = &monitor_info; /* schema integration */ for ( i = 0; mat[ i ].name; i++ ) { LDAPAttributeType *at; int code; const char *err; AttributeDescription **ad; at = ldap_str2attributetype( mat[ i ].schema, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { Debug( LDAP_DEBUG_ANY, "monitor_back_db_init: " "in AttributeType \"%s\" %s before %s\n", mat[ i ].name, ldap_scherr2str(code), err ); return -1; } if ( at->at_oid == NULL ) { Debug( LDAP_DEBUG_ANY, "monitor_back_db_init: " "null OID for attributeType \"%s\"\n", mat[ i ].name, 0, 0 ); return -1; } code = at_add(at, 0, NULL, &err); if ( code ) { Debug( LDAP_DEBUG_ANY, "monitor_back_db_init: " "%s in attributeType \"%s\"\n", scherr2str(code), mat[ i ].name, 0 ); return -1; } ldap_memfree(at); ad = ((AttributeDescription **)&(((char *)mi)[ mat[ i ].offset ])); ad[ 0 ] = NULL; if ( slap_str2ad( mat[ i ].name, ad, &text ) ) { Debug( LDAP_DEBUG_ANY, "monitor_back_db_init: %s\n", text, 0, 0 ); return -1; } (*ad)->ad_type->sat_flags |= mat[ i ].flags; } for ( i = 0; moc[ i ].name; i++ ) { LDAPObjectClass *oc; int code; const char *err; ObjectClass *Oc; oc = ldap_str2objectclass(moc[ i ].schema, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !oc ) { Debug( LDAP_DEBUG_ANY, "unable to parse monitor objectclass \"%s\": " "%s before %s\n" , moc[ i ].name, ldap_scherr2str(code), err ); return -1; } if ( oc->oc_oid == NULL ) { Debug( LDAP_DEBUG_ANY, "objectclass \"%s\" has no OID\n" , moc[ i ].name, 0, 0 ); return -1; } code = oc_add(oc, 0, NULL, &err); if ( code ) { Debug( LDAP_DEBUG_ANY, "objectclass \"%s\": %s \"%s\"\n" , moc[ i ].name, scherr2str(code), err ); return -1; } ldap_memfree(oc); Oc = oc_find( moc[ i ].name ); if ( Oc == NULL ) { Debug( LDAP_DEBUG_ANY, "monitor_back_db_init: " "unable to find objectClass %s " "(just added)\n", moc[ i ].name, 0, 0 ); return -1; } Oc->soc_flags |= moc[ i ].flags; ((ObjectClass **)&(((char *)mi)[ moc[ i ].offset ]))[ 0 ] = Oc; } 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;#if 0 bi->bi_db_config = monitor_back_db_config;#endif 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; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -