ASSERT_EQ(4, values_.top().size());
EXPECT_EQ(0, memcmp(expected_addr, &values_.top()[0], 4));
+ // Check msgtype.
+ clearStack();
+ ASSERT_NO_THROW(t_.reset(new TokenPkt4(TokenPkt4::MSGTYPE)));
+ EXPECT_NO_THROW(t_->evaluate(*pkt4_, values_));
+ ASSERT_EQ(1, values_.size());
+ ASSERT_EQ(4, values_.top().size());
+ string exp_msgtype = encode(DHCPDISCOVER);
+ EXPECT_EQ(0, memcmp(&exp_msgtype[0], &values_.top()[0], 4));
+
+ // Check transaction-id
+ clearStack();
+ ASSERT_NO_THROW(t_.reset(new TokenPkt4(TokenPkt4::TRANSID)));
+ EXPECT_NO_THROW(t_->evaluate(*pkt4_, values_));
+ ASSERT_EQ(1, values_.size());
+ ASSERT_EQ(4, values_.top().size());
+ string exp_transid = encode(12345);
+ EXPECT_EQ(0, memcmp(&exp_transid[0], &values_.top()[0], 4));
+
// Check a DHCPv6 packet throws.
clearStack();
ASSERT_NO_THROW(t_.reset(new TokenPkt4(TokenPkt4::HLEN)));
addString("EVAL_DEBUG_PKT4 Pushing PKT4 field ciaddr with value 0xC0000202");
addString("EVAL_DEBUG_PKT4 Pushing PKT4 field yiaddr with value 0xC0000203");
addString("EVAL_DEBUG_PKT4 Pushing PKT4 field siaddr with value 0xC0000204");
+ addString("EVAL_DEBUG_PKT4 Pushing PKT4 field msgtype with value 0x00000001");
+ addString("EVAL_DEBUG_PKT4 Pushing PKT4 field transid with value 0x00003039");
EXPECT_TRUE(checkFile());
}
YIADDR, ///< yiaddr (IPv4 address)
SIADDR, ///< siaddr (IPv4 address)
HLEN, ///< hlen (hardware address length)
- HTYPE ///< htype (hardware address type)
+ HTYPE, ///< htype (hardware address type)
+ MSGTYPE, ///< message type (not really a field, content of option 53)
+ TRANSID, ///< transaction-id (xid)
};
/// @brief Constructor (does nothing)