⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 ldap服务器源码
💻 C
📖 第 1 页 / 共 4 页
字号:
		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 + -