#include "private_header.hpp" #include namespace openpower { namespace pels { using namespace phosphor::logging; PrivateHeader::PrivateHeader(Stream& pel) { try { pel >> *this; validate(); } catch (const std::exception& e) { log("Cannot unflatten private header", entry("ERROR=%s", e.what())); _valid = false; } } void PrivateHeader::validate() { bool failed = false; if (header().id != privateHeaderSectionID) { log("Invalid private header section ID", entry("ID=0x%X", header().id)); failed = true; } if (header().version != privateHeaderVersion) { log("Invalid private header version", entry("VERSION=0x%X", header().version)); failed = true; } if (_sectionCount < minSectionCount) { log("Invalid section count in private header", entry("SECTION_COUNT=0x%X", _sectionCount)); failed = true; } _valid = (failed) ? false : true; } Stream& operator>>(Stream& s, PrivateHeader& ph) { s >> ph._header >> ph._createTimestamp >> ph._commitTimestamp >> ph._creatorID >> ph._logType >> ph._reservedByte >> ph._sectionCount >> ph._obmcLogID >> ph._creatorVersion >> ph._plid >> ph._id; return s; } Stream& operator<<(Stream& s, PrivateHeader& ph) { s << ph._header << ph._createTimestamp << ph._commitTimestamp << ph._creatorID << ph._logType << ph._reservedByte << ph._sectionCount << ph._obmcLogID << ph._creatorVersion << ph._plid << ph._id; return s; } Stream& operator>>(Stream& s, CreatorVersion& cv) { for (size_t i = 0; i < sizeof(CreatorVersion); i++) { s >> cv.version[i]; } return s; } Stream& operator<<(Stream& s, CreatorVersion& cv) { for (size_t i = 0; i < sizeof(CreatorVersion); i++) { s << cv.version[i]; } return s; } } // namespace pels } // namespace openpower