mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 05:55:28 +00:00
[4058] Added copyDefaultOptions()
This commit is contained in:
@@ -164,6 +164,7 @@ Dhcpv4Exchange::initResponse() {
|
||||
if (resp_type > 0) {
|
||||
resp_.reset(new Pkt4(resp_type, getQuery()->getTransid()));
|
||||
copyDefaultFields();
|
||||
copyDefaultOptionss();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,12 +209,28 @@ Dhcpv4Exchange::copyDefaultFields() {
|
||||
if (dst_hw_addr) {
|
||||
resp_->setRemoteHWAddr(dst_hw_addr);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Dhcpv4Exchange::copyDefaultOptions() {
|
||||
// If this packet is relayed, we want to copy Relay Agent Info option
|
||||
OptionPtr rai = query_->getOption(DHO_DHCP_AGENT_OPTIONS);
|
||||
if (rai) {
|
||||
resp_->addOption(rai);
|
||||
}
|
||||
|
||||
// RFC 3011 states about the Subnet Selection Option
|
||||
|
||||
// "Servers configured to support this option MUST return an
|
||||
// identical copy of the option to any client that sends it,
|
||||
// regardless of whether or not the client requests the option in
|
||||
// a parameter request list. Clients using this option MUST
|
||||
// discard DHCPOFFER or DHCPACK packets that do not contain this
|
||||
// option."
|
||||
OptionPtr subnet_sel = query_->getOption(DHO_SUBNET_SELECTION);
|
||||
if (subnet_sel) {
|
||||
resp_->addOption(subnet_sel);
|
||||
}
|
||||
}
|
||||
|
||||
const std::string Dhcpv4Srv::VENDOR_CLASS_PREFIX("VENDOR_CLASS_");
|
||||
|
@@ -130,6 +130,17 @@ private:
|
||||
/// not NULL.
|
||||
void copyDefaultFields();
|
||||
|
||||
/// @brief Copies default options from client's to server's message
|
||||
///
|
||||
/// Some options are copied from client's message into server's response,
|
||||
/// e.g. Relay Agent Info option, Subnet Selection option etc.
|
||||
///
|
||||
/// @warning This message is called internally by @c initResponse and
|
||||
/// thus it doesn't check if the resp_ value has been initialized. The
|
||||
/// calling method is responsible for making sure that @c resp_ is
|
||||
/// not NULL.
|
||||
void copyDefaultOptions();
|
||||
|
||||
/// @brief Pointer to the allocation engine used by the server.
|
||||
AllocEnginePtr alloc_engine_;
|
||||
/// @brief Pointer to the DHCPv4 message sent by the client.
|
||||
|
Reference in New Issue
Block a user