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

📄 snmp_bc_discover_bc.c

📁 HIP 硬件设备管理标准接口
💻 C
📖 第 1 页 / 共 2 页
字号:
						sizeof(struct ResourceInfo));			res_info_ptr->cur_state = SAHPI_HS_STATE_ACTIVE;			/* Add resource to temporary event cache/queue */			err = oh_add_resource(custom_handle->tmpcache, 					      &(e->u.res_event.entry),					      res_info_ptr, 0);			if (err) {				dbg("Failed to add resource. Error=%s.", oh_lookup_error(err));				g_free(e);				return(err);			}			custom_handle->tmpqueue = g_slist_append(custom_handle->tmpqueue, e);						/* Find resource's events, sensors, controls, etc. */			snmp_bc_discover_res_events(handle, &(e->u.res_event.entry.ResourceEntity), res_info_ptr);			snmp_bc_discover_sensors(handle, snmp_bc_fan_sensors, e);			snmp_bc_discover_controls(handle, snmp_bc_fan_controls, e);			snmp_bc_discover_inventories(handle, snmp_bc_fan_inventories, e);		}	}        /************************	 * Discover Power Modules	 ************************/	err = snmp_bc_snmp_get(custom_handle, SNMP_BC_POWER_VECTOR, &get_value);        if (err || get_value.type != ASN_OCTET_STR) {		dbg("Cannot get OID=%s; Received Type=%d; Error=%s.",		      SNMP_BC_POWER_VECTOR, get_value.type, oh_lookup_error(err));		if (err) { return(err); }		else { return(SA_ERR_HPI_INTERNAL_ERROR); }        }	for (i=0; i < strlen(get_value.string); i++) {		if (get_value.string[i] == '1') {			e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));			if (e == NULL) {				dbg("Out of memory.");				return(SA_ERR_HPI_OUT_OF_SPACE);			}			e->type = OH_ET_RESOURCE;			e->did = oh_get_default_domain_id();			e->u.res_event.entry = snmp_rpt_array[BC_RPT_ENTRY_POWER_MODULE].rpt;			ep_concat(&(e->u.res_event.entry.ResourceEntity), ep_root);			set_ep_instance(&(e->u.res_event.entry.ResourceEntity),					SAHPI_ENT_POWER_SUPPLY, i + SNMP_BC_HPI_LOCATION_BASE);			e->u.res_event.entry.ResourceId = 				oh_uid_from_entity_path(&(e->u.res_event.entry.ResourceEntity));			snmp_bc_create_resourcetag(&(e->u.res_event.entry.ResourceTag),						   snmp_rpt_array[BC_RPT_ENTRY_POWER_MODULE].comment,						   i + SNMP_BC_HPI_LOCATION_BASE);			trace("Discovered resource=%s.", e->u.res_event.entry.ResourceTag.Data);			/* Create platform-specific info space to add to infra-structure */			res_info_ptr = g_memdup(&(snmp_rpt_array[BC_RPT_ENTRY_POWER_MODULE].res_info),						sizeof(struct ResourceInfo));			res_info_ptr->cur_state = SAHPI_HS_STATE_ACTIVE;			/* Add resource to temporary event cache/queue */			err = oh_add_resource(custom_handle->tmpcache, 					      &(e->u.res_event.entry),					      res_info_ptr, 0);			if (err) {				dbg("Failed to add resource. Error=%s.", oh_lookup_error(err));				g_free(e);				return(err);			}			custom_handle->tmpqueue = g_slist_append(custom_handle->tmpqueue, e);						/* Find resource's events, sensors, controls, etc. */			snmp_bc_discover_res_events(handle, &(e->u.res_event.entry.ResourceEntity), res_info_ptr);			snmp_bc_discover_sensors(handle, snmp_bc_power_sensors, e);			snmp_bc_discover_controls(handle, snmp_bc_power_controls, e);			snmp_bc_discover_inventories(handle, snmp_bc_power_inventories, e);		}	}	/******************* 	 * Discover Switches	 *******************/	err = snmp_bc_snmp_get(custom_handle, SNMP_BC_SWITCH_VECTOR, &get_value);        if (err || get_value.type != ASN_OCTET_STR) {		dbg("Cannot get OID=%s; Received Type=%d; Error=%s.",		      SNMP_BC_SWITCH_VECTOR, get_value.type, oh_lookup_error(err));		if (err) { return(err); }		else { return(SA_ERR_HPI_INTERNAL_ERROR); }        }	for (i=0; i < strlen(get_value.string); i++) {		if (get_value.string[i] == '1') {			e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));			if (e == NULL) {				dbg("Out of memory.");				return(SA_ERR_HPI_OUT_OF_SPACE);			}			e->type = OH_ET_RESOURCE;			e->did = oh_get_default_domain_id();			e->u.res_event.entry = snmp_rpt_array[BC_RPT_ENTRY_SWITCH_MODULE].rpt;			ep_concat(&(e->u.res_event.entry.ResourceEntity), ep_root);			set_ep_instance(&(e->u.res_event.entry.ResourceEntity),					SAHPI_ENT_INTERCONNECT, i + SNMP_BC_HPI_LOCATION_BASE);			e->u.res_event.entry.ResourceId = 				oh_uid_from_entity_path(&(e->u.res_event.entry.ResourceEntity));			snmp_bc_create_resourcetag(&(e->u.res_event.entry.ResourceTag),						   snmp_rpt_array[BC_RPT_ENTRY_SWITCH_MODULE].comment,						   i + SNMP_BC_HPI_LOCATION_BASE);			trace("Discovered resource=%s.", e->u.res_event.entry.ResourceTag.Data);			/* Create platform-specific info space to add to infra-structure */			res_info_ptr = g_memdup(&(snmp_rpt_array[BC_RPT_ENTRY_SWITCH_MODULE].res_info),						sizeof(struct ResourceInfo));			res_info_ptr->cur_state = SAHPI_HS_STATE_ACTIVE;			/* Add resource to temporary event cache/queue */			err = oh_add_resource(custom_handle->tmpcache, 					      &(e->u.res_event.entry),					      res_info_ptr, 0);			if (err) {				dbg("Failed to add resource. Error=%s.", oh_lookup_error(err));				g_free(e);				return(err);			}			custom_handle->tmpqueue = g_slist_append(custom_handle->tmpqueue, e);						/* Find resource's events, sensors, controls, etc. */			snmp_bc_discover_res_events(handle, &(e->u.res_event.entry.ResourceEntity), res_info_ptr);			snmp_bc_discover_sensors(handle, snmp_bc_switch_sensors, e);			snmp_bc_discover_controls(handle, snmp_bc_switch_controls, e);			snmp_bc_discover_inventories(handle, snmp_bc_switch_inventories, e);		}	}	/********************** 	 * Discover Media Tray	 *********************/	err = snmp_bc_snmp_get(custom_handle, SNMP_BC_MEDIATRAY_EXISTS, &get_value);        if (err || get_value.type != ASN_INTEGER) {		dbg("Cannot get OID=%s; Received Type=%d; Error=%s.",		      SNMP_BC_MEDIATRAY_EXISTS, get_value.type, oh_lookup_error(err));		if (err) { return(err); }		else { return(SA_ERR_HPI_INTERNAL_ERROR); }        }	if (get_value.integer) {		e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));		if (e == NULL) {			dbg("Out of memory.");			return(SA_ERR_HPI_OUT_OF_SPACE);		}		e->type = OH_ET_RESOURCE;		e->did = oh_get_default_domain_id();		e->u.res_event.entry = snmp_rpt_array[BC_RPT_ENTRY_MEDIA_TRAY].rpt;		ep_concat(&(e->u.res_event.entry.ResourceEntity), ep_root);		set_ep_instance(&(e->u.res_event.entry.ResourceEntity),				SAHPI_ENT_PERIPHERAL_BAY, i + SNMP_BC_HPI_LOCATION_BASE);		e->u.res_event.entry.ResourceId = 			oh_uid_from_entity_path(&(e->u.res_event.entry.ResourceEntity));		snmp_bc_create_resourcetag(&(e->u.res_event.entry.ResourceTag),					   snmp_rpt_array[BC_RPT_ENTRY_MEDIA_TRAY].comment,					   SNMP_BC_HPI_LOCATION_BASE);		trace("Discovered resource=%s.", e->u.res_event.entry.ResourceTag.Data);		/* Create platform-specific info space to add to infra-structure */		res_info_ptr = g_memdup(&(snmp_rpt_array[BC_RPT_ENTRY_MEDIA_TRAY].res_info),					sizeof(struct ResourceInfo));		res_info_ptr->cur_state = SAHPI_HS_STATE_ACTIVE;		/* Add resource to temporary event cache/queue */		err = oh_add_resource(custom_handle->tmpcache, 				      &(e->u.res_event.entry),				      res_info_ptr, 0);		if (err) {			dbg("Failed to add resource. Error=%s.", oh_lookup_error(err));			g_free(e);			return(err);		}		custom_handle->tmpqueue = g_slist_append(custom_handle->tmpqueue, e);				/* Find resource's events, sensors, controls, etc. */		snmp_bc_discover_res_events(handle, &(e->u.res_event.entry.ResourceEntity), res_info_ptr);		snmp_bc_discover_sensors(handle, snmp_bc_mediatray_sensors, e);		snmp_bc_discover_controls(handle, snmp_bc_mediatray_controls, e);		snmp_bc_discover_inventories(handle, snmp_bc_mediatray_inventories, e);	}		/***************************** 	 * Discover Management Modules	 *****************************/	err = snmp_bc_snmp_get(custom_handle, SNMP_BC_MGMNT_VECTOR, &get_value);        if (err || get_value.type != ASN_OCTET_STR) {		dbg("Cannot get OID=%s; Received Type=%d; Error=%s.",		      SNMP_BC_MGMNT_VECTOR, get_value.type, oh_lookup_error(err));		if (err) { return(err); }		else { return(SA_ERR_HPI_INTERNAL_ERROR); }        }	for (i=0; i < strlen(get_value.string); i++) {		err = snmp_bc_snmp_get(custom_handle, SNMP_BC_MGMNT_ACTIVE, &get_active);		if (err || get_active.type != ASN_INTEGER) {			dbg("Cannot get OID=%s; Received Type=%d; Error=%s.",			      SNMP_BC_MGMNT_ACTIVE, get_active.type, oh_lookup_error(err));			if (err) { return(err); }			else { return(SA_ERR_HPI_INTERNAL_ERROR); }		}		/* Find active Management module */		if (get_active.integer == i+1) {			e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));			if (e == NULL) {				dbg("Out of memory.");				return(SA_ERR_HPI_OUT_OF_SPACE);			}			e->type = OH_ET_RESOURCE;			e->did = oh_get_default_domain_id();			e->u.res_event.entry = snmp_rpt_array[BC_RPT_ENTRY_MGMNT_MODULE].rpt;			ep_concat(&(e->u.res_event.entry.ResourceEntity), ep_root);			set_ep_instance(&(e->u.res_event.entry.ResourceEntity),					SAHPI_ENT_SYS_MGMNT_MODULE, i + SNMP_BC_HPI_LOCATION_BASE);			e->u.res_event.entry.ResourceId = 				oh_uid_from_entity_path(&(e->u.res_event.entry.ResourceEntity));			snmp_bc_create_resourcetag(&(e->u.res_event.entry.ResourceTag),						   snmp_rpt_array[BC_RPT_ENTRY_MGMNT_MODULE].comment,						   i + SNMP_BC_HPI_LOCATION_BASE);			trace("Discovered resource=%s.", e->u.res_event.entry.ResourceTag.Data);			/* Create platform-specific info space to add to infra-structure */			res_info_ptr = g_memdup(&(snmp_rpt_array[BC_RPT_ENTRY_MGMNT_MODULE].res_info),						sizeof(struct ResourceInfo));			res_info_ptr->cur_state = SAHPI_HS_STATE_ACTIVE;			/* Add resource to temporary event cache/queue */			err = oh_add_resource(custom_handle->tmpcache, 					      &(e->u.res_event.entry),					      res_info_ptr, 0);			if (err) {				dbg("Failed to add resource. Error=%s.", oh_lookup_error(err));				g_free(e);				return(err);			}			custom_handle->tmpqueue = g_slist_append(custom_handle->tmpqueue, e);						/* Find resource's events, sensors, controls, etc. */			snmp_bc_discover_res_events(handle, &(e->u.res_event.entry.ResourceEntity), res_info_ptr);			snmp_bc_discover_sensors(handle, snmp_bc_mgmnt_sensors, e);			snmp_bc_discover_controls(handle, snmp_bc_mgmnt_controls, e);			snmp_bc_discover_inventories(handle, snmp_bc_mgmnt_inventories, e);		}	}	return(SA_OK);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -