summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--storageaddsel.cpp234
-rw-r--r--testaddsel.cpp38
2 files changed, 136 insertions, 136 deletions
diff --git a/storageaddsel.cpp b/storageaddsel.cpp
index c662502..ec33b1a 100644
--- a/storageaddsel.cpp
+++ b/storageaddsel.cpp
@@ -25,35 +25,35 @@ extern const ipmi::sensor::InvObjectIDMap invSensors;
//////////////////////////
struct esel_section_headers_t {
- uint8_t sectionid[2];
- uint8_t sectionlength[2];
- uint8_t version;
- uint8_t subsectiontype;
- uint8_t compid;
+ uint8_t sectionid[2];
+ uint8_t sectionlength[2];
+ uint8_t version;
+ uint8_t subsectiontype;
+ uint8_t compid;
};
struct severity_values_t {
- uint8_t type;
- Entry::Level level;
+ uint8_t type;
+ Entry::Level level;
};
const std::vector<severity_values_t> g_sev_desc = {
- {0x10, Entry::Level::Warning}, // recoverable error
- {0x20, Entry::Level::Warning}, // predictive error
+ {0x10, Entry::Level::Warning}, // recoverable error
+ {0x20, Entry::Level::Warning}, // predictive error
// TODO via github issue 3066 : map level below to Level::Unrecoverable
- {0x40, Entry::Level::Error}, // unrecoverable error
+ {0x40, Entry::Level::Error}, // unrecoverable error
// TODO via github issue 3066 : map level below to Level::Critical
- {0x50, Entry::Level::Error}, // critical error
- {0x60, Entry::Level::Error}, // error from a diagnostic test
- {0x70, Entry::Level::Warning}, // recoverable symptom
- {0xFF, Entry::Level::Error}, //unknown error
+ {0x50, Entry::Level::Error}, // critical error
+ {0x60, Entry::Level::Error}, // error from a diagnostic test
+ {0x70, Entry::Level::Warning}, // recoverable symptom
+ {0xFF, Entry::Level::Error}, //unknown error
};
Entry::Level sev_lookup(uint8_t n) {
- auto i = std::find_if(std::begin(g_sev_desc), std::end(g_sev_desc),
- [n](auto p){ return p.type == n || p.type == 0xFF; });
- return i->level;
+ auto i = std::find_if(std::begin(g_sev_desc), std::end(g_sev_desc),
+ [n](auto p){ return p.type == n || p.type == 0xFF; });
+ return i->level;
}
@@ -61,93 +61,93 @@ Entry::Level sev_lookup(uint8_t n) {
int find_sensor_type_string(uint8_t sensor_number, char **s) {
- dbus_interface_t a;
- const char *p;
- int r;
+ dbus_interface_t a;
+ const char *p;
+ int r;
- r = find_openbmc_path(sensor_number, &a);
+ r = find_openbmc_path(sensor_number, &a);
- if ((r < 0) || (a.bus[0] == 0)) {
- // Just make a generic message for errors that
- // occur on sensors that don't exist
- r = asprintf(s, "Unknown Sensor (0x%02x)", sensor_number);
- } else {
+ if ((r < 0) || (a.bus[0] == 0)) {
+ // Just make a generic message for errors that
+ // occur on sensors that don't exist
+ r = asprintf(s, "Unknown Sensor (0x%02x)", sensor_number);
+ } else {
- if ((p = strrchr (a.path, '/')) == NULL) {
- p = "/Unknown Sensor";
- }
+ if ((p = strrchr (a.path, '/')) == NULL) {
+ p = "/Unknown Sensor";
+ }
- *s = strdup(p+1);
- }
+ *s = strdup(p+1);
+ }
- return 0;
+ return 0;
}
size_t getfilestream(const char *fn, uint8_t **buffer) {
- FILE *fp;
- ssize_t size = 0;
- int r;
-
- if ((fp = fopen(fn, "rb")) != NULL) {
-
- r = fseek(fp, 0, SEEK_END);
- if (r) {
- log<level::ERR>("Fseek failed");
- goto fclose_fp;
- }
-
- size = ftell(fp);
- if (size == -1L) {
- log<level::ERR>("Ftell failed",
- entry("ERROR=%s", strerror(errno)));
- size = 0;
- goto fclose_fp;
- }
-
- r = fseek(fp, 0, SEEK_SET);
- if (r) {
- log<level::ERR>("Fseek failed");
- size = 0;
- goto fclose_fp;
- }
-
- *buffer = new uint8_t [size];
-
- r = fread(*buffer, 1, size, fp);
- if ( r != size) {
- size = 0;
- log<level::ERR>("Fread failed\n");
- }
+ FILE *fp;
+ ssize_t size = 0;
+ int r;
+
+ if ((fp = fopen(fn, "rb")) != NULL) {
+
+ r = fseek(fp, 0, SEEK_END);
+ if (r) {
+ log<level::ERR>("Fseek failed");
+ goto fclose_fp;
+ }
+
+ size = ftell(fp);
+ if (size == -1L) {
+ log<level::ERR>("Ftell failed",
+ entry("ERROR=%s", strerror(errno)));
+ size = 0;
+ goto fclose_fp;
+ }
+
+ r = fseek(fp, 0, SEEK_SET);
+ if (r) {
+ log<level::ERR>("Fseek failed");
+ size = 0;
+ goto fclose_fp;
+ }
+
+ *buffer = new uint8_t [size];
+
+ r = fread(*buffer, 1, size, fp);
+ if ( r != size) {
+ size = 0;
+ log<level::ERR>("Fread failed\n");
+ }
fclose_fp:
- fclose(fp);
- }
+ fclose(fp);
+ }
- return static_cast<size_t>(size);
+ return static_cast<size_t>(size);
}
Entry::Level create_esel_severity(const uint8_t *buffer) {
- uint8_t severity;
- // Dive in to the IBM log to find the severity
- severity = (0xF0 & buffer[0x4A]);
+ uint8_t severity;
+ // Dive in to the IBM log to find the severity
+ severity = (0xF0 & buffer[0x4A]);
- return sev_lookup(severity);
+ return sev_lookup(severity);
}
int create_esel_association(const uint8_t *buffer, std::string& inventoryPath)
{
- ipmi_add_sel_request_t *p;
- uint8_t sensor;
+ ipmi_add_sel_request_t *p;
+ uint8_t sensor;
- p = ( ipmi_add_sel_request_t *) buffer;
+ p = ( ipmi_add_sel_request_t *) buffer;
- sensor = p->sensornumber;
+ sensor = p->sensornumber;
- inventoryPath = {};
+ inventoryPath = {};
/*
* Search the sensor number to inventory path mapping to figure out the
@@ -162,7 +162,7 @@ int create_esel_association(const uint8_t *buffer, std::string& inventoryPath)
}
}
- return 0;
+ return 0;
}
@@ -171,23 +171,23 @@ int create_esel_description(const uint8_t *buffer, Entry::Level level,
char **message) {
- ipmi_add_sel_request_t *p;
- char *m;
- int r;
+ ipmi_add_sel_request_t *p;
+ char *m;
+ int r;
- p = ( ipmi_add_sel_request_t *) buffer;
+ p = ( ipmi_add_sel_request_t *) buffer;
- find_sensor_type_string(p->sensornumber,&m);
+ find_sensor_type_string(p->sensornumber,&m);
- r = asprintf(message, "A %s has experienced an error of level %d",
+ r = asprintf(message, "A %s has experienced an error of level %d",
m, static_cast<uint32_t>(level) );
- if (r == -1) {
- log<level::ERR>("Failed to allocate memory for ESEL description");
- }
+ if (r == -1) {
+ log<level::ERR>("Failed to allocate memory for ESEL description");
+ }
- free(m);
+ free(m);
- return 0;
+ return 0;
}
@@ -220,33 +220,33 @@ int send_esel_to_dbus(const char *desc,
void send_esel(uint16_t recordid) {
- char *desc;
- uint8_t *buffer = NULL;
- const char *path = "/tmp/esel";
- ssize_t sz;
- int r;
- std::string inventoryPath;
-
- sz = getfilestream(path, &buffer);
- if (sz == 0) {
- log<level::ERR>("Error file does not exist",
- entry("FILENAME=%s", path));
- return;
- }
-
- auto sev = create_esel_severity(buffer);
- create_esel_association(buffer, inventoryPath);
- create_esel_description(buffer, sev, &desc);
-
- r = send_esel_to_dbus(desc, sev, inventoryPath, buffer, sz);
- if (r < 0) {
- log<level::ERR>("Failed to send esel to dbus");
- }
-
- free(desc);
- delete[] buffer;
-
- return;
+ char *desc;
+ uint8_t *buffer = NULL;
+ const char *path = "/tmp/esel";
+ ssize_t sz;
+ int r;
+ std::string inventoryPath;
+
+ sz = getfilestream(path, &buffer);
+ if (sz == 0) {
+ log<level::ERR>("Error file does not exist",
+ entry("FILENAME=%s", path));
+ return;
+ }
+
+ auto sev = create_esel_severity(buffer);
+ create_esel_association(buffer, inventoryPath);
+ create_esel_description(buffer, sev, &desc);
+
+ r = send_esel_to_dbus(desc, sev, inventoryPath, buffer, sz);
+ if (r < 0) {
+ log<level::ERR>("Failed to send esel to dbus");
+ }
+
+ free(desc);
+ delete[] buffer;
+
+ return;
}
std::string readESEL(const char* fileName)
diff --git a/testaddsel.cpp b/testaddsel.cpp
index 55cf07d..c3b317a 100644
--- a/testaddsel.cpp
+++ b/testaddsel.cpp
@@ -81,23 +81,23 @@ final:
int main(int argc, char *argv[])
{
- int base;
- char *endptr, *str;
- long val;
- uint16_t num;
- int r;
-
- if (argc < 2) {
- fprintf(stderr, "Usage: %s sensornumber\n", argv[0]);
- return -1;
- }
-
- str = argv[1];
- base = (argc > 2) ? atoi(argv[2]) : 10;
+ int base;
+ char *endptr, *str;
+ long val;
+ uint16_t num;
+ int r;
+
+ if (argc < 2) {
+ fprintf(stderr, "Usage: %s sensornumber\n", argv[0]);
+ return -1;
+ }
- val = strtol(str, &endptr, base);
+ str = argv[1];
+ base = (argc > 2) ? atoi(argv[2]) : 10;
- num = (uint16_t) val;
+ val = strtol(str, &endptr, base);
+
+ num = (uint16_t) val;
@@ -107,13 +107,13 @@ int main(int argc, char *argv[])
log<level::ERR>("Failed to connect to system bus",
entry("ERRNO=0x%X", -r));
goto finish;
- }
+ }
+
+ send_esel(num);
- send_esel(num);
-
finish:
sd_bus_unref(bus);
- return 0;
+ return 0;
}
OpenPOWER on IntegriCloud