mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-02 15:05:16 +00:00
[3977] Added variants of PktX::makeLabel excluding transaction id.
This commit is contained in:
@@ -357,14 +357,25 @@ Pkt4::getLabel() const {
|
|||||||
std::string
|
std::string
|
||||||
Pkt4::makeLabel(const HWAddrPtr& hwaddr, const ClientIdPtr& client_id,
|
Pkt4::makeLabel(const HWAddrPtr& hwaddr, const ClientIdPtr& client_id,
|
||||||
const uint32_t transid) {
|
const uint32_t transid) {
|
||||||
|
// Create label with HW address and client identifier.
|
||||||
stringstream label;
|
stringstream label;
|
||||||
label << "[" << (hwaddr ? hwaddr->toText() : "no hwaddr info")
|
label << makeLabel(hwaddr, client_id);
|
||||||
<< "], cid=[" << (client_id ? client_id->toText() : "no info")
|
|
||||||
<< "], tid=0x" << hex << transid << dec;
|
// Append transaction id.
|
||||||
|
label << ", tid=0x" << hex << transid << dec;
|
||||||
|
|
||||||
return label.str();
|
return label.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
Pkt4::makeLabel(const HWAddrPtr& hwaddr, const ClientIdPtr& client_id) {
|
||||||
|
stringstream label;
|
||||||
|
label << "[" << (hwaddr ? hwaddr->toText() : "no hwaddr info")
|
||||||
|
<< "], cid=[" << (client_id ? client_id->toText() : "no info")
|
||||||
|
<< "]";
|
||||||
|
|
||||||
|
return label.str();
|
||||||
|
}
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
Pkt4::toText() const {
|
Pkt4::toText() const {
|
||||||
|
@@ -119,6 +119,15 @@ public:
|
|||||||
const ClientIdPtr& client_id,
|
const ClientIdPtr& client_id,
|
||||||
const uint32_t transid);
|
const uint32_t transid);
|
||||||
|
|
||||||
|
/// @brief Returns text representation of the given packet identifers.
|
||||||
|
///
|
||||||
|
/// This variant of the method does not include transaction id.
|
||||||
|
///
|
||||||
|
/// @param hwaddr hardware address to include in the string, it may be
|
||||||
|
/// NULL.
|
||||||
|
/// @param client_id client id to include in the string, it may be NULL.
|
||||||
|
static std::string makeLabel(const HWAddrPtr& hwaddr, const ClientIdPtr& client_id);
|
||||||
|
|
||||||
/// @brief Returns text representation of the packet.
|
/// @brief Returns text representation of the packet.
|
||||||
///
|
///
|
||||||
/// This function is useful mainly for debugging.
|
/// This function is useful mainly for debugging.
|
||||||
|
@@ -498,22 +498,31 @@ Pkt6::getMACFromDUID() {
|
|||||||
std::string
|
std::string
|
||||||
Pkt6::makeLabel(const DuidPtr duid, const uint32_t transid,
|
Pkt6::makeLabel(const DuidPtr duid, const uint32_t transid,
|
||||||
const HWAddrPtr& hwaddr) {
|
const HWAddrPtr& hwaddr) {
|
||||||
|
// Create label with DUID and HW address.
|
||||||
|
std::stringstream label;
|
||||||
|
label << makeLabel(duid, hwaddr);
|
||||||
|
|
||||||
|
// Append transaction id.
|
||||||
|
label << ", tid=0x" << std::hex << transid << std::dec;
|
||||||
|
|
||||||
|
return (label.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
Pkt6::makeLabel(const DuidPtr duid, const HWAddrPtr& hwaddr) {
|
||||||
std::stringstream label;
|
std::stringstream label;
|
||||||
// DUID should be present at all times, so explicitly inform when
|
// DUID should be present at all times, so explicitly inform when
|
||||||
// it is no present (no info).
|
// it is no present (no info).
|
||||||
label << "duid=[" << (duid ? duid->toText() : "no info")
|
label << "duid=[" << (duid ? duid->toText() : "no info")
|
||||||
<< "],";
|
<< "]";
|
||||||
|
|
||||||
// HW address is typically not carried in the DHCPv6 mmessages
|
// HW address is typically not carried in the DHCPv6 mmessages
|
||||||
// and can be extracted using various, but not fully reliable,
|
// and can be extracted using various, but not fully reliable,
|
||||||
// techniques. If it is not present, don't print anything.
|
// techniques. If it is not present, don't print anything.
|
||||||
if (hwaddr) {
|
if (hwaddr) {
|
||||||
label << " [" << hwaddr->toText() << "],";
|
label << ", [" << hwaddr->toText() << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transaction id is always there.
|
|
||||||
label << " tid=0x" << std::hex << transid << std::dec;
|
|
||||||
|
|
||||||
return (label.str());
|
return (label.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -173,6 +173,17 @@ public:
|
|||||||
static std::string makeLabel(const DuidPtr duid, const uint32_t transid,
|
static std::string makeLabel(const DuidPtr duid, const uint32_t transid,
|
||||||
const HWAddrPtr& hwaddr);
|
const HWAddrPtr& hwaddr);
|
||||||
|
|
||||||
|
/// @brief Returns text representation of the given packet identifiers.
|
||||||
|
///
|
||||||
|
/// This variant of the method does not include transaction id.
|
||||||
|
///
|
||||||
|
/// @param duid Pointer to the client identifier or NULL.
|
||||||
|
/// @param transid Numeric transaction id to include in the string.
|
||||||
|
/// @param hwaddr Hardware address to include in the string or NULL.
|
||||||
|
///
|
||||||
|
/// @return String with text representation of the packet identifiers.
|
||||||
|
static std::string makeLabel(const DuidPtr duid, const HWAddrPtr& hwaddr);
|
||||||
|
|
||||||
/// @brief Returns text representation of the primary packet identifiers
|
/// @brief Returns text representation of the primary packet identifiers
|
||||||
///
|
///
|
||||||
/// This method is intended to be used to provide a consistent way to
|
/// This method is intended to be used to provide a consistent way to
|
||||||
|
@@ -1024,6 +1024,23 @@ TEST_F(Pkt4Test, getLabel) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tests that the variant of makeLabel which doesn't include transaction
|
||||||
|
// id produces expected output.
|
||||||
|
TEST_F(Pkt4Test, makeLabelWithoutTransactionId) {
|
||||||
|
EXPECT_EQ("[no hwaddr info], cid=[no info]",
|
||||||
|
Pkt4::makeLabel(HWAddrPtr(), ClientIdPtr()));
|
||||||
|
|
||||||
|
// Test non-null hardware address.
|
||||||
|
HWAddrPtr hwaddr(new HWAddr(HWAddr::fromText("01:02:03:04:05:06", 123)));
|
||||||
|
EXPECT_EQ("[hwtype=123 01:02:03:04:05:06], cid=[no info]",
|
||||||
|
Pkt4::makeLabel(hwaddr, ClientIdPtr()));
|
||||||
|
|
||||||
|
// Test non-null client identifier.
|
||||||
|
ClientIdPtr cid = ClientId::fromText("01:02:03:04");
|
||||||
|
EXPECT_EQ("[hwtype=123 01:02:03:04:05:06], cid=[01:02:03:04]",
|
||||||
|
Pkt4::makeLabel(hwaddr, cid));
|
||||||
|
}
|
||||||
|
|
||||||
// Tests that the correct DHCPv4 message name is returned for various
|
// Tests that the correct DHCPv4 message name is returned for various
|
||||||
// message types.
|
// message types.
|
||||||
TEST_F(Pkt4Test, getName) {
|
TEST_F(Pkt4Test, getName) {
|
||||||
|
@@ -1474,6 +1474,30 @@ TEST_F(Pkt6Test, makeLabel) {
|
|||||||
Pkt6::makeLabel(DuidPtr(), 0x0, HWAddrPtr()));
|
Pkt6::makeLabel(DuidPtr(), 0x0, HWAddrPtr()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tests that the variant of makeLabel which doesn't include transaction
|
||||||
|
// id produces expected output.
|
||||||
|
TEST_F(Pkt6Test, makeLabelWithoutTransactionId) {
|
||||||
|
DuidPtr duid(new DUID(DUID::fromText("0102020202030303030303")));
|
||||||
|
HWAddrPtr hwaddr(new HWAddr(HWAddr::fromText("01:02:03:04:05:06",
|
||||||
|
HTYPE_ETHER)));
|
||||||
|
|
||||||
|
// Specify DUID and no HW Address.
|
||||||
|
EXPECT_EQ("duid=[01:02:02:02:02:03:03:03:03:03:03]",
|
||||||
|
Pkt6::makeLabel(duid, HWAddrPtr()));
|
||||||
|
|
||||||
|
// Specify HW Address and no DUID.
|
||||||
|
EXPECT_EQ("duid=[no info], [hwtype=1 01:02:03:04:05:06]",
|
||||||
|
Pkt6::makeLabel(DuidPtr(), hwaddr));
|
||||||
|
|
||||||
|
// Specify both DUID and HW Address.
|
||||||
|
EXPECT_EQ("duid=[01:02:02:02:02:03:03:03:03:03:03], "
|
||||||
|
"[hwtype=1 01:02:03:04:05:06]",
|
||||||
|
Pkt6::makeLabel(duid, hwaddr));
|
||||||
|
|
||||||
|
// Specify neither DUID nor HW Address.
|
||||||
|
EXPECT_EQ("duid=[no info]", Pkt6::makeLabel(DuidPtr(), HWAddrPtr()));
|
||||||
|
}
|
||||||
|
|
||||||
// This test verifies that it is possible to obtain the packet
|
// This test verifies that it is possible to obtain the packet
|
||||||
// identifiers in the textual format from the packet instance.
|
// identifiers in the textual format from the packet instance.
|
||||||
TEST_F(Pkt6Test, getLabel) {
|
TEST_F(Pkt6Test, getLabel) {
|
||||||
|
Reference in New Issue
Block a user