📄 snmp_bc_discover_bc.c
字号:
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 + -