static int sa_clear_evtlog(SaHpiResourceIdT resourceid) { SaErrorT rv = SA_OK; rv = saHpiEventLogClear(sessionid,resourceid); if (rv != SA_OK) { printf("EventLog clear, error = %d\n",rv); return -1; } printf("EventLog successfully cleared\n"); return SA_OK; }
int Test_Domain(SaHpiSessionIdT session_id) { SaErrorT val; int ret = SAF_TEST_UNKNOWN; val = saHpiEventLogClear(session_id, INVALID_RESOURCE_ID); if (val != SA_ERR_HPI_INVALID_RESOURCE) { e_print(saHpiEventLogClear, SA_ERR_HPI_INVALID_RESOURCE, val); ret = SAF_TEST_FAIL; } else ret = SAF_TEST_PASS; return ret; }
static ret_code_t clear_evtlog(void) { SaHpiResourceIdT resourceid; term_def_t *term; SaErrorT rv; term = get_next_term(); if (term == NULL) resourceid = SAHPI_UNSPECIFIED_RESOURCE_ID; else resourceid = (SaHpiResourceIdT)atoi(term->term); rv = saHpiEventLogClear(Domain->sessionId, resourceid); if (rv != SA_OK) { printf("EventLog clear, error = %s\n", oh_lookup_error(rv)); return HPI_SHELL_CMD_ERROR; } printf("EventLog successfully cleared\n"); return HPI_SHELL_OK; }
int run_test(SaHpiSessionIdT sessionId1, SaHpiSessionIdT sessionId2) { int ret; SaErrorT status; SaHpiBoolT found; status = saHpiEventAdd(sessionId1, &new_event_1); if (status != SA_OK) { e_print(saHpiEventAdd, SA_OK, status); ret = SAF_TEST_UNRESOLVED; } else { status = findEvent(sessionId1, &new_event_1, &found); if (status != SA_OK) { ret = SAF_TEST_UNRESOLVED; } else if (!found) { ret = SAF_TEST_FAIL; m_print("Could not find event in first session!"); } else { status = findEvent(sessionId2, &new_event_1, &found); if (status != SA_OK) { ret = SAF_TEST_UNRESOLVED; } else if (!found) { ret = SAF_TEST_FAIL; m_print ("Could not find event in second session!"); } else { ret = SAF_TEST_PASS; } } //user events should clear the log before exiting status = saHpiEventLogClear(sessionId1, SAHPI_UNSPECIFIED_RESOURCE_ID); if (status != SA_OK) e_print(saHpiEventLogClear, SA_OK, status); } return ret; }
int main(int argc, char **argv) { SaErrorT err; SaHpiRdrT rdr; SaHpiEntryIdT rptid, next_rptid; SaHpiRptEntryT rpt; SaHpiResourceIdT chassis_rid=0; SaHpiSelEntryT logentry; SaHpiSelEntryIdT prev_logid, next_logid; SaHpiSessionIdT sessionid; SaHpiVersionT hpiVer; char *hash_key, *logstr; SnmpMibInfoT *hash_value; /* Setup Infra-structure */ err = saHpiInitialize(&hpiVer); if (err != SA_OK) { printf("Error! saHpiInitialize: err=%d\n", err); return -1; } err = saHpiSessionOpen(SAHPI_DEFAULT_DOMAIN_ID, &sessionid, NULL); if (err != SA_OK) { printf("Error! saHpiSessionOpen: err=%d\n", err); return -1; } err = saHpiResourcesDiscover(sessionid); if (err != SA_OK) { printf("Error! saHpiResourcesDiscover: err=%d\n", err); return -1; } /* Find first SEL capable Resource - assume its the chassis */ rptid = SAHPI_FIRST_ENTRY; while ((err == SA_OK) && (rptid != SAHPI_LAST_ENTRY)) { err = saHpiRptEntryGet(sessionid, rptid, &next_rptid, &rpt); if (err != SA_OK) { printf("Error! saHpiRptEntryGet: err=%d\n", err); return -1; } if ((rpt.ResourceCapabilities & SAHPI_CAPABILITY_SEL)) { chassis_rid = rpt.ResourceId; break; } else { rptid = next_rptid; continue; } } if (chassis_rid == 0) { printf("Error! saHpiRptEntryGet couldn't find SEL RID\n"); return -1; } /* If test OID not already in sim hash table; create it */ if (!g_hash_table_lookup_extended(sim_hash, ERROR_LOG_MSG_OID, (gpointer)&hash_key, (gpointer)&hash_value)) { hash_key = g_strdup(ERROR_LOG_MSG_OID); if (!hash_key) { printf("Error: Cannot allocate memory for oid key=%s\n", ERROR_LOG_MSG_OID); return -1; } hash_value = g_malloc0(sizeof(SnmpMibInfoT)); if (!hash_value) { printf("Cannot allocate memory for hash value for oid=%s", ERROR_LOG_MSG_OID); return -1; } } printf("Calling Clear\n"); err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } printf("Calling EntryGet\n"); /************************************************************ * TestCase - Mapped Chassis Event (EN_CUTOFF_HI_FAULT_3_35V) * Event recovered in next testcase ************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Mapped Chassis Event (EN_CUTOFF_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Chassis Recovery Event (EN_CUTOFF_HI_FAULT_3_35V) * Recover event in previous testcase *************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_FALSE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Chassis Recovery Event (EN_CUTOFF_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Chassis Duplicate Event ( EN_PFA_HI_FAULT_3_35V) * Previous state check depends on previous testcase! *************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended voltage on +3.3v. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (!(logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Chassis Duplicate Event ( EN_PFA_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Blade Duplicate Event ( EN_PFA_HI_FAULT_3_35V) * Same as previous testcase only for the blade not chassis *************************************************************/ logstr = "Severity:INFO Source:BLADE_10 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended voltage on +3.3v. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Blade Duplicate Event ( EN_PFA_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Non-mapped Event (Severity=INFO) *************************************************************/ logstr = "Severity:INFO Source:BLADE_01 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus message not in string to event table"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Non-mapped Event (Severity=INFO)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /* Better to test a mapped login event - don't have one yet */ /************************************************************* * TestCase - Non-mapped Login Event (Severity=WARN) *************************************************************/ logstr = "Severity:WARN Source:SWITCH_4 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus login message Login ID:\'\'myid\' @ someaddress\'"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_MINOR))) { printf("Error! TestCase - Non-mapped Login Event (Severity=WARN)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************ * TestCase - Daughter Card Event (EN_PFA_HI_OVER_TEMP_DASD1) ************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:BSE Option over recommended temperature."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)0) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)0))) { printf("Error! TestCase - Daughter Card Event (EN_PFA_HI_OVER_TEMP_DASD1)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Hot-swap switch installed (EN_SWITCH_3_INSTALLED) *************************************************************/ logstr = "Severity:INFO Source:SWITCH_3 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:I/O module 3 was installed."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_INFORMATIONAL) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_ACTIVE_HEALTHY) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_ACTIVE_HEALTHY))) { printf("Error! TestCase - Hot-swap switch installed (EN_SWITCH_3_INSTALLED)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /**************************************************************** * TestCase - Hot-swap Media Tray removal (EN_MEDIA_TRAY_REMOVED) * This event is recovered in the next testcase ****************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:The media tray was removed."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_INFORMATIONAL) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_NOT_PRESENT) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_ACTIVE_HEALTHY))) { printf("Error! TestCase - Hot-swap Media Tray removal (EN_MEDIA_TRAY_REMOVED)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /**************************************************************** * TestCase - Hot-swap Media Tray recovery (EN_MEDIA_TRAY_REMOVED) * Recovery of previous event ****************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery The media tray was removed."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_INFORMATIONAL) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_ACTIVE_HEALTHY) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_NOT_PRESENT))) { printf("Error! TestCase - Hot-swap Media Tray recovery (EN_MEDIA_TRAY_REMOVED)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************ * Drive some error paths in the code ************************************/ /****************************************************************** * TestCase - Bogus threshold strings ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Bogus Read value 3.5 Bogus Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Bogus threshold strings\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************************************************************** * TestCase - Recovery string not first character of text string * (blank is first character). Should not treat as a recovery event ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text: Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Recovery string not first character of text string\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************************************************************** * TestCase - In string table but not mapped * Uses special defined Test event in bc_str2event.c ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus Test Event."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - In string table but not mapped\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************** * End of testcases ******************/ err = saHpiSessionClose(sessionid); if (err != SA_OK) { printf("Error! saHpiSessionClose: err=%d\n", err); return -1; } err = saHpiFinalize(); if (err != SA_OK) { printf("Error! saHpiFinalize: err=%d\n", err); return -1; } return 0; }
int main(int argc, char **argv) { SaErrorT err; SaHpiRdrT rdr; SaHpiEntryIdT rptid, next_rptid; SaHpiRptEntryT rpt; SaHpiResourceIdT chassis_rid=0; SaHpiEventLogEntryT logentry; SaHpiEventLogEntryIdT prev_logid, next_logid; SaHpiSessionIdT sessionid; char *hash_key, *logstr; SnmpMibInfoT *hash_value; err = saHpiSessionOpen(SAHPI_UNSPECIFIED_DOMAIN_ID, &sessionid, NULL); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } err = saHpiDiscover(sessionid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Find first Event Log capable resource - assume its the chassis */ rptid = SAHPI_FIRST_ENTRY; while ((err == SA_OK) && (rptid != SAHPI_LAST_ENTRY)) { err = saHpiRptEntryGet(sessionid, rptid, &next_rptid, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } if ((rpt.ResourceCapabilities & SAHPI_CAPABILITY_EVENT_LOG)) { chassis_rid = rpt.ResourceId; break; } else { rptid = next_rptid; continue; } } if (chassis_rid == 0) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Cannot find Chassis RID\n"); return -1; } /* If test OID not already in sim hash table; create it */ if (!g_hash_table_lookup_extended(sim_hash, SNMP_BC_ERROR_LOG_MSG_OID, (gpointer)&hash_key, (gpointer)&hash_value)) { hash_key = g_strdup(SNMP_BC_ERROR_LOG_MSG_OID); if (!hash_key) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Cannot allocate memory for OID key=%s.\n", SNMP_BC_ERROR_LOG_MSG_OID); return -1; } hash_value = g_malloc0(sizeof(SnmpMibInfoT)); if (!hash_value) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Cannot allocate memory for hash value for OID=%s.\n", SNMP_BC_ERROR_LOG_MSG_OID); return -1; } } #if 0 printf("Calling Clear\n"); #endif err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } #if 0 printf("Calling EntryGet\n"); #endif /************************************************************ * TestCase - Mapped Chassis Event (EN_CUTOFF_HI_FAULT_3_35V) * Event recovered in next testcase ************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************** * TestCase - Chassis Recovery Event (EN_CUTOFF_HI_FAULT_3_35V) * Recover event in previous testcase. **************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_FALSE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /****************************************************** * TestCase - Chassis Event (EN_CUTOFF_HI_FAULT_3_35V) * Change sensor reading to LOWER MAJOR. Previous state * depends upon previous testcase. ******************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); /* Change sensor's simulator value */ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "2.9 Volts"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_VOLT_3_3_OID, &hash_set_value); } err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (!(logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_LOWER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_LOWER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_LOWER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Set sensor's simulator value back to default*/ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "3.3 Volts"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_VOLT_3_3_OID, &hash_set_value); } /************************************************************** * TestCase - Chassis Event (EN_CUTOFF_HI_FAULT_3_35V) * Change sensor reading to UPPER MAJOR. Previous state * depends upon previous testcase. **************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); /* Change sensor's simulator value */ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "3.5 Volts"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_VOLT_3_3_OID, &hash_set_value); } err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (!(logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_LOWER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_LOWER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_LOWER_MINOR) && (!(logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Set sensor's simulator value back to default*/ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "3.3 Volts"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_VOLT_3_3_OID, &hash_set_value); } /************************************************************* * TestCase - Chassis Duplicate Event (EN_PFA_HI_FAULT_3_35V) * Previous state check depends on previous testcase! *************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended voltage on +3.3v. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (!(logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************* * TestCase - Blade Duplicate Event ( EN_PFA_HI_FAULT_3_35V) * Same as previous testcase only for the blade not chassis *************************************************************/ logstr = "Severity:INFO Source:BLADE_11 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended voltage on +3.3v. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)3.4))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************** * TestCase - Chassis Temperature (EN_PFA_HI_OVER_TEMP_AMBIENT) * Set at nominal temperature value. **************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended ambient temperature."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); /* Change sensor's simulator value */ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "60 Centigrade"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_TEMP_OID, &hash_set_value); } err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************** * TestCase - Chassis Temperature (EN_PFA_HI_OVER_TEMP_AMBIENT) * Set above warning level. **************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended ambient temperature."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); /* Change sensor's simulator value */ { SnmpMibInfoT hash_set_value; hash_set_value.type = ASN_OCTET_STR; strcpy(hash_set_value.value.string, "61 Centigrade"); g_hash_table_insert(sim_hash, SNMP_BC_CHASSIS_TEMP_OID, &hash_set_value); } err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((logentry.Event.Source == chassis_rid) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (!(logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState & SAHPI_ES_UPPER_MINOR))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************* * TestCase - Non-mapped Event (Severity=INFO) *************************************************************/ logstr = "Severity:INFO Source:BLADE_01 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus message not in string to event table"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************* * TestCase - Expansion Card Event (EN_PFA_HI_OVER_TEMP_DASD1) *************************************************************/ logstr = "Severity:INFO Source:BLADE_07 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:BSE Option over recommended temperature. Read value 87 Threshold value 75"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Value.SensorFloat64 == (double)87) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Value.SensorFloat64 == (double)75))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Better to test a mapped login event - BC doesn't seem to have one defined yet */ /************************************************************* * TestCase - Non-mapped Login Event (Severity=WARN) *************************************************************/ logstr = "Severity:WARN Source:SWITCH_4 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus login message Login ID:\'\'myid\' @ someaddress\'"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_MINOR))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /*********************************************************** * TestCase - Power over temperature (EN_FAULT_PSx_OVR_TEMP) * This is a non-readable sensor. Recover in next testcase. ***********************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Power Supply 1 Temperature Fault"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_OK) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_CRITICAL))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /*********************************************************** * TestCase - Power over temperature (EN_FAULT_PSx_OVR_TEMP) * This is a non-readable sensor. Recover previous testcase. ***********************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery Power Supply 1 Temperature Fault"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_TEMPERATURE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_FALSE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.CurrentState == SAHPI_ES_MAJOR_FROM_LESS))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************************************* * TestCase - Hotswap switch installed (EN_SWITCH_3_INSTALLED) *************************************************************/ logstr = "Severity:INFO Source:SWITCH_3 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:I/O module 3 was installed."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_INFORMATIONAL) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_ACTIVE) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_ACTIVE))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /**************************************************************** * TestCase - hotswap Media Tray removal (EN_MEDIA_TRAY_REMOVED) * This event is recovered in the next testcase. Should be * MAJOR severity, since this is an unexpected failure. ****************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:The media tray was removed."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_NOT_PRESENT) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_ACTIVE))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /**************************************************************** * TestCase - hotswap Media Tray recovery (EN_MEDIA_TRAY_REMOVED) * Recovery of previous event. ****************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery The media tray was removed."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_HOTSWAP) && (logentry.Event.Severity == SAHPI_INFORMATIONAL) && (logentry.Event.EventDataUnion.HotSwapEvent.HotSwapState == SAHPI_HS_STATE_ACTIVE) && (logentry.Event.EventDataUnion.HotSwapEvent.PreviousHotSwapState == SAHPI_HS_STATE_NOT_PRESENT))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /************************************ * Drive some error paths in the code ************************************/ /****************************************************************** * TestCase - Bogus threshold strings ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Bogus Read value 3.5 Bogus Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /****************************************************************** * TestCase - Recovery string not first character of text string * (blank is first character). Should not treat as a recovery event ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text: Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /****************************************************************** * TestCase - In string table but not mapped * Uses special defined Test event in bc_str2event.c ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus Test Event."; memset(&logentry, 0 , sizeof(SaHpiEventLogEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, chassis_rid, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == chassis_rid)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); oh_print_event(&(logentry.Event), 1); return -1; } err = saHpiEventLogClear(sessionid, chassis_rid); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%s\n", oh_lookup_error(err)); return -1; } /****************** * End of testcases ******************/ err = saHpiSessionClose(sessionid); if (err) { printf("Error! saHpiSessionClose: err=%d\n", err); return -1; } return 0; }
int main(int argc, char **argv) { int c; oh_big_textbuffer bigbuf2; SaErrorT rv, rv_2; SaHpiVersionT hpiVer; SaHpiSessionIdT sessionid; /* Domain */ SaHpiDomainInfoT domainInfo; SaHpiRptEntryT rptentry; SaHpiEntryIdT rptentryid; SaHpiEntryIdT nextrptentryid; SaHpiResourceIdT resourceid; SaHpiEventLogEntryIdT entryid; SaHpiEventLogEntryIdT nextentryid; SaHpiEventLogEntryIdT preventryid; SaHpiEventLogInfoT info; SaHpiEventLogEntryT el; SaHpiRdrT rdr, *rdrptr; SaHpiRptEntryT rpt_2nd, *rptptr; int free = 50; printf("%s: version %s\n",argv[0],progver); while ( (c = getopt( argc, argv,"cdpx?")) != EOF ) switch(c) { case 'c': fclear = 1; break; case 'd': frdr = 1; break; case 'p': frpt = 1; break; case 'x': fdebug = 1; break; default: printf("\n\n\nUsage %s [-cdpx]\n",argv[0]); printf(" Where \n"); printf(" -c clears the event log\n"); printf(" -d also get RDR with the event log\n"); printf(" -p also get RPT with the event log\n"); printf(" -x displays eXtra debug messages\n\n\n"); exit(1); } /* * House keeping: * -- get (check?) hpi implementation version * -- open hpi session */ if (fdebug) printf("saHpiVersionGet\n"); hpiVer = saHpiVersionGet(); printf("Hpi Version %d Implemented.\n", hpiVer); rv = saHpiSessionOpen(SAHPI_UNSPECIFIED_DOMAIN_ID,&sessionid,NULL); if (rv != SA_OK) { if (rv == SA_ERR_HPI_ERROR) printf("saHpiSessionOpen: error %d, SpiLibd not running\n",rv); else printf("saHpiSessionOpen: %s\n", oh_lookup_error(rv)); exit(-1); } rv = saHpiDiscover(sessionid); if (fdebug) printf("saHpiResourcesDiscover %s\n", oh_lookup_error(rv)); rv = saHpiDomainInfoGet(sessionid, &domainInfo); if (fdebug) printf("saHpiDomainInfoGet %s\n", oh_lookup_error(rv)); printf("DomainInfo: UpdateCount = %d, UpdateTime = %lx\n", domainInfo.RptUpdateCount, (unsigned long)domainInfo.RptUpdateTimestamp); /* walk the RPT list */ rptentryid = SAHPI_FIRST_ENTRY; while ((rv == SA_OK) && (rptentryid != SAHPI_LAST_ENTRY)) { rv = saHpiRptEntryGet(sessionid,rptentryid,&nextrptentryid,&rptentry); if (fdebug) printf("saHpiRptEntryGet %s\n", oh_lookup_error(rv)); if (rv == SA_OK) { resourceid = rptentry.ResourceId; if (fdebug) printf("RPT %d capabilities = %x\n", resourceid, rptentry.ResourceCapabilities); if (!(rptentry.ResourceCapabilities & SAHPI_CAPABILITY_EVENT_LOG)) { if (fdebug) printf("RPT doesn't have SEL\n"); rptentryid = nextrptentryid; continue; /* no SEL here, try next RPT */ } rptentry.ResourceTag.Data[rptentry.ResourceTag.DataLength] = 0; rv_2 = oh_init_bigtext(&bigbuf2); if (rv_2) return(rv_2); rv = oh_decode_entitypath(&rptentry.ResourceEntity, &bigbuf2); printf("%s\n", bigbuf2.Data); printf("rptentry[%d] tag: %s\n", resourceid,rptentry.ResourceTag.Data); /* initialize structure */ info.Entries = 0; info.Size = 0; info.Enabled = 0; rv_2 = saHpiEventLogInfoGet(sessionid,resourceid,&info); if (fdebug) printf("saHpiEventLogInfoGet %s\n", oh_lookup_error(rv)); if (rv_2 == SA_OK) { printf("EventLogInfo for %s, ResourceId %d\n", rptentry.ResourceTag.Data, resourceid); oh_print_eventloginfo(&info, 4); } else { printf("saHpiEventLogInfoGet %s\n", oh_lookup_error(rv_2)); } if (fclear) { rv = saHpiEventLogClear(sessionid,resourceid); if (rv == SA_OK) printf("EventLog successfully cleared\n"); else printf("EventLog clear, error = %d, %s\n", rv, oh_lookup_error(rv)); break; } if (info.Entries != 0){ entryid = SAHPI_OLDEST_ENTRY; while ((rv == SA_OK) && (entryid != SAHPI_NO_MORE_ENTRIES)) { if (frdr) rdrptr = &rdr; else rdrptr = NULL; if (frpt) rptptr = &rpt_2nd; else rptptr = NULL; if(fdebug) printf("rdrptr %p, rptptr %p\n", rdrptr, rptptr); rv = saHpiEventLogEntryGet(sessionid,resourceid, entryid,&preventryid, &nextentryid, &el,rdrptr,rptptr); if (fdebug) printf("saHpiEventLogEntryGet %s\n", oh_lookup_error(rv)); if (rv == SA_OK) { oh_print_eventlogentry(&el, 6); if (frdr) { if (rdrptr->RdrType == SAHPI_NO_RECORD) printf(" No RDR associated with EventType = %s\n\n", oh_lookup_eventtype(el.Event.EventType)); else oh_print_rdr(rdrptr, 12); } if (frpt) { if (rptptr->ResourceCapabilities == 0) printf(" No RPT associated with EventType = %s\n\n", oh_lookup_eventtype(el.Event.EventType)); else oh_print_rptentry(rptptr, 10); } preventryid = entryid; entryid = nextentryid; } } } else printf("\tSEL is empty.\n\n"); if (free < 6) { printf("WARNING: Log free space is very low (%d records)\n",free); printf("\tClear log with hpiel -c\n"); } } rptentryid = nextrptentryid; } printf("done.\n"); rv = saHpiSessionClose(sessionid); return(0); }
int Test_Resource(SaHpiSessionIdT session, SaHpiResourceIdT resource) { SaErrorT status; int retval = SAF_TEST_UNKNOWN; SaHpiEventT EvtEntry; // clear the log so we don't get an out of space error // when trying to add entries. status = saHpiEventLogClear(session, resource); if (status != SA_OK) { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogClear, SA_OK, status); goto out; } // // Call saHpiEventLogEntryAdd passing in a bad character // in the text buffer. // EvtEntry.EventType = SAHPI_ET_USER; EvtEntry.Source = SAHPI_UNSPECIFIED_RESOURCE_ID; EvtEntry.Timestamp = SAHPI_TIME_UNSPECIFIED; EvtEntry.Severity = SAHPI_OK; //non-defined value EvtEntry.EventDataUnion.UserEvent.UserEventData.DataLength = 1; EvtEntry.EventDataUnion.UserEvent.UserEventData.Language = SAHPI_LANG_ENGLISH; /* ASCII6 */ EvtEntry.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_ASCII6; EvtEntry.EventDataUnion.UserEvent.UserEventData.Data[0] = 0x0D; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_ERR_HPI_INVALID_PARAMS) goto test_bcdplus; else { e_print(saHpiEventLogEntryAdd, SA_ERR_HPI_INVALID_PARAMS, status); retval = SAF_TEST_FAIL; goto out; } test_bcdplus: /* BCDPLUS * String of ASCII characters, '0'-'9', space, * dash, period, colon, comma or underscore ONLY */ EvtEntry.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_BCDPLUS; EvtEntry.EventDataUnion.UserEvent.UserEventData.Data[0] = 'a'; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_ERR_HPI_INVALID_PARAMS) goto test_text; else { e_print(saHpiEventLogEntryAdd, SA_ERR_HPI_INVALID_PARAMS, status); retval = SAF_TEST_FAIL; goto out; } test_text: /* Text shall be OK with any data */ EvtEntry.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_TEXT; EvtEntry.EventDataUnion.UserEvent.UserEventData.Data[0] = 'a'; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_OK) { goto test_unicode; } else { retval = SAF_TEST_FAIL; e_print(saHpiEventLogEntryAdd, SA_OK, status); goto out; } test_unicode: /* Unicode * U+D800 ... U+DFFF are reserved for surrogate code. * Unicode requires 2 bytes per character. This test uses only one byte * which is an illegal character. */ EvtEntry.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_UNICODE; EvtEntry.EventDataUnion.UserEvent.UserEventData.Data[0] = 'a'; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_ERR_HPI_INVALID_PARAMS) goto test_binary; else { e_print(saHpiEventLogEntryAdd, SA_ERR_HPI_INVALID_PARAMS, status); retval = SAF_TEST_FAIL; goto out; } test_binary: /* Binary shall be OK with any data */ EvtEntry.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_BINARY; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_OK) { retval = SAF_TEST_PASS; } else { retval = SAF_TEST_FAIL; e_print(saHpiEventLogEntryAdd, SA_OK, status); } out: return (retval); }
cOpenHpiDaemon::tResult cOpenHpiDaemon::HandleMsg( cConnection *c, const cMessageHeader &header, const void *data, cMessageHeader &rh, void *&rd ) { cHpiMarshal *hm = HpiMarshalFind( header.m_id ); // check for function and data length if ( !hm || hm->m_request_len < header.m_len ) { //MessageHeaderInit( &rh, eMhError, header.m_seq, 0, 0 ); //rd = 0; fprintf( stderr, "wrong message length: id %d !\n", header.m_id ); return eResultError; } assert( hm->m_reply_len ); // init reply header MessageHeaderInit( &rh, eMhReply, header.m_seq, header.m_id, hm->m_reply_len ); // alloc reply buffer rd = calloc( 1, hm->m_reply_len ); SaErrorT ret; switch( header.m_id ) { case eFsaHpiSessionOpen: { SaHpiDomainIdT domain_id; SaHpiSessionIdT session_id = 0; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, (void *)&domain_id ); ret = saHpiSessionOpen( domain_id, &session_id, 0 ); DbgFunc( "saHpiSessionOpen( %x, %x ) = %d\n", domain_id, session_id, ret ); if ( ret == SA_OK ) c->AddSession( session_id ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &session_id ); } break; case eFsaHpiSessionClose: { SaHpiSessionIdT session_id; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiSessionClose( session_id ); DbgFunc( "saHpiSessionClose( %x ) = %d\n", session_id, ret ); if ( ret == SA_OK ) c->RemSession( session_id ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourcesDiscover: { SaHpiSessionIdT session_id; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiResourcesDiscover( session_id ); DbgFunc( "saHpiResourcesDiscover( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiRptInfoGet: { SaHpiSessionIdT session_id; SaHpiRptInfoT rpt_info; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiRptInfoGet( session_id, &rpt_info ); DbgFunc( "saHpiRptInfoGet( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &rpt_info ); } break; case eFsaHpiRptEntryGet: { SaHpiSessionIdT session_id; SaHpiEntryIdT entry_id; SaHpiEntryIdT next_entry_id; SaHpiRptEntryT rpt_entry; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &entry_id ); ret = saHpiRptEntryGet( session_id, entry_id, &next_entry_id, &rpt_entry ); DbgFunc( "saHpiRptEntryGet( %x, %x, %x ) = %d\n", session_id, entry_id, next_entry_id, ret ); rh.m_len = HpiMarshalReply2( hm, rd, &ret, &next_entry_id, &rpt_entry ); } break; case eFsaHpiRptEntryGetByResourceId: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiRptEntryT rpt_entry; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiRptEntryGetByResourceId( session_id, resource_id, &rpt_entry ); DbgFunc( "saHpiRptEntryGetByResourceId( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &rpt_entry ); } break; case eFsaHpiResourceSeveritySet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSeverityT severity; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &severity ); ret = saHpiResourceSeveritySet( session_id, resource_id, severity ); DbgFunc( "saHpiResourceSeveritySet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourceTagSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiTextBufferT resource_tag; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &resource_tag ); ret = saHpiResourceTagSet( session_id, resource_id, &resource_tag ); DbgFunc( "saHpiResourceTagSet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourceIdGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id = 0; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiResourceIdGet( session_id, &resource_id ); DbgFunc( "saHpiResourceIdGet( %x ) = %d, %x\n", session_id, ret, resource_id ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &resource_id ); } break; case eFsaHpiEntitySchemaGet: { SaHpiSessionIdT session_id; SaHpiUint32T schema_id = 0; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiEntitySchemaGet( session_id, &schema_id ); DbgFunc( "saHpiEntitySchemaGet( %x ) = %d, %x\n", session_id, ret, schema_id ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &schema_id ); } break; case eFsaHpiEventLogInfoGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSelInfoT info; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiEventLogInfoGet( session_id, resource_id, &info ); DbgFunc( "saHpiEventLogInfoGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &info ); } break; case eFsaHpiEventLogEntryGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSelEntryIdT entry_id; SaHpiSelEntryIdT prev_entry_id = 0; SaHpiSelEntryIdT next_entry_id = 0; SaHpiSelEntryT event_log_entry; SaHpiRdrT rdr; SaHpiRptEntryT rpt_entry; memset( &rdr, 0, sizeof( SaHpiRdrT ) ); memset( &rpt_entry, 0, sizeof( SaHpiRptEntryT ) ); HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &entry_id ); ret = saHpiEventLogEntryGet( session_id, resource_id, entry_id, &prev_entry_id, &next_entry_id, &event_log_entry, &rdr, &rpt_entry ); DbgFunc( "saHpiEventLogEntryGet( %x, %x, %x ) = %d\n", session_id, resource_id, entry_id, ret ); rh.m_len = HpiMarshalReply5( hm, rd, &ret, &prev_entry_id, &next_entry_id, &event_log_entry, &rdr, &rpt_entry ); } break; case eFsaHpiEventLogEntryAdd: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSelEntryT evt_entry; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &evt_entry ); ret = saHpiEventLogEntryAdd( session_id, resource_id, &evt_entry ); DbgFunc( "saHpiEventLogEntryAdd( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEventLogEntryDelete: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSelEntryIdT entry_id; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &entry_id ); ret = saHpiEventLogEntryDelete( session_id, resource_id, entry_id ); DbgFunc( "saHpiEventLogEntryDelete( %x, %x, %x ) = %d\n", session_id, resource_id, entry_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEventLogClear: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiEventLogClear( session_id, resource_id ); DbgFunc( "saHpiEventLogClear( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEventLogTimeGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiTimeT ti; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiEventLogTimeGet( session_id, resource_id, &ti ); DbgFunc( "saHpiEventLogTimeGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &ti ); } break; case eFsaHpiEventLogTimeSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiTimeT ti; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id , &ti ); ret = saHpiEventLogTimeSet( session_id, resource_id, ti ); DbgFunc( "saHpiEventLogTimeSet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEventLogStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiBoolT enable; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiEventLogStateGet( session_id, resource_id, &enable ); DbgFunc( "saHpiEventLogStateGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &enable ); } break; case eFsaHpiEventLogStateSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiBoolT enable; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &enable ); ret = saHpiEventLogStateSet( session_id, resource_id, enable ); DbgFunc( "saHpiEventLogStateSet( %x, %x, %s ) = %d\n", session_id, resource_id, enable ? "true" : "false", ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiSubscribe: { SaHpiSessionIdT session_id; SaHpiBoolT provide_active_alarms; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &provide_active_alarms ); ret = saHpiSubscribe( session_id, provide_active_alarms ); DbgFunc( "saHpiSubscribe( %x, %s ) = %d\n", session_id, provide_active_alarms ? "true" : "false", ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiUnsubscribe: { SaHpiSessionIdT session_id; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiUnsubscribe( session_id ); DbgFunc( "saHpiUnsubscribe( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEventGet: { SaHpiSessionIdT session_id; SaHpiTimeoutT timeout; SaHpiEventT event; SaHpiRdrT rdr; SaHpiRptEntryT rpt_entry; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &timeout ); if ( timeout == 0 ) { ret = saHpiEventGet( session_id, timeout, &event, &rdr, &rpt_entry ); DbgFunc( "saHpiEventGet( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply3( hm, rd, &ret, &event, &rdr, &rpt_entry ); } else { cSession *s = c->FindSession( session_id ); if ( s && !s->IsEventGet() ) { s->EventGet( true ); SaHpiTimeT end; gettimeofday1( &end ); if ( timeout == SAHPI_TIMEOUT_BLOCK ) end += (SaHpiTimeT)10000*1000000000; //set a long time else end += timeout; s->Timeout() = end; s->Seq() = header.m_seq; DbgEvent( "saHpiEventGet( %x ): add to event listener.\n", s->SessionId() ); return eResultOk; } // error ret = SA_ERR_HPI_BUSY; rh.m_len = HpiMarshalReply3( hm, rd, &ret, &event, &rdr, &rpt_entry ); } } break; case eFsaHpiRdrGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiEntryIdT entry_id; SaHpiEntryIdT next_entry_id; SaHpiRdrT rdr; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &entry_id ); ret = saHpiRdrGet( session_id, resource_id, entry_id, &next_entry_id, &rdr ); DbgFunc( "saHpiRdrGet( %x, %x, %x ) = %d\n", session_id, resource_id, entry_id, ret ); rh.m_len = HpiMarshalReply2( hm, rd, &ret, &next_entry_id, &rdr ); } break; case eFsaHpiSensorReadingGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorReadingT reading; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num ); ret = saHpiSensorReadingGet( session_id, resource_id, sensor_num, &reading ); DbgFunc( "saHpiSensorReadingGet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &reading ); } break; case eFsaHpiSensorReadingConvert: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorReadingT reading_input; SaHpiSensorReadingT converted_reading; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num, &reading_input ); ret = saHpiSensorReadingConvert( session_id, resource_id, sensor_num, &reading_input, &converted_reading ); DbgFunc( "saHpiSensorReadingConvert( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &converted_reading ); } break; case eFsaHpiSensorThresholdsGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorThresholdsT sensor_thresholds; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num ); ret = saHpiSensorThresholdsGet( session_id, resource_id, sensor_num, &sensor_thresholds); DbgFunc( "saHpiSensorThresholdsGet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &sensor_thresholds ); } break; case eFsaHpiSensorThresholdsSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorThresholdsT sensor_thresholds; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num, &sensor_thresholds ); ret = saHpiSensorThresholdsSet( session_id, resource_id, sensor_num, &sensor_thresholds ); DbgFunc( "saHpiSensorThresholdsSet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiSensorTypeGet: { SaHpiResourceIdT resource_id; SaHpiSessionIdT session_id; SaHpiSensorNumT sensor_num; SaHpiSensorTypeT type; SaHpiEventCategoryT category; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num ); ret = saHpiSensorTypeGet( session_id, resource_id, sensor_num, &type, &category ); DbgFunc( "saHpiSensorTypeGet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply2( hm, rd, &ret, &type, &category ); } break; case eFsaHpiSensorEventEnablesGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorEvtEnablesT enables; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num ); ret = saHpiSensorEventEnablesGet( session_id, resource_id, sensor_num, &enables ); DbgFunc( "saHpiSensorEventEnablesGet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &enables ); } break; case eFsaHpiSensorEventEnablesSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiSensorNumT sensor_num; SaHpiSensorEvtEnablesT enables; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &sensor_num, &enables ); ret = saHpiSensorEventEnablesSet( session_id, resource_id, sensor_num, &enables ); DbgFunc( "saHpiSensorEventEnablesSet( %x, %x, %x ) = %d\n", session_id, resource_id, sensor_num, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiControlTypeGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiCtrlNumT ctrl_num; SaHpiCtrlTypeT type; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &ctrl_num ); ret = saHpiControlTypeGet( session_id, resource_id, ctrl_num, &type ); DbgFunc( "saHpiControlTypeGet( %x, %x, %x ) = %d\n", session_id, resource_id, ctrl_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &type ); } break; case eFsaHpiControlStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiCtrlNumT ctrl_num; SaHpiCtrlStateT ctrl_state; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &ctrl_num ); ret = saHpiControlStateGet( session_id, resource_id, ctrl_num, &ctrl_state ); DbgFunc( "saHpiControlStateGet( %x, %x, %x ) = %d\n", session_id, resource_id, ctrl_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &ctrl_state ); } break; case eFsaHpiControlStateSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiCtrlNumT ctrl_num; SaHpiCtrlStateT ctrl_state; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &ctrl_num, &ctrl_state ); ret = saHpiControlStateSet( session_id, resource_id, ctrl_num, &ctrl_state ); DbgFunc( "saHpiControlStateSet( %x, %x, %x ) = %d\n", session_id, resource_id, ctrl_num, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiEntityInventoryDataRead: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiEirIdT eir_id; SaHpiUint32T buffer_size; unsigned char *buffer = 0; SaHpiUint32T actual_size; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &eir_id, &buffer_size ); if ( buffer_size ) buffer = new unsigned char [buffer_size]; ret = saHpiEntityInventoryDataRead( session_id, resource_id, eir_id, buffer_size, (SaHpiInventoryDataT *)(void *)buffer, &actual_size ); DbgFunc( "saHpintityInventoryDataRead( %x, %x, %x, %d ) = %d\n", session_id, resource_id, eir_id, buffer_size, ret ); const cMarshalType *reply[4]; reply[0] = &SaErrorType; // SA_OK reply[1] = &SaHpiUint32Type; // actual size const void *params[3]; params[0] = &ret; params[1] = &actual_size; if ( ret != SA_OK || buffer == 0 ) reply[2] = 0; else { reply[2] = &SaHpiInventoryDataType, // inventory data reply[3] = 0; params[2] = buffer; } rh.m_len = MarshalArray( reply, params, rd ); if ( buffer ) delete [] buffer; } break; case eFsaHpiEntityInventoryDataWrite: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiEirIdT eir_id; unsigned char buffer[10240]; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &eir_id, buffer ); ret = saHpiEntityInventoryDataWrite( session_id, resource_id, eir_id, (SaHpiInventoryDataT *)(void *)buffer ); DbgFunc( "saHpintityInventoryDataWrite( %x, %x, %x ) = %d\n", session_id, resource_id, eir_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiWatchdogTimerGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiWatchdogNumT watchdog_num; SaHpiWatchdogT watchdog; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &watchdog_num ); ret = saHpiWatchdogTimerGet( session_id, resource_id, watchdog_num, &watchdog ); DbgFunc( "saHpiWatchdogTimerGet( %x, %x, %x ) = %d\n", session_id, resource_id, watchdog_num, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &watchdog ); } break; case eFsaHpiWatchdogTimerSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiWatchdogNumT watchdog_num; SaHpiWatchdogT watchdog; HpiDemarshalRequest4( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &watchdog_num, &watchdog ); ret = saHpiWatchdogTimerSet( session_id, resource_id, watchdog_num, &watchdog ); DbgFunc( "saHpiWatchdogTimerSet( %x, %x, %x ) = %d\n", session_id, resource_id, watchdog_num, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiWatchdogTimerReset: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiWatchdogNumT watchdog_num; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &watchdog_num ); ret = saHpiWatchdogTimerReset( session_id, resource_id, watchdog_num ); DbgFunc( "eFsaHpiWatchdogTimerReset( %x, %x, %x ) = %d\n", session_id, resource_id, watchdog_num, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiHotSwapControlRequest: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiHotSwapControlRequest( session_id, resource_id ); DbgFunc( "saHpiHotSwapControlRequest( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourceActiveSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiResourceActiveSet( session_id, resource_id ); DbgFunc( "saHpiResourceActiveSet( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourceInactiveSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiResourceInactiveSet( session_id, resource_id ); DbgFunc( "saHpiResourceInactiveSet( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiAutoInsertTimeoutGet: { SaHpiSessionIdT session_id; SaHpiTimeoutT timeout; HpiDemarshalRequest1( header.m_flags & dMhEndianBit, hm, data, &session_id ); ret = saHpiAutoInsertTimeoutGet( session_id, &timeout ); DbgFunc( "saHpiAutoInsertTimeoutGet( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &timeout ); } break; case eFsaHpiAutoInsertTimeoutSet: { SaHpiSessionIdT session_id; SaHpiTimeoutT timeout; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &timeout ); ret = saHpiAutoInsertTimeoutSet( session_id, timeout ); DbgFunc( "saHpiAutoInsertTimeoutSet( %x ) = %d\n", session_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiAutoExtractTimeoutGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiTimeoutT timeout; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiAutoExtractTimeoutGet( session_id, resource_id, &timeout ); DbgFunc( "saHpiAutoExtractTimeoutGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &timeout ); } break; case eFsaHpiAutoExtractTimeoutSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiTimeoutT timeout; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &timeout ); ret = saHpiAutoExtractTimeoutSet( session_id, resource_id, timeout ); DbgFunc( "saHpiAutoExtractTimeoutSet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiHotSwapStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsStateT state; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiHotSwapStateGet( session_id, resource_id, &state ); DbgFunc( "saHpiHotSwapStateGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &state ); } break; case eFsaHpiHotSwapActionRequest: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsActionT action; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &action ); ret = saHpiHotSwapActionRequest( session_id, resource_id, action ); DbgFunc( "saHpiHotSwapActionRequest( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourcePowerStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsPowerStateT state; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiResourcePowerStateGet( session_id, resource_id, &state ); DbgFunc( "saHpiResourcePowerStateGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &state ); } break; case eFsaHpiResourcePowerStateSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsPowerStateT state; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &state ); ret = saHpiResourcePowerStateSet( session_id, resource_id, state ); DbgFunc( "(saHpiResourcePowerStateSet %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiHotSwapIndicatorStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsIndicatorStateT state; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiHotSwapIndicatorStateGet( session_id, resource_id, &state ); DbgFunc( "saHpiHotSwapIndicatorStateGet( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &state ); } break; case eFsaHpiHotSwapIndicatorStateSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiHsIndicatorStateT state; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &state ); ret = saHpiHotSwapIndicatorStateSet( session_id, resource_id, state ); DbgFunc( "saHpiHotSwapIndicatorStateSet( %x, %x ) = %d\n", session_id, resource_id , ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiParmControl: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiParmActionT action; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &action ); ret = saHpiParmControl( session_id, resource_id, action ); DbgFunc( "saHpiParmControl( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; case eFsaHpiResourceResetStateGet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiResetActionT reset_action; HpiDemarshalRequest2( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id ); ret = saHpiResourceResetStateGet( session_id, resource_id, &reset_action ); DbgFunc( "saHpiResourceResetStateGet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply1( hm, rd, &ret, &reset_action ); } break; case eFsaHpiResourceResetStateSet: { SaHpiSessionIdT session_id; SaHpiResourceIdT resource_id; SaHpiResetActionT reset_action; HpiDemarshalRequest3( header.m_flags & dMhEndianBit, hm, data, &session_id, &resource_id, &reset_action ); ret = saHpiResourceResetStateSet( session_id, resource_id, reset_action ); DbgFunc( "saHpiResourceResetStateSet( %x, %x ) = %d\n", session_id, resource_id, ret ); rh.m_len = HpiMarshalReply0( hm, rd, &ret ); } break; default: assert( 0 ); break; } assert( rh.m_len <= hm->m_reply_len ); return eResultReply; }
int main(int argc, char **argv) { int c; SaErrorT rv; SaHpiVersionT hpiVer; SaHpiSessionIdT sessionid; SaHpiRptInfoT rptinfo; SaHpiRptEntryT rptentry; SaHpiEntryIdT rptentryid; SaHpiEntryIdT nextrptentryid; SaHpiResourceIdT resourceid; SaHpiSelEntryIdT entryid; SaHpiSelEntryIdT nextentryid; SaHpiSelEntryIdT preventryid; SaHpiSelInfoT info; SaHpiSelEntryT sel; SaHpiRdrT rdr; int free = 50; printf("%s: version %s\n",argv[0],progver); while ( (c = getopt( argc, argv,"cx?")) != EOF ) switch(c) { case 'c': fclear = 1; break; case 'x': fdebug = 1; break; default: printf("Usage %s [-cx]\n",argv[0]); printf("where -c clears the event log\n"); printf(" -x displays eXtra debug messages\n"); exit(1); } rv = saHpiInitialize(&hpiVer); if (rv != SA_OK) { printf("saHpiInitialize: %s\n",decode_error(rv)); exit(-1); } rv = saHpiSessionOpen(SAHPI_DEFAULT_DOMAIN_ID,&sessionid,NULL); if (rv != SA_OK) { if (rv == SA_ERR_HPI_ERROR) printf("saHpiSessionOpen: error %d, SpiLibd not running\n",rv); else printf("saHpiSessionOpen: %s\n",decode_error(rv)); exit(-1); } rv = saHpiResourcesDiscover(sessionid); if (fdebug) printf("saHpiResourcesDiscover %s\n",decode_error(rv)); rv = saHpiRptInfoGet(sessionid,&rptinfo); if (fdebug) printf("saHpiRptInfoGet %s\n",decode_error(rv)); printf("RptInfo: UpdateCount = %d, UpdateTime = %lx\n", rptinfo.UpdateCount, (unsigned long)rptinfo.UpdateTimestamp); /* walk the RPT list */ rptentryid = SAHPI_FIRST_ENTRY; while ((rv == SA_OK) && (rptentryid != SAHPI_LAST_ENTRY)) { rv = saHpiRptEntryGet(sessionid,rptentryid,&nextrptentryid,&rptentry); if (fdebug) printf("saHpiRptEntryGet %s\n",decode_error(rv)); if (rv == SA_OK) { resourceid = rptentry.ResourceId; if (fdebug) printf("RPT %d capabilities = %x\n", resourceid, rptentry.ResourceCapabilities); if (!(rptentry.ResourceCapabilities & SAHPI_CAPABILITY_SEL)) { if (fdebug) printf("RPT doesn't have SEL\n"); rptentryid = nextrptentryid; continue; /* no SEL here, try next RPT */ } rptentry.ResourceTag.Data[rptentry.ResourceTag.DataLength] = 0; printf("rptentry[%d] tag: %s\n", resourceid,rptentry.ResourceTag.Data); /* initialize structure */ info.Entries = 0; info.Size = 0; info.Enabled = 0; rv = saHpiEventLogInfoGet(sessionid,resourceid,&info); if (fdebug) printf("saHpiEventLogInfoGet %s\n",decode_error(rv)); if (rv == SA_OK) { char date[30]; printf("EventLog entries=%d, size=%d, enabled=%d\n", info.Entries,info.Size,info.Enabled); free = info.Size - info.Entries; saftime2str(info.UpdateTimestamp,date,30); printf("UpdateTime = %s, ", date); saftime2str(info.CurrentTime,date,30); printf("CurrentTime = %s\n", date); printf("Overflow = %d\n", info.OverflowFlag); printf("DeleteEntrySupported = %d\n", info.DeleteEntrySupported); } if (fclear) { rv = saHpiEventLogClear(sessionid,resourceid); if (rv == SA_OK) printf("EventLog successfully cleared\n"); else printf("EventLog clear, error = %d, %s\n",rv, decode_error(rv)); break; } if (info.Entries != 0){ entryid = SAHPI_OLDEST_ENTRY; while ((rv == SA_OK) && (entryid != SAHPI_NO_MORE_ENTRIES)) { rv = saHpiEventLogEntryGet(sessionid,resourceid, entryid,&preventryid,&nextentryid, &sel,&rdr,NULL); if (fdebug) printf("saHpiEventLogEntryGet %s\n", decode_error(rv)); if (rv == SA_OK) { ShowSel(&sel, &rdr, &rptentry); preventryid = entryid; entryid = nextentryid; } } } else printf("SEL is empty\n"); if (free < 6) { printf("WARNING: Log free space is very low (%d records)\n",free); printf("\tClear log with hpisel -c\n"); } rptentryid = nextrptentryid; } } printf("done.\n"); rv = saHpiSessionClose(sessionid); rv = saHpiFinalize(); // exit(0); return(0); }
int main(int argc, char **argv) { char c; SaErrorT rv; SaHpiVersionT hpiVer; SaHpiSessionIdT sessionid; SaHpiRptInfoT rptinfo; SaHpiRptEntryT rptentry; SaHpiEntryIdT rptentryid; SaHpiEntryIdT nextrptentryid; SaHpiResourceIdT resourceid; SaHpiSelEntryIdT entryid; SaHpiSelEntryIdT nextentryid; SaHpiSelEntryIdT preventryid; SaHpiSelInfoT info; SaHpiSelEntryT sel; SaHpiRdrT rdr; printf("%s: version %s\n",argv[0],progver); while ( (c = getopt( argc, argv,"cx?")) != EOF ) switch(c) { case 'c': fclear = 1; break; case 'x': fdebug = 1; break; default: printf("Usage %s [-cx]\n",argv[0]); printf("where -c clears the event log\n"); printf(" -x displays eXtra debug messages\n"); exit(1); } rv = saHpiInitialize(&hpiVer); if (rv != SA_OK) { printf("saHpiInitialize: %s\n",decode_error(rv)); exit(-1); } rv = saHpiSessionOpen(SAHPI_DEFAULT_DOMAIN_ID,&sessionid,NULL); if (rv != SA_OK) { if (rv == SA_ERR_HPI_ERROR) printf("saHpiSessionOpen: error %d, SpiLibd not running\n",rv); else printf("saHpiSessionOpen: %s\n",decode_error(rv)); exit(-1); } rv = saHpiResourcesDiscover(sessionid); if (fdebug) printf("saHpiResourcesDiscover %s\n",decode_error(rv)); rv = saHpiRptInfoGet(sessionid,&rptinfo); if (fdebug) printf("saHpiRptInfoGet %s\n",decode_error(rv)); printf("RptInfo: UpdateCount = %d, UpdateTime = %lx\n", rptinfo.UpdateCount, (unsigned long)rptinfo.UpdateTimestamp); #ifdef BUGGY /* ARC: Bug here in OpenHPI required re-doing discovery as a workaround. */ #endif /* walk the RPT list */ rptentryid = SAHPI_OLDEST_ENTRY; while ((rv == SA_OK) && (rptentryid != SAHPI_LAST_ENTRY)) { rv = saHpiRptEntryGet(sessionid,rptentryid,&nextrptentryid,&rptentry); if (fdebug) printf("saHpiRptEntryGet %s\n",decode_error(rv)); if (rv == SA_OK) { resourceid = rptentry.ResourceId; if (fdebug) printf("RPT %x capabilities = %x\n", resourceid, rptentry.ResourceCapabilities); if ((rptentry.ResourceCapabilities & SAHPI_CAPABILITY_SEL) == 0) continue; /* no SEL here, try next RPT */ if (fclear) { rv = saHpiEventLogClear(sessionid,resourceid); if (rv == SA_OK) printf("EventLog successfully cleared\n"); else printf("EventLog clear, error = %d\n",rv); break; } rptentry.ResourceTag.Data[rptentry.ResourceTag.DataLength] = 0; printf("rptentry[%d] tag: %s\n", resourceid,rptentry.ResourceTag.Data); rv = saHpiEventLogInfoGet(sessionid,resourceid,&info); if (fdebug) printf("saHpiEventLogInfoGet %s\n",decode_error(rv)); if (rv == SA_OK) { /* This data isn't reliable yet with Spi beta2 implementation */ /* Use the entryid instead to calculate log size below. */ printf("EventLog entries=%d, size=%d, enabled=%d\n", info.Entries,info.Size,info.Enabled); } entryid = SAHPI_OLDEST_ENTRY; while ((rv == SA_OK) && (entryid != SAHPI_NO_MORE_ENTRIES)) { rv = saHpiEventLogEntryGet(sessionid,resourceid,entryid, &preventryid,&nextentryid,&sel,&rdr,NULL); if (fdebug) printf("saHpiEventLogEntryGet %s\n", decode_error(rv)); if (rv == SA_OK) { ShowSel(&sel, &rdr, &rptentry); preventryid = entryid; entryid = nextentryid; } } if (preventryid >= 0xff80) { int free; /* * This test could be more generic if the log info fields above * were accurate. IPMI SEL logs have a fixed size of 0x10000 * bytes. New log records are thrown away when it gets full. * (OLDEST = 0, NO_MORE = fffffffe , so these are ok.) */ free = (0x10000 - 20) - preventryid; printf("WARNING: Log free space is very low (%d bytes)\n" " Clear log with hpisel -c\n",free); } rptentryid = nextrptentryid; } } rv = saHpiSessionClose(sessionid); rv = saHpiFinalize(); exit(0); return(0); }
int testEventLog(SaHpiSessionIdT session_id, SaHpiResourceIdT resourceId, char *name) { SaHpiEventLogEntryIdT prev_entry_id; SaHpiEventLogEntryIdT next_entry_id; SaHpiEventLogEntryT entry_get; SaHpiEventT entry_add; SaHpiRdrT rdr; SaHpiRptEntryT rpt_entry; SaHpiBoolT enable_old; SaHpiBoolT temporarly_disabled = SAHPI_FALSE; SaErrorT error; int retval = SAF_TEST_UNKNOWN; SaHpiEventLogInfoT info; /* Disable event log state, to ensure entry is newest eventlog entry */ error = saHpiEventLogStateGet(session_id, resourceId, &enable_old); if (error != SA_OK) { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogStateGet, SA_OK, error); } else { if (enable_old) { error = saHpiEventLogStateSet(session_id, resourceId, SAHPI_FALSE); if (error == SA_OK) { temporarly_disabled = SAHPI_TRUE; } else { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogStateSet, SA_OK, error); } } if (retval == SAF_TEST_UNKNOWN) { error = saHpiEventLogInfoGet(session_id, resourceId, &info); if (error != SA_OK) { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogInfoGet, SA_OK, error); } else { if (info.Entries >= info.Size) { // If the event log is full error = saHpiEventLogClear(session_id, rpt_entry.ResourceId); if (error != SA_OK) { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogInfoGet, SA_OK, error); } } if (retval == SAF_TEST_UNKNOWN) { entry_add.Source = SAHPI_UNSPECIFIED_RESOURCE_ID; entry_add.EventType = SAHPI_ET_USER; entry_add.Timestamp = SAHPI_TIME_UNSPECIFIED; entry_add.Severity = SAHPI_OK; memcpy(entry_add.EventDataUnion.UserEvent.UserEventData.Data, TEST_STR, sizeof(TEST_STR)); entry_add.EventDataUnion.UserEvent.UserEventData.DataType = SAHPI_TL_TYPE_TEXT; entry_add.EventDataUnion.UserEvent.UserEventData.Language = SAHPI_LANG_ENGLISH; entry_add.EventDataUnion.UserEvent.UserEventData.DataLength = (SaHpiUint8T) sizeof(TEST_STR); error = saHpiEventLogEntryAdd(session_id, resourceId, &entry_add); if (error != SA_OK) { retval = SAF_TEST_FAIL; e_print(saHpiEventLogStateSet, SA_OK, error); } else { error = saHpiEventLogEntryGet(session_id, resourceId, SAHPI_NEWEST_ENTRY, &prev_entry_id, &next_entry_id, &entry_get, &rdr, &rpt_entry); if (error != SA_OK) { retval = SAF_TEST_FAIL; e_print(saHpiEventLogEntryGet, SA_OK, error); } else if (!sameUserEvent(&entry_add, &entry_get.Event)) { retval = SAF_TEST_FAIL; m_print("Added event log entry is invalid! (%s)!", name); } else { retval = SAF_TEST_PASS; } } } } } // Clean-up if (temporarly_disabled) { error = saHpiEventLogStateSet(session_id, resourceId, enable_old); if (error != SA_OK) { e_print(saHpiEventLogStateSet, SA_OK, error); } } } return retval; }
int main(int argc, char **argv) { SaErrorT err; SaHpiRdrT rdr; SaHpiRptEntryT rpt; SaHpiSelEntryT logentry; SaHpiSelEntryIdT prev_logid, next_logid; SaHpiSessionIdT sessionid; SaHpiVersionT hpiVer; char *hash_key, *logstr; SnmpMibInfoT *hash_value; /* Setup Infra-structure */ err = saHpiInitialize(&hpiVer); if (err != SA_OK) { printf("Error! saHpiInitialize: err=%d\n", err); return -1; } err = saHpiSessionOpen(SAHPI_DEFAULT_DOMAIN_ID, &sessionid, NULL); if (err != SA_OK) { printf("Error! saHpiSessionOpen: err=%d\n", err); return -1; } err = saHpiResourcesDiscover(sessionid); if (err != SA_OK) { printf("Error! saHpiResourcesDiscover: err=%d\n", err); return -1; } /* If test OID not already in sim hash table; create it */ if (!g_hash_table_lookup_extended(sim_hash, ERROR_LOG_MSG_OID, (gpointer)&hash_key, (gpointer)&hash_value)) { hash_key = g_strdup(ERROR_LOG_MSG_OID); if (!hash_key) { printf("Error: Cannot allocate memory for oid key=%s\n", ERROR_LOG_MSG_OID); return -1; } hash_value = g_malloc0(sizeof(SnmpMibInfoT)); if (!hash_value) { printf("Cannot allocate memory for hash value for oid=%s", ERROR_LOG_MSG_OID); return -1; } } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************ * TestCase - Mapped Chassis Event (EN_CUTOFF_HI_FAULT_3_35V) * Event recovered in next testcase ************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == CHASSIS_RID) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState == SAHPI_ES_UNSPECIFIED) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Mapped Chassis Event (EN_CUTOFF_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Chassis Recovery Event (EN_CUTOFF_HI_FAULT_3_35V) * Recover event in previous testcase *************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == CHASSIS_RID) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_CRITICAL) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_FALSE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_CRIT) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Chassis Recovery Event (EN_CUTOFF_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Chassis Duplicate Event ( EN_PFA_HI_FAULT_3_35V) * Previous state check depends on previous testcase! *************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System over recommended voltage on +3.3v. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((logentry.Event.Source == CHASSIS_RID) && (logentry.Event.EventType == SAHPI_ET_SENSOR) && (logentry.Event.Severity == SAHPI_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.SensorType == SAHPI_VOLTAGE) && (logentry.Event.EventDataUnion.SensorEvent.Assertion == SAHPI_TRUE) && (!(logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.EventState & SAHPI_ES_UPPER_MINOR) && (!(logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_CRIT)) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MAJOR) && (logentry.Event.EventDataUnion.SensorEvent.PreviousState & SAHPI_ES_UPPER_MINOR) && (logentry.Event.EventDataUnion.SensorEvent.TriggerReading.Interpreted.Value.SensorFloat32 == (float)3.5) && (logentry.Event.EventDataUnion.SensorEvent.TriggerThreshold.Interpreted.Value.SensorFloat32 == (float)3.4))) { printf("Error! TestCase - Chassis Duplicate Event ( EN_PFA_HI_FAULT_3_35V)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************************************* * TestCase - Non-mapped Event (Severity=INFO) *************************************************************/ logstr = "Severity:INFO Source:BLADE_01 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus message not in string to event table"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == CHASSIS_RID)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Non-mapped Event (Severity=INFO)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /* Better to test a mapped login event - don't have one yet */ /************************************************************* * TestCase - Non-mapped Login Event (Severity=WARN) *************************************************************/ logstr = "Severity:WARN Source:SWITCH_4 Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus login message Login ID:\'\'myid\' @ someaddress\'"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!((!(logentry.Event.Source == CHASSIS_RID)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_MINOR))) { printf("Error! TestCase - Non-mapped Login Event (Severity=WARN)\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /************************************ * Drive some error paths in the code ************************************/ /****************************************************************** * TestCase - Bogus threshold strings ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:System shutoff due to +3.3v over voltage. Bogus Read value 3.5 Bogus Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == CHASSIS_RID)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Bogus threshold strings\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************************************************************** * TestCase - Recovery string not first character of text string * (blank is first character). Should not treat as a recovery event ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text: Recovery System shutoff due to +3.3v over voltage. Read value 3.5 Threshold value 3.4"; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == CHASSIS_RID)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - Recovery string not first character of text string\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************************************************************** * TestCase - In string table but not mapped * Uses special defined Test event in rsa_str2event.c ******************************************************************/ logstr = "Severity:INFO Source:SERVPROC Name:WMN315702424 Date:10/11/03 Time:09:09:46 Text:Bogus Test Event."; memset(&logentry, 0 , sizeof(SaHpiSelEntryT)); strcpy(hash_value->value.string, logstr); g_hash_table_insert(sim_hash, hash_key, hash_value); err = saHpiEventLogEntryGet(sessionid, SAHPI_DEFAULT_DOMAIN_ID, SAHPI_NEWEST_ENTRY, &prev_logid, &next_logid, &logentry, &rdr, &rpt); if (err != SA_OK) { printf("Error! saHpiEventLogEntryGet: line=%d; err=%d\n", __LINE__, err); return -1; } /* Check expected values */ if (!(((logentry.Event.Source == CHASSIS_RID)) && (logentry.Event.EventType == SAHPI_ET_OEM) && (logentry.Event.Severity == SAHPI_INFORMATIONAL))) { printf("Error! TestCase - In string table but not mapped\n"); print_event(&(logentry.Event)); return -1; } err = saHpiEventLogClear(sessionid, SAHPI_DEFAULT_DOMAIN_ID); if (err != SA_OK) { printf("Error! saHpiEventLogClear: line=%d; err=%d\n", __LINE__, err); return -1; } /****************** * End of testcases ******************/ err = saHpiSessionClose(sessionid); if (err != SA_OK) { printf("Error! saHpiSessionClose: err=%d\n", err); return -1; } err = saHpiFinalize(); if (err != SA_OK) { printf("Error! saHpiFinalize: err=%d\n", err); return -1; } return 0; }
int test_res(SaHpiSessionIdT session, SaHpiResourceIdT resource) { SaErrorT status; int retval = SAF_TEST_UNKNOWN; SaHpiEventLogEntryIdT PrevLogEntry; SaHpiEventLogEntryIdT NextLogEntry; SaHpiEventLogEntryT LogEntry; SaHpiEventT EvtEntry; SaHpiEventLogInfoT info; SaHpiBoolT savedState; status = saHpiEventLogStateGet(session, resource, &savedState); if (status != SA_OK) { e_print(saHpiEventLogStateGet, SA_OK, status); return SAF_TEST_UNRESOLVED; } status = saHpiEventLogStateSet(session, resource, SAHPI_FALSE); if (status != SA_OK) { e_print(saHpiEventLogStateSet, SA_OK, status); return SAF_TEST_UNRESOLVED; } // // Check to see if there needs to be an eventlog entry added. // status = saHpiEventLogInfoGet(session, resource, &info); if (status != SA_OK) { // Even if this resource does not work, others will e_print(saHpiEventLogInfoGet, SA_OK, status); retval = SAF_TEST_NOTSUPPORT; } else { if (info.Size == 0) retval = SAF_TEST_NOTSUPPORT; else { if (info.Entries == info.Size) { status = saHpiEventLogClear(session, resource); if (status != SA_OK) { e_print(saHpiEventLogClear, SA_OK, status); retval = SAF_TEST_UNRESOLVED; } } if (retval == SAF_TEST_UNKNOWN) { EvtEntry.EventType = SAHPI_ET_USER; EvtEntry.Source = SAHPI_UNSPECIFIED_RESOURCE_ID; EvtEntry.Timestamp = SAHPI_TIME_UNSPECIFIED; EvtEntry.Severity = SAHPI_OK; strncpy(EvtEntry.EventDataUnion.UserEvent. UserEventData.Data, TEST_STRING, TEST_STRING_LENGTH); EvtEntry.EventDataUnion.UserEvent.UserEventData. DataLength = TEST_STRING_LENGTH; EvtEntry.EventDataUnion.UserEvent.UserEventData. Language = SAHPI_LANG_ENGLISH; EvtEntry.EventDataUnion.UserEvent.UserEventData. DataType = SAHPI_TL_TYPE_TEXT; status = saHpiEventLogEntryAdd(session, resource, &EvtEntry); if (status == SA_ERR_HPI_INVALID_DATA) { retval = SAF_TEST_NOTSUPPORT; } else if (status == SA_ERR_HPI_OUT_OF_SPACE) { retval = SAF_TEST_NOTSUPPORT; } else if (status != SA_OK) { retval = SAF_TEST_UNRESOLVED; e_print(saHpiEventLogEntryAdd, SA_OK || SA_ERR_HPI_INVALID_DATA, status); } } } } if (retval == SAF_TEST_UNKNOWN) { status = saHpiEventLogEntryGet(session, resource, SAHPI_NEWEST_ENTRY, &PrevLogEntry, &NextLogEntry, &LogEntry, NULL, NULL); if (status != SA_OK) { e_print(saHpiEventLogEntryGet, SA_OK, status); retval = SAF_TEST_FAIL; } else if (sameUserEvent(&EvtEntry, &LogEntry.Event)) retval = SAF_TEST_PASS; else { m_print("Didn't get the same event that was added!"); retval = SAF_TEST_FAIL; } status = saHpiEventLogClear(session, resource); if (status != SA_OK) e_print(saHpiEventLogClear, SA_OK, status); status = saHpiEventLogStateSet(session, resource, savedState); if (status != SA_OK) e_print(savedState, SA_OK, status); } return (retval); }
int main(int argc, char **argv) { int c; SaErrorT rv, rv_2; SaHpiVersionT hpiVer; SaHpiSessionIdT sessionid; /* Domain */ SaHpiDomainInfoT domainInfo; SaHpiEventLogEntryIdT entryid; SaHpiEventLogEntryIdT nextentryid; SaHpiEventLogEntryIdT preventryid; SaHpiEventLogInfoT info; SaHpiEventLogEntryT el; SaHpiRdrT rdr, *rdrptr; SaHpiRptEntryT rpt, *rptptr; printf("%s: version %s\n",argv[0],progver); while ( (c = getopt( argc, argv,"cdpx?")) != EOF ) switch(c) { case 'c': fclear = 1; break; case 'd': frdr = 1; break; case 'p': frpt = 1; break; case 'x': fdebug = 1; break; default: printf("\n\n\nUsage %s [-cdpx]\n",argv[0]); printf(" Where \n"); printf(" -c clears the event log\n"); printf(" -d also get RDR with the event log\n"); printf(" -p also get RPT with the event log\n"); printf(" -x displays eXtra debug messages\n\n\n"); exit(1); } /* * House keeping: * -- get (check?) hpi implementation version * -- open hpi session */ if (fdebug) printf("saHpiVersionGet\n"); hpiVer = saHpiVersionGet(); printf("Hpi Version %d Implemented.\n", hpiVer); rv = saHpiSessionOpen(SAHPI_UNSPECIFIED_DOMAIN_ID,&sessionid,NULL); if (rv != SA_OK) { if (rv == SA_ERR_HPI_ERROR) printf("saHpiSessionOpen: error %d, SpiLibd not running\n",rv); else printf("saHpiSessionOpen: %s\n", oh_lookup_error(rv)); exit(-1); } rv = saHpiDiscover(sessionid); if (fdebug) printf("saHpiResourcesDiscover %s\n", oh_lookup_error(rv)); rv = saHpiDomainInfoGet(sessionid, &domainInfo); if (fdebug) printf("saHpiDomainInfoGet %s\n", oh_lookup_error(rv)); printf("DomainInfo: UpdateCount = %d, UpdateTime = %lx\n", domainInfo.RptUpdateCount, (unsigned long)domainInfo.RptUpdateTimestamp); /* initialize structure */ info.Entries = 0; info.Size = 0; info.Enabled = 0; rv_2 = saHpiEventLogInfoGet(sessionid,SAHPI_UNSPECIFIED_RESOURCE_ID,&info); if (fdebug) printf("saHpiEventLogInfoGet %s\n", oh_lookup_error(rv)); if (rv_2 == SA_OK) { printf("Domain EventLogInfo\n"); oh_print_eventloginfo(&info, 4); } else { printf("Domain saHpiEventLogInfoGet %s\n", oh_lookup_error(rv_2)); } if (fclear) { rv = saHpiEventLogClear(sessionid,SAHPI_UNSPECIFIED_RESOURCE_ID); if (rv == SA_OK) printf("EventLog successfully cleared\n"); else printf("EventLog clear, error = %d, %s\n", rv, oh_lookup_error(rv)); return(0); } if (info.Entries != 0){ rv = SA_OK; entryid = SAHPI_OLDEST_ENTRY; while ((rv == SA_OK) && (entryid != SAHPI_NO_MORE_ENTRIES)) { if (frdr) rdrptr = &rdr; else rdrptr = NULL; if (frpt) rptptr = &rpt; else rptptr = NULL; rv = saHpiEventLogEntryGet(sessionid,SAHPI_UNSPECIFIED_RESOURCE_ID, entryid,&preventryid, &nextentryid, &el, rdrptr, rptptr); if (fdebug) printf("saHpiEventLogEntryGet %s\n", oh_lookup_error(rv)); if (rv == SA_OK) { oh_print_eventlogentry(&el, 6); if (frdr) { if (rdrptr->RdrType == SAHPI_NO_RECORD) printf(" No RDR associated with EventType = %s\n\n", oh_lookup_eventtype(el.Event.EventType)); else oh_print_rdr(rdrptr, 12); } if (frpt) { if (rptptr->ResourceCapabilities == 0) printf(" No RPT associated with EventType = %s\n\n", oh_lookup_eventtype(el.Event.EventType)); else oh_print_rptentry(rptptr, 10); } preventryid = entryid; entryid = nextentryid; } else { printf("Domain EventLogEntryGet, error = %d, %s\n", rv, oh_lookup_error(rv)); break; } } } else printf("\tSEL is empty.\n\n"); rv = saHpiSessionClose(sessionid); return(0); }