Commit ecd5a9bc authored by Marcin Siodelski's avatar Marcin Siodelski
Browse files

[3035] Added functions to construct DHCID object from raw buffer.

parent fcedc148
......@@ -34,6 +34,10 @@ D2Dhcid::D2Dhcid(const std::string& data) {
fromStr(data);
}
D2Dhcid::D2Dhcid(const std::vector<uint8_t>& data)
: bytes_(data) {
}
D2Dhcid::D2Dhcid(const isc::dhcp::DUID& duid,
const std::vector<uint8_t>& wire_fqdn) {
fromDUID(duid, wire_fqdn);
......@@ -55,6 +59,11 @@ D2Dhcid::toStr() const {
return (isc::util::encode::encodeHex(bytes_));
}
void
D2Dhcid::fromBytes(const std::vector<uint8_t>& data) {
bytes_ = data;
}
void
D2Dhcid::fromDUID(const isc::dhcp::DUID& duid,
const std::vector<uint8_t>& wire_fqdn) {
......
......@@ -78,6 +78,12 @@ public:
/// or there is an odd number of digits.
D2Dhcid(const std::string& data);
/// @brief Constructor, creates new instance of the @c D2Dhcid using a
/// vector holding raw DHCID.
///
/// @param data An vector holding DHCID in the raw format.
D2Dhcid(const std::vector<uint8_t>& data);
/// @brief Constructor, creates an instance of the @c D2Dhcid from the
/// @c isc::dhcp::DUID.
///
......@@ -101,6 +107,11 @@ public:
/// or there is an odd number of digits.
void fromStr(const std::string& data);
/// @brief Sets the DHCID value represented by raw data.
///
/// @param data Holds the raw bytes representing DHCID.
void fromBytes(const std::vector<uint8_t>& data);
/// @brief Sets the DHCID value based on the DUID and FQDN.
///
/// This function requires that the FQDN conforms to the section 3.5
......
......@@ -387,6 +387,32 @@ TEST(NameChangeRequestTest, dhcidFromMaxDUID) {
EXPECT_EQ(dhcid_ref, dhcid.toStr());
}
// Test that DHCID is correctly created from the buffer holding DHCID data
// in raw format.
TEST(NameChangeRequestTest, dhcidFromBytes) {
// Create a buffer holding raw DHCID data.
std::vector<uint8_t> dhcid_data;
for (int i = 0; i < 64; ++i) {
dhcid_data.push_back(i);
}
// Construct new object and initialize it with the DHCID data.
D2Dhcid dhcid(dhcid_data);
// Make sure that the DHCID is valid.
EXPECT_TRUE(std::equal(dhcid.getBytes().begin(), dhcid.getBytes().end(),
dhcid_data.begin()));
// Modify the buffer and reinitialize DHCID with the new buffer.
for (int i = 64; i < 128; ++i) {
dhcid_data.push_back(i);
}
ASSERT_NO_THROW(dhcid.fromBytes(dhcid_data));
// Make sure that the DHCID is still valid.
EXPECT_TRUE(std::equal(dhcid.getBytes().begin(), dhcid.getBytes().end(),
dhcid_data.begin()));
}
/// @brief Verifies the fundamentals of converting from and to JSON.
/// It verifies that:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment