DHO_STDASERVER = 76,
DHO_USER_CLASS = 77, /* RFC3004 */
DHO_DIRECTORY_AGENT = 78, /* RFC2610 */
- DHO_SERVICE_SCOPE = 79, /* RFC4039 */
+ DHO_SERVICE_SCOPE = 79, /* RFC2610 */
// DHO_RAPID_COMMIT = 80, /* RFC4702 */
DHO_FQDN = 81, /* RFC4702 */
DHO_DHCP_AGENT_OPTIONS = 82, /* RFC3046 */
DHO_RDNSS_SELECT = 146,
// 147-149 are removed/unassigned
// 150 have multiple definitions
-// DHO_STATUS_CODE = 151,
-// DHO_BASE_TIME = 152,
-// DHO_START_TIME_OF_STATE = 153,
-// DHO_QUERY_START_TIME = 154,
-// DHO_QUERY_END_TIME = 155,
-// DHO_DHCP_STATE = 156,
-// DHO_DATA_SOURCE = 157,
+ DHO_STATUS_CODE = 151, /* RFC6926 */
+ DHO_BASE_TIME = 152, /* RFC6926 */
+ DHO_START_TIME_OF_STATE = 153, /* RFC6926 */
+ DHO_QUERY_START_TIME = 154, /* RFC6926 */
+ DHO_QUERY_END_TIME = 155, /* RFC6926 */
+ DHO_DHCP_STATE = 156, /* RFC6926 */
+ DHO_DATA_SOURCE = 157, /* RFC6926 */
// DHO_V4_PCP_SERVER = 158,
DHO_V4_PORTPARAMS = 159,
// 160 used to be assigned in RFC7710, but was removed in RFC8910
}
}
- return(enable_queue);
+ return (enable_queue);
}
void
virtual data::ElementPtr getInfo() const {
data::ElementPtr info = data::Element::createMap();
info->set("queue-type", data::Element::create(queue_type_));
- return(info);
+ return (info);
}
/// @brief Fetches a JSON string representation of queue operational info
/// if the queue is empty.
virtual PacketTypePtr dequeuePacket() {
eatPackets(QueueEnd::FRONT);
- return(popPacket());
+ return (popPacket());
}
/// @brief Determines if a packet should be discarded.
/// @brief Returns True if the queue is empty.
virtual bool empty() const {
std::lock_guard<std::mutex> lock(*mutex_);
- return(queue_.empty());
+ return (queue_.empty());
}
/// @brief Returns the maximum number of packets allowed in the buffer.
data::ElementPtr info = PacketQueue<PacketTypePtr>::getInfo();
info->set("capacity", data::Element::create(static_cast<int64_t>(getCapacity())));
info->set("size", data::Element::create(static_cast<int64_t>(getSize())));
- return(info);
+ return (info);
}
private:
/// Currently it is a no-op, it always returns NULL.
///
/// @return always NULL
- virtual HWAddrPtr getMACFromRemoteIdRelayOption(){
- return(HWAddrPtr());
+ virtual HWAddrPtr getMACFromRemoteIdRelayOption() {
+ return (HWAddrPtr());
}
/// @brief local HW address (dst if receiving packet, src if sending packet)
RECORD_DECL(V4_RDNSS_SELECT_RECORDS, OPT_UINT8_TYPE, OPT_IPV4_ADDRESS_TYPE,
OPT_IPV4_ADDRESS_TYPE, OPT_FQDN_TYPE);
+// RFC6926 DHCPv4 Bulk Leasequery Status Code option.
+RECORD_DECL(V4_STATUS_CODE_RECORDS, OPT_UINT8_TYPE, OPT_STRING_TYPE);
+
// RFC7618 DHCPv4 Port Parameter option.
//
// PSID offset, PSID-len and PSID
OPT_FQDN_TYPE, true, NO_RECORD_DEF, "" },
{ "rdnss-selection", DHO_RDNSS_SELECT, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE,
true, RECORD_DEF(V4_RDNSS_SELECT_RECORDS), "" },
+ { "status-code", DHO_STATUS_CODE, DHCP4_OPTION_SPACE,
+ OPT_RECORD_TYPE, false, RECORD_DEF(V4_STATUS_CODE_RECORDS), "" },
+ { "base-time", DHO_BASE_TIME, DHCP4_OPTION_SPACE,
+ OPT_UINT32_TYPE, false, NO_RECORD_DEF, "" },
+ { "start-time-of-state", DHO_START_TIME_OF_STATE, DHCP4_OPTION_SPACE,
+ OPT_UINT32_TYPE, false, NO_RECORD_DEF, "" },
+ { "query-start-time", DHO_QUERY_START_TIME, DHCP4_OPTION_SPACE,
+ OPT_UINT32_TYPE, false, NO_RECORD_DEF, "" },
+ { "query-end-time", DHO_QUERY_END_TIME, DHCP4_OPTION_SPACE,
+ OPT_UINT32_TYPE, false, NO_RECORD_DEF, "" },
+ { "dhcp-state", DHO_DHCP_STATE, DHCP4_OPTION_SPACE,
+ OPT_UINT8_TYPE, false, NO_RECORD_DEF, "" },
+ { "data-source", DHO_DATA_SOURCE, DHCP4_OPTION_SPACE,
+ OPT_UINT8_TYPE, false, NO_RECORD_DEF, "" },
{ "v4-portparams", DHO_V4_PORTPARAMS, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE,
false, RECORD_DEF(V4_PORTPARAMS_RECORDS), "" },
{ "option-6rd", DHO_6RD, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE, true,
// s46-portparams
RECORD_DECL(S46_PORTPARAMS, OPT_UINT8_TYPE, OPT_PSID_TYPE);
// status-code
-RECORD_DECL(STATUS_CODE_RECORDS, OPT_UINT16_TYPE, OPT_STRING_TYPE);
+RECORD_DECL(V6_STATUS_CODE_RECORDS, OPT_UINT16_TYPE, OPT_STRING_TYPE);
// vendor-class
RECORD_DECL(VENDOR_CLASS_RECORDS, OPT_UINT32_TYPE, OPT_BINARY_TYPE);
// rdnss-selection
{ "unicast", D6O_UNICAST, DHCP6_OPTION_SPACE, OPT_IPV6_ADDRESS_TYPE,
false, NO_RECORD_DEF, "" },
{ "status-code", D6O_STATUS_CODE, DHCP6_OPTION_SPACE, OPT_RECORD_TYPE,
- false, RECORD_DEF(STATUS_CODE_RECORDS), "" },
+ false, RECORD_DEF(V6_STATUS_CODE_RECORDS), "" },
{ "rapid-commit", D6O_RAPID_COMMIT, DHCP6_OPTION_SPACE, OPT_EMPTY_TYPE,
false, NO_RECORD_DEF, "" },
{ "user-class", D6O_USER_CLASS, DHCP6_OPTION_SPACE, OPT_BINARY_TYPE,
rdnss_buf.end(),
typeid(OptionCustom));
+ // Initialize test buffer for Vendor Class option.
+ const char status_code_data[] = {
+ 0x02, 0x65, 0x72, 0x72, 0x6f, 0x72
+ };
+ std::vector<uint8_t> status_code_buf(status_code_data,
+ status_code_data + sizeof(status_code_data));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_STATUS_CODE, status_code_buf.begin(),
+ status_code_buf.end(),
+ typeid(OptionCustom));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_BASE_TIME, begin, begin + 4,
+ typeid(OptionInt<uint32_t>));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_START_TIME_OF_STATE, begin, begin + 4,
+ typeid(OptionInt<uint32_t>));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_QUERY_START_TIME, begin, begin + 4,
+ typeid(OptionInt<uint32_t>));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_QUERY_END_TIME, begin, begin + 4,
+ typeid(OptionInt<uint32_t>));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_DHCP_STATE, begin, begin + 1,
+ typeid(OptionInt<uint8_t>));
+
+ LibDhcpTest::testStdOptionDefs4(DHO_DATA_SOURCE, begin, begin + 1,
+ typeid(OptionInt<uint8_t>));
+
LibDhcpTest::testStdOptionDefs4(DHO_V4_PORTPARAMS, begin, begin + 4,
typeid(OptionCustom));
0x00, 0x01, 0x02
};
std::vector<uint8_t> vclass_buf(vclass_data,
- vclass_data + sizeof(vclass_data));;
+ vclass_data + sizeof(vclass_data));
// Initialize test buffer for Bootfile Param option.
const char bparam_data[] = {
0x00, 0x01, 0x02
};
std::vector<uint8_t> bparam_buf(bparam_data,
- bparam_data + sizeof(bparam_data));;
+ bparam_data + sizeof(bparam_data));
// The actual test starts here for all supported option codes.
LibDhcpTest::testStdOptionDefs6(D6O_CLIENTID, begin, end,