summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bmc/firmware_handler.cpp6
-rw-r--r--bmc/firmware_handler.hpp14
-rw-r--r--bmc/main.cpp7
-rw-r--r--bmc/pci_handler.cpp2
-rw-r--r--bmc/pci_handler.hpp6
-rw-r--r--bmc/test/firmware_canhandle_unittest.cpp3
-rw-r--r--bmc/test/firmware_close_unittest.cpp4
-rw-r--r--bmc/test/firmware_commit_unittest.cpp8
-rw-r--r--bmc/test/firmware_createhandler_unittest.cpp5
-rw-r--r--bmc/test/firmware_handler_unittest.cpp5
-rw-r--r--bmc/test/firmware_sessionstat_unittest.cpp10
-rw-r--r--bmc/test/firmware_stat_unittest.cpp5
-rw-r--r--bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp4
-rw-r--r--bmc/test/firmware_state_notyetstarted_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_updatecompleted_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_updatepending_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_updatestarted_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_uploadinprogress_unittest.cpp4
-rw-r--r--bmc/test/firmware_state_verificationcompleted_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_verificationpending_unittest.cpp2
-rw-r--r--bmc/test/firmware_state_verificationstarted_unittest.cpp2
-rw-r--r--bmc/test/firmware_unittest.hpp11
-rw-r--r--bmc/test/firmware_write_unittest.cpp10
-rw-r--r--bmc/test/firmware_writemeta_unittest.cpp6
-rw-r--r--configure.ac11
-rw-r--r--data.hpp19
-rw-r--r--flags.hpp21
-rw-r--r--tools/Makefile.am2
-rw-r--r--tools/bt.hpp4
-rw-r--r--tools/handler.cpp15
-rw-r--r--tools/interface.hpp5
-rw-r--r--tools/lpc.cpp5
-rw-r--r--tools/lpc.hpp4
-rw-r--r--tools/p2a.cpp7
-rw-r--r--tools/p2a.hpp4
-rw-r--r--tools/test/Makefile.am1
-rw-r--r--tools/test/data_interface_mock.hpp3
-rw-r--r--tools/test/tools_updater_unittest.cpp15
-rw-r--r--tools/updater.cpp3
39 files changed, 137 insertions, 106 deletions
diff --git a/bmc/firmware_handler.cpp b/bmc/firmware_handler.cpp
index aaabe83..5f16846 100644
--- a/bmc/firmware_handler.cpp
+++ b/bmc/firmware_handler.cpp
@@ -16,6 +16,8 @@
#include "firmware_handler.hpp"
+#include "data.hpp"
+#include "flags.hpp"
#include "image_handler.hpp"
#include "status.hpp"
#include "util.hpp"
@@ -511,7 +513,7 @@ bool FirmwareBlobHandler::write(uint16_t session, uint32_t offset,
std::vector<std::uint8_t> bytes;
- if (item->second->flags & UpdateFlags::ipmi)
+ if (item->second->flags & FirmwareFlags::UpdateFlags::ipmi)
{
bytes = data;
}
@@ -550,7 +552,7 @@ bool FirmwareBlobHandler::writeMeta(uint16_t session, uint32_t offset,
return false;
}
- if (item->second->flags & UpdateFlags::ipmi)
+ if (item->second->flags & FirmwareFlags::UpdateFlags::ipmi)
{
return false;
}
diff --git a/bmc/firmware_handler.hpp b/bmc/firmware_handler.hpp
index 8c7cb04..3dd4978 100644
--- a/bmc/firmware_handler.hpp
+++ b/bmc/firmware_handler.hpp
@@ -51,26 +51,12 @@ struct Session
std::string activePath;
};
-struct ExtChunkHdr
-{
- std::uint32_t length; /* Length of the data queued (little endian). */
-} __attribute__((packed));
-
/**
* Register only one firmware blob handler that will manage all sessions.
*/
class FirmwareBlobHandler : public blobs::GenericBlobInterface
{
public:
- enum UpdateFlags : std::uint16_t
- {
- openRead = (1 << 0), /* Flag for reading. */
- openWrite = (1 << 1), /* Flag for writing. */
- ipmi = (1 << 8), /* Expect to send contents over IPMI BlockTransfer. */
- p2a = (1 << 9), /* Expect to send contents over P2A bridge. */
- lpc = (1 << 10), /* Expect to send contents over LPC bridge. */
- };
-
/** The state of the firmware update process. */
enum class UpdateState
{
diff --git a/bmc/main.cpp b/bmc/main.cpp
index 2dd9531..ea27b3d 100644
--- a/bmc/main.cpp
+++ b/bmc/main.cpp
@@ -18,6 +18,7 @@
#include "file_handler.hpp"
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_handler.hpp"
#include "lpc_aspeed.hpp"
#include "lpc_handler.hpp"
@@ -80,12 +81,12 @@ std::vector<HandlerPack> supportedFirmware = {
};
std::vector<DataHandlerPack> supportedTransports = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
#ifdef ENABLE_PCI_BRIDGE
- {FirmwareBlobHandler::UpdateFlags::p2a, &pciDataHandler},
+ {FirmwareFlags::UpdateFlags::p2a, &pciDataHandler},
#endif
#ifdef ENABLE_LPC_BRIDGE
- {FirmwareBlobHandler::UpdateFlags::lpc, &lpcDataHandler},
+ {FirmwareFlags::UpdateFlags::lpc, &lpcDataHandler},
#endif
};
diff --git a/bmc/pci_handler.cpp b/bmc/pci_handler.cpp
index 436c63e..1b6b7ff 100644
--- a/bmc/pci_handler.cpp
+++ b/bmc/pci_handler.cpp
@@ -16,6 +16,8 @@
#include "pci_handler.hpp"
+#include "data.hpp"
+
#include <fcntl.h>
#include <linux/aspeed-p2a-ctrl.h>
diff --git a/bmc/pci_handler.hpp b/bmc/pci_handler.hpp
index 1cafc32..9b2c5b6 100644
--- a/bmc/pci_handler.hpp
+++ b/bmc/pci_handler.hpp
@@ -10,12 +10,6 @@
namespace ipmi_flash
{
-/** P2A configuration response. */
-struct PciConfigResponse
-{
- std::uint32_t address;
-} __attribute__((packed));
-
/**
* Data handler for reading and writing data via the P2A bridge.
*
diff --git a/bmc/test/firmware_canhandle_unittest.cpp b/bmc/test/firmware_canhandle_unittest.cpp
index dabf8ef..13bf943 100644
--- a/bmc/test/firmware_canhandle_unittest.cpp
+++ b/bmc/test/firmware_canhandle_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
@@ -29,7 +30,7 @@ TEST(FirmwareHandlerCanHandleTest, VerifyItemsInListAreOk)
{"bcdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
diff --git a/bmc/test/firmware_close_unittest.cpp b/bmc/test/firmware_close_unittest.cpp
index 66b9c83..d4e7cf8 100644
--- a/bmc/test/firmware_close_unittest.cpp
+++ b/bmc/test/firmware_close_unittest.cpp
@@ -33,7 +33,7 @@ TEST_F(FirmwareHandlerCloseTest, CloseSucceedsWithDataHandler)
EXPECT_CALL(imageMock, open(StrEq(hashBlobId))).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc,
hashBlobId));
/* The active hash blob_id was added. */
@@ -60,7 +60,7 @@ TEST_F(FirmwareHandlerCloseTest, CloseSucceedsWithoutDataHandler)
EXPECT_CALL(imageMock, open(StrEq(hashBlobId))).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
hashBlobId));
/* The active hash blob_id was added. */
diff --git a/bmc/test/firmware_commit_unittest.cpp b/bmc/test/firmware_commit_unittest.cpp
index b8c651e..a6ab172 100644
--- a/bmc/test/firmware_commit_unittest.cpp
+++ b/bmc/test/firmware_commit_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
@@ -33,7 +34,7 @@ class FirmwareHandlerCommitTest : public ::testing::Test
};
data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
}
};
@@ -55,8 +56,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnFlashImage)
EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
EXPECT_FALSE(handler->commit(0, {}));
}
@@ -78,7 +78,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnHashFile)
EXPECT_CALL(imageMock1, open(StrEq(hashBlobId))).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
hashBlobId));
EXPECT_FALSE(handler->commit(0, {}));
diff --git a/bmc/test/firmware_createhandler_unittest.cpp b/bmc/test/firmware_createhandler_unittest.cpp
index dd09cbe..d7b99a6 100644
--- a/bmc/test/firmware_createhandler_unittest.cpp
+++ b/bmc/test/firmware_createhandler_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
@@ -26,8 +27,8 @@ TEST(FirmwareHandlerBlobTest, VerifyFirmwareCounts)
};
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
- {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::lpc, &dataMock},
};
auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
diff --git a/bmc/test/firmware_handler_unittest.cpp b/bmc/test/firmware_handler_unittest.cpp
index 27bd517..7ab224d 100644
--- a/bmc/test/firmware_handler_unittest.cpp
+++ b/bmc/test/firmware_handler_unittest.cpp
@@ -1,4 +1,5 @@
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
@@ -18,7 +19,7 @@ using ::testing::UnorderedElementsAreArray;
TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails)
{
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
@@ -49,7 +50,7 @@ TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness)
{"asdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
diff --git a/bmc/test/firmware_sessionstat_unittest.cpp b/bmc/test/firmware_sessionstat_unittest.cpp
index d2d1896..dcb16d9 100644
--- a/bmc/test/firmware_sessionstat_unittest.cpp
+++ b/bmc/test/firmware_sessionstat_unittest.cpp
@@ -30,8 +30,7 @@ TEST_F(FirmwareSessionStateTestIpmiOnly, DataTypeIpmiNoMetadata)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
int size = 512;
EXPECT_CALL(imageMock, getSize()).WillOnce(Return(size));
@@ -39,7 +38,7 @@ TEST_F(FirmwareSessionStateTestIpmiOnly, DataTypeIpmiNoMetadata)
blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat(0, &meta));
EXPECT_EQ(meta.blobState,
- blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi);
+ blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi);
EXPECT_EQ(meta.size, size);
EXPECT_EQ(meta.metadata.size(), 0);
}
@@ -54,8 +53,7 @@ TEST_F(FirmwareSessionStateTestLpc, DataTypeP2AReturnsMetadata)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
int size = 512;
EXPECT_CALL(imageMock, getSize()).WillOnce(Return(size));
@@ -65,7 +63,7 @@ TEST_F(FirmwareSessionStateTestLpc, DataTypeP2AReturnsMetadata)
blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat(0, &meta));
EXPECT_EQ(meta.blobState,
- blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc);
+ blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc);
EXPECT_EQ(meta.size, size);
EXPECT_EQ(meta.metadata.size(), mBytes.size());
EXPECT_EQ(meta.metadata[0], mBytes[0]);
diff --git a/bmc/test/firmware_stat_unittest.cpp b/bmc/test/firmware_stat_unittest.cpp
index 99ae770..021dca8 100644
--- a/bmc/test/firmware_stat_unittest.cpp
+++ b/bmc/test/firmware_stat_unittest.cpp
@@ -1,4 +1,5 @@
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
@@ -25,7 +26,7 @@ TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport)
{"asdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
@@ -34,7 +35,7 @@ TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport)
blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat("asdf", &meta));
- EXPECT_EQ(FirmwareBlobHandler::UpdateFlags::ipmi, meta.blobState);
+ EXPECT_EQ(FirmwareFlags::UpdateFlags::ipmi, meta.blobState);
}
} // namespace ipmi_flash
diff --git a/bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp b/bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp
index 275763c..bdf6046 100644
--- a/bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp
+++ b/bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp
@@ -56,14 +56,14 @@ class FirmwareHandlerNotYetStartedUbitTest : public ::testing::Test
ImageHandlerMock imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr}};
std::unique_ptr<blobs::GenericBlobInterface> handler;
TriggerMock* verifyMockPtr;
TriggerMock* updateMockPtr;
std::uint16_t session = 1;
std::uint16_t flags =
- blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
+ blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
};
TEST_F(FirmwareHandlerNotYetStartedUbitTest,
diff --git a/bmc/test/firmware_state_notyetstarted_unittest.cpp b/bmc/test/firmware_state_notyetstarted_unittest.cpp
index 54ab7f8..8681064 100644
--- a/bmc/test/firmware_state_notyetstarted_unittest.cpp
+++ b/bmc/test/firmware_state_notyetstarted_unittest.cpp
@@ -76,7 +76,7 @@ TEST_F(FirmwareHandlerNotYetStartedTest, StatEachBlobIdVerifyResults)
* transported supported.
*/
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
auto blobs = handler->getBlobIds();
diff --git a/bmc/test/firmware_state_updatecompleted_unittest.cpp b/bmc/test/firmware_state_updatecompleted_unittest.cpp
index 9e43edb..fd7f583 100644
--- a/bmc/test/firmware_state_updatecompleted_unittest.cpp
+++ b/bmc/test/firmware_state_updatecompleted_unittest.cpp
@@ -123,7 +123,7 @@ TEST_F(FirmwareHandlerUpdateCompletedTest, StatOnNormalBlobsReturnsSuccess)
getToUpdateCompleted(ActionStatus::success);
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
diff --git a/bmc/test/firmware_state_updatepending_unittest.cpp b/bmc/test/firmware_state_updatepending_unittest.cpp
index d09c820..6f5162f 100644
--- a/bmc/test/firmware_state_updatepending_unittest.cpp
+++ b/bmc/test/firmware_state_updatepending_unittest.cpp
@@ -164,7 +164,7 @@ TEST_F(FirmwareHandlerUpdatePendingTest, StatOnNormalBlobsReturnsSuccess)
getToUpdatePending();
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
for (const auto& blob : startingBlobs)
diff --git a/bmc/test/firmware_state_updatestarted_unittest.cpp b/bmc/test/firmware_state_updatestarted_unittest.cpp
index 237e0e9..2e4f020 100644
--- a/bmc/test/firmware_state_updatestarted_unittest.cpp
+++ b/bmc/test/firmware_state_updatestarted_unittest.cpp
@@ -114,7 +114,7 @@ TEST_F(FirmwareHandlerUpdateStartedTest, StatOnNormalBlobsReturnsSuccess)
getToUpdateStarted();
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
diff --git a/bmc/test/firmware_state_uploadinprogress_unittest.cpp b/bmc/test/firmware_state_uploadinprogress_unittest.cpp
index 005ca3f..be3269e 100644
--- a/bmc/test/firmware_state_uploadinprogress_unittest.cpp
+++ b/bmc/test/firmware_state_uploadinprogress_unittest.cpp
@@ -96,7 +96,7 @@ TEST_F(FirmwareHandlerUploadInProgressTest, StatOnNormalBlobsReturnsSuccess)
* return the same information as in the notYetStarted state.
*/
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
openToInProgress(staticLayoutBlobId);
@@ -126,7 +126,7 @@ TEST_F(FirmwareHandlerUploadInProgressTest,
blobs::BlobMeta meta, expectedMeta = {};
expectedMeta.size = 32;
expectedMeta.blobState =
- blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
+ blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
EXPECT_TRUE(handler->stat(session, &meta));
EXPECT_EQ(expectedMeta, meta);
}
diff --git a/bmc/test/firmware_state_verificationcompleted_unittest.cpp b/bmc/test/firmware_state_verificationcompleted_unittest.cpp
index 8754e15..85f1895 100644
--- a/bmc/test/firmware_state_verificationcompleted_unittest.cpp
+++ b/bmc/test/firmware_state_verificationcompleted_unittest.cpp
@@ -142,7 +142,7 @@ TEST_F(FirmwareHandlerVerificationCompletedTest,
getToVerificationCompleted(ActionStatus::success);
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
diff --git a/bmc/test/firmware_state_verificationpending_unittest.cpp b/bmc/test/firmware_state_verificationpending_unittest.cpp
index dd2df27..fbcd73d 100644
--- a/bmc/test/firmware_state_verificationpending_unittest.cpp
+++ b/bmc/test/firmware_state_verificationpending_unittest.cpp
@@ -165,7 +165,7 @@ TEST_F(FirmwareHandlerVerificationPendingTest, StatOnNormalBlobsReturnsSuccess)
getToVerificationPending(staticLayoutBlobId);
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
diff --git a/bmc/test/firmware_state_verificationstarted_unittest.cpp b/bmc/test/firmware_state_verificationstarted_unittest.cpp
index 74e24b2..b183db0 100644
--- a/bmc/test/firmware_state_verificationstarted_unittest.cpp
+++ b/bmc/test/firmware_state_verificationstarted_unittest.cpp
@@ -195,7 +195,7 @@ TEST_F(FirmwareHandlerVerificationStartedTest, StatOnNormalBlobsReturnsSuccess)
getToVerificationStarted(staticLayoutBlobId);
blobs::BlobMeta expected;
- expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;
std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
diff --git a/bmc/test/firmware_unittest.hpp b/bmc/test/firmware_unittest.hpp
index 8d92fe8..6b97289 100644
--- a/bmc/test/firmware_unittest.hpp
+++ b/bmc/test/firmware_unittest.hpp
@@ -2,6 +2,7 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
@@ -121,7 +122,7 @@ class IpmiOnlyFirmwareStaticTest : public ::testing::Test
ImageHandlerMock imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr}};
std::unique_ptr<blobs::GenericBlobInterface> handler;
TriggerMock* prepareMockPtr;
TriggerMock* verifyMockPtr;
@@ -129,7 +130,7 @@ class IpmiOnlyFirmwareStaticTest : public ::testing::Test
std::uint16_t session = 1;
std::uint16_t flags =
- blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
+ blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
std::vector<std::string> startingBlobs = {staticLayoutBlobId, hashBlobId};
};
@@ -140,7 +141,7 @@ class IpmiOnlyFirmwareTest : public ::testing::Test
ImageHandlerMock imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr}};
std::unique_ptr<blobs::GenericBlobInterface> handler;
void SetUp() override
@@ -171,8 +172,8 @@ class FakeLpcFirmwareTest : public ::testing::Test
{"asdf", &imageMock},
};
data = {
- {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
- {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
+ {FirmwareFlags::UpdateFlags::ipmi, nullptr},
+ {FirmwareFlags::UpdateFlags::lpc, &dataMock},
};
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
blobs, data, CreateTriggerMock(), CreateTriggerMock(),
diff --git a/bmc/test/firmware_write_unittest.cpp b/bmc/test/firmware_write_unittest.cpp
index d74f3c8..b3353c9 100644
--- a/bmc/test/firmware_write_unittest.cpp
+++ b/bmc/test/firmware_write_unittest.cpp
@@ -1,3 +1,4 @@
+#include "data.hpp"
#include "data_mock.hpp"
#include "firmware_handler.hpp"
#include "firmware_unittest.hpp"
@@ -30,8 +31,7 @@ TEST_F(FirmwareHandlerWriteTestIpmiOnly, DataTypeIpmiWriteSuccess)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
std::vector<std::uint8_t> bytes = {0xaa, 0x55};
@@ -46,8 +46,7 @@ TEST_F(FirmwareHandlerWriteTestLpc, DataTypeNonIpmiWriteSuccess)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
struct ExtChunkHdr request;
request.length = 4; /* number of bytes to read. */
@@ -70,8 +69,7 @@ TEST_F(FirmwareHandlerWriteTestLpc, DataTypeNonIpmiWriteFailsBadRequest)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
struct ExtChunkHdr request;
request.length = 4; /* number of bytes to read. */
diff --git a/bmc/test/firmware_writemeta_unittest.cpp b/bmc/test/firmware_writemeta_unittest.cpp
index 491d669..cb1c965 100644
--- a/bmc/test/firmware_writemeta_unittest.cpp
+++ b/bmc/test/firmware_writemeta_unittest.cpp
@@ -24,8 +24,7 @@ TEST_F(FirmwareHandlerWriteMetaTest, WriteConfigParametersFailIfOverIPMI)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
std::vector<std::uint8_t> bytes = {0xaa, 0x55};
@@ -38,8 +37,7 @@ TEST_F(FirmwareHandlerWriteMetaTest, WriteConfigParametersPassedThrough)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
EXPECT_TRUE(handler->open(
- 0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
- "asdf"));
+ 0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
std::vector<std::uint8_t> bytes = {0x01, 0x02, 0x03, 0x04};
diff --git a/configure.ac b/configure.ac
index 929413a..756c89b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,6 +64,12 @@ AS_IF([test "x$enable_build_host_tool" != "xyes"], [
)
PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging])
+
+ AC_CHECK_HEADER(
+ [blobs-ipmid/blobs.hpp],
+ [],
+ [AC_MSG_ERROR(["phosphor-ipmi-blobs required and not found."])]
+ )
])
# These packages are required for both the BMC and the host-tool.
@@ -81,11 +87,6 @@ PKG_CHECK_MODULES(
[],
[AC_MSG_ERROR([Could not find libpci... pciutils package required])]
)
-AC_CHECK_HEADER(
- [blobs-ipmid/blobs.hpp],
- [],
- [AC_MSG_ERROR(["phosphor-ipmi-blobs required and not found."])]
-)
AX_PTHREAD([], [AC_MSG_ERROR(["pthread required and not found"])])
# Configurability
diff --git a/data.hpp b/data.hpp
new file mode 100644
index 0000000..6ef8911
--- /dev/null
+++ b/data.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include <cstdint>
+
+namespace ipmi_flash
+{
+
+struct ExtChunkHdr
+{
+ std::uint32_t length; /* Length of the data queued (little endian). */
+} __attribute__((packed));
+
+/** P2A configuration response. */
+struct PciConfigResponse
+{
+ std::uint32_t address;
+} __attribute__((packed));
+
+} // namespace ipmi_flash
diff --git a/flags.hpp b/flags.hpp
new file mode 100644
index 0000000..d7c89d5
--- /dev/null
+++ b/flags.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <cstdint>
+
+namespace ipmi_flash
+{
+
+class FirmwareFlags
+{
+ public:
+ enum UpdateFlags : std::uint16_t
+ {
+ openRead = (1 << 0), /* Flag for reading. */
+ openWrite = (1 << 1), /* Flag for writing. */
+ ipmi = (1 << 8), /* Expect to send contents over IPMI BlockTransfer. */
+ p2a = (1 << 9), /* Expect to send contents over P2A bridge. */
+ lpc = (1 << 10), /* Expect to send contents over LPC bridge. */
+ };
+};
+
+} // namespace ipmi_flash
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 96f8a7e..e54b301 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -4,14 +4,12 @@ burn_my_bmc_SOURCES = main.cpp
burn_my_bmc_LDADD = libupdater.la $(CODE_COVERAGE_LIBS)
burn_my_bmc_CXXFLAGS = \
-I$(top_srcdir) \
- -I$(top_srcdir)/bmc/ \
$(CODE_COVERAGE_CXXFLAGS)
noinst_LTLIBRARIES = libupdater.la
libupdater_la_LDFLAGS = -static $(CODE_COVERAGE_LIBS) $(IPMIBLOB_LIBS) $(PCILIB_LIBS)
libupdater_la_CXXFLAGS = \
-I$(top_srcdir) \
- -I$(top_srcdir)/bmc/ \
$(CODE_COVERAGE_CXXFLAGS) \
$(IPMIBLOB_CFLAGS) \
$(PCILIB_CFLAGS)
diff --git a/tools/bt.hpp b/tools/bt.hpp
index 9caac5d..729f74d 100644
--- a/tools/bt.hpp
+++ b/tools/bt.hpp
@@ -17,9 +17,9 @@ class BtDataHandler : public DataInterface
sys(sys){};
bool sendContents(const std::string& input, std::uint16_t session) override;
- ipmi_flash::FirmwareBlobHandler::UpdateFlags supportedType() const override
+ ipmi_flash::FirmwareFlags::UpdateFlags supportedType() const override
{
- return ipmi_flash::FirmwareBlobHandler::UpdateFlags::ipmi;
+ return ipmi_flash::FirmwareFlags::UpdateFlags::ipmi;
}
private:
diff --git a/tools/handler.cpp b/tools/handler.cpp
index 147a457..65596f5 100644
--- a/tools/handler.cpp
+++ b/tools/handler.cpp
@@ -16,13 +16,13 @@
#include "handler.hpp"
+#include "flags.hpp"
#include "helper.hpp"
#include "status.hpp"
#include "tool_errors.hpp"
#include "util.hpp"
#include <algorithm>
-#include <blobs-ipmid/blobs.hpp>
#include <cstdint>
#include <cstring>
#include <ipmiblob/blob_errors.hpp>
@@ -85,7 +85,8 @@ void UpdateHandler::sendFile(const std::string& target, const std::string& path)
{
session = blob->openBlob(
target, static_cast<std::uint16_t>(supported) |
- static_cast<std::uint16_t>(blobs::OpenFlags::write));
+ static_cast<std::uint16_t>(
+ ipmi_flash::FirmwareFlags::UpdateFlags::openWrite));
}
catch (const ipmiblob::BlobException& b)
{
@@ -113,7 +114,8 @@ bool UpdateHandler::verifyFile(const std::string& target)
try
{
session = blob->openBlob(
- target, static_cast<std::uint16_t>(blobs::OpenFlags::write));
+ target, static_cast<std::uint16_t>(
+ ipmi_flash::FirmwareFlags::UpdateFlags::openWrite));
}
catch (const ipmiblob::BlobException& b)
{
@@ -162,9 +164,10 @@ void UpdateHandler::cleanArtifacts()
try
{
std::fprintf(stderr, "Opening the cleanup blob\n");
- session =
- blob->openBlob(ipmi_flash::cleanupBlobId,
- static_cast<std::uint16_t>(blobs::OpenFlags::write));
+ session = blob->openBlob(
+ ipmi_flash::cleanupBlobId,
+ static_cast<std::uint16_t>(
+ ipmi_flash::FirmwareFlags::UpdateFlags::openWrite));
}
catch (...)
{
diff --git a/tools/interface.hpp b/tools/interface.hpp
index ae341ec..2c993bf 100644
--- a/tools/interface.hpp
+++ b/tools/interface.hpp
@@ -1,6 +1,6 @@
#pragma once
-#include "firmware_handler.hpp"
+#include "flags.hpp"
#include <cstdint>
#include <string>
@@ -30,8 +30,7 @@ class DataInterface
*
* @return the enum value corresponding to the supported type.
*/
- virtual ipmi_flash::FirmwareBlobHandler::UpdateFlags
- supportedType() const = 0;
+ virtual ipmi_flash::FirmwareFlags::UpdateFlags supportedType() const = 0;
};
} // namespace host_tool
diff --git a/tools/lpc.cpp b/tools/lpc.cpp
index 9359b92..7dbfaf3 100644
--- a/tools/lpc.cpp
+++ b/tools/lpc.cpp
@@ -16,9 +16,14 @@
#include "lpc.hpp"
+#include "data.hpp"
+
#include <cerrno>
+#include <cstdint>
#include <cstring>
#include <ipmiblob/blob_errors.hpp>
+#include <memory>
+#include <string>
namespace host_tool
{
diff --git a/tools/lpc.hpp b/tools/lpc.hpp
index 32e1d8c..2c3a723 100644
--- a/tools/lpc.hpp
+++ b/tools/lpc.hpp
@@ -28,9 +28,9 @@ class LpcDataHandler : public DataInterface
io(io), address(address), length(length), sys(sys){};
bool sendContents(const std::string& input, std::uint16_t session) override;
- ipmi_flash::FirmwareBlobHandler::UpdateFlags supportedType() const override
+ ipmi_flash::FirmwareFlags::UpdateFlags supportedType() const override
{
- return ipmi_flash::FirmwareBlobHandler::UpdateFlags::lpc;
+ return ipmi_flash::FirmwareFlags::UpdateFlags::lpc;
}
private:
diff --git a/tools/p2a.cpp b/tools/p2a.cpp
index 9e246ae..66fc62e 100644
--- a/tools/p2a.cpp
+++ b/tools/p2a.cpp
@@ -16,12 +16,15 @@
#include "p2a.hpp"
-#include "firmware_handler.hpp"
+#include "data.hpp"
+#include "flags.hpp"
#include "pci.hpp"
-#include "pci_handler.hpp"
+#include <cstdint>
#include <cstring>
#include <ipmiblob/blob_errors.hpp>
+#include <memory>
+#include <string>
namespace host_tool
{
diff --git a/tools/p2a.hpp b/tools/p2a.hpp
index 920422f..c84f12d 100644
--- a/tools/p2a.hpp
+++ b/tools/p2a.hpp
@@ -30,9 +30,9 @@ class P2aDataHandler : public DataInterface
}
bool sendContents(const std::string& input, std::uint16_t session) override;
- ipmi_flash::FirmwareBlobHandler::UpdateFlags supportedType() const override
+ ipmi_flash::FirmwareFlags::UpdateFlags supportedType() const override
{
- return ipmi_flash::FirmwareBlobHandler::UpdateFlags::p2a;
+ return ipmi_flash::FirmwareFlags::UpdateFlags::p2a;
}
private:
diff --git a/tools/test/Makefile.am b/tools/test/Makefile.am
index a0e2912..c05654b 100644
--- a/tools/test/Makefile.am
+++ b/tools/test/Makefile.am
@@ -3,7 +3,6 @@
AM_CPPFLAGS = \
-I$(top_srcdir)/ \
-I$(top_srcdir)/tools/ \
- -I$(top_srcdir)/bmc \
$(GTEST_CFLAGS) \
$(GMOCK_CFLAGS) \
$(CODE_COVERAGE_CPPFLAGS)
diff --git a/tools/test/data_interface_mock.hpp b/tools/test/data_interface_mock.hpp
index 3189e5b..0ee799b 100644
--- a/tools/test/data_interface_mock.hpp
+++ b/tools/test/data_interface_mock.hpp
@@ -14,8 +14,7 @@ class DataInterfaceMock : public DataInterface
virtual ~DataInterfaceMock() = default;
MOCK_METHOD2(sendContents, bool(const std::string&, std::uint16_t));
- MOCK_CONST_METHOD0(supportedType,
- ipmi_flash::FirmwareBlobHandler::UpdateFlags());
+ MOCK_CONST_METHOD0(supportedType, ipmi_flash::FirmwareFlags::UpdateFlags());
};
} // namespace host_tool
diff --git a/tools/test/tools_updater_unittest.cpp b/tools/test/tools_updater_unittest.cpp
index 85f86bc..0c9e6b5 100644
--- a/tools/test/tools_updater_unittest.cpp
+++ b/tools/test/tools_updater_unittest.cpp
@@ -1,11 +1,11 @@
#include "data_interface_mock.hpp"
+#include "flags.hpp"
#include "status.hpp"
#include "tool_errors.hpp"
#include "updater.hpp"
#include "updater_mock.hpp"
#include "util.hpp"
-#include <blobs-ipmid/blobs.hpp>
#include <ipmiblob/test/blob_interface_mock.hpp>
#include <string>
@@ -32,8 +32,8 @@ class UpdateHandlerTest : public ::testing::Test
TEST_F(UpdateHandlerTest, CheckAvailableSuccess)
{
ipmiblob::StatResponse statObj = {};
- statObj.blob_state = ipmi_flash::FirmwareBlobHandler::UpdateFlags::ipmi |
- ipmi_flash::FirmwareBlobHandler::UpdateFlags::lpc;
+ statObj.blob_state = ipmi_flash::FirmwareFlags::UpdateFlags::ipmi |
+ ipmi_flash::FirmwareFlags::UpdateFlags::lpc;
EXPECT_CALL(blobMock, getBlobList())
.WillOnce(
@@ -43,7 +43,7 @@ TEST_F(UpdateHandlerTest, CheckAvailableSuccess)
.WillOnce(Return(statObj));
EXPECT_CALL(handlerMock, supportedType())
- .WillOnce(Return(ipmi_flash::FirmwareBlobHandler::UpdateFlags::lpc));
+ .WillOnce(Return(ipmi_flash::FirmwareFlags::UpdateFlags::lpc));
EXPECT_TRUE(updater.checkAvailable(ipmi_flash::staticLayoutBlobId));
}
@@ -55,11 +55,12 @@ TEST_F(UpdateHandlerTest, SendFileSuccess)
std::uint16_t supported =
static_cast<std::uint16_t>(
- ipmi_flash::FirmwareBlobHandler::UpdateFlags::lpc) |
- static_cast<std::uint16_t>(blobs::OpenFlags::write);
+ ipmi_flash::FirmwareFlags::UpdateFlags::lpc) |
+ static_cast<std::uint16_t>(
+ ipmi_flash::FirmwareFlags::UpdateFlags::openWrite);
EXPECT_CALL(handlerMock, supportedType())
- .WillOnce(Return(ipmi_flash::FirmwareBlobHandler::UpdateFlags::lpc));
+ .WillOnce(Return(ipmi_flash::FirmwareFlags::UpdateFlags::lpc));
EXPECT_CALL(blobMock, openBlob(ipmi_flash::staticLayoutBlobId, supported))
.WillOnce(Return(session));
diff --git a/tools/updater.cpp b/tools/updater.cpp
index 438fc4a..4d150db 100644
--- a/tools/updater.cpp
+++ b/tools/updater.cpp
@@ -16,14 +16,13 @@
#include "updater.hpp"
-#include "firmware_handler.hpp"
+#include "flags.hpp"
#include "handler.hpp"
#include "status.hpp"
#include "tool_errors.hpp"
#include "util.hpp"
#include <algorithm>
-#include <blobs-ipmid/blobs.hpp>
#include <cstring>
#include <ipmiblob/blob_errors.hpp>
#include <memory>
OpenPOWER on IntegriCloud