Commit 260842f5 authored by Francis Dupont's avatar Francis Dupont
Browse files

[4057] Addressed review comments

parent 64338c35
......@@ -292,16 +292,24 @@ Dhcpv4Srv::selectSubnet(const Pkt4Ptr& query) const {
selector.client_classes_ = query->classes_;
selector.iface_name_ = query->getIface();
// If the link-selection sub-option is present, extract its value.
// "The link-selection sub-option is used by any DHCP relay agent
// that desires to specify a subnet/link for a DHCP client request
// that it is relaying but needs the subnet/link specification to
// be different from the IP address the DHCP server should use
// when communicating with the relay agent." (RFC 3257)
OptionPtr rai = query->getOption(DHO_DHCP_AGENT_OPTIONS);
if (rai) {
OptionCustomPtr oc = boost::dynamic_pointer_cast<OptionCustom>(rai);
if (oc) {
OptionPtr ols = oc->getOption(RAI_OPTION_LINK_SELECTION);
if (ols) {
OptionBuffer lsb = ols->getData();
if (lsb.size() == sizeof(uint32_t)) {
OptionCustomPtr rai_custom =
boost::dynamic_pointer_cast<OptionCustom>(rai);
if (rai_custom) {
OptionPtr link_select =
rai_custom->getOption(RAI_OPTION_LINK_SELECTION);
if (link_select) {
OptionBuffer link_select_buf = link_select->getData();
if (link_select_buf.size() == sizeof(uint32_t)) {
selector.option_select_ =
IOAddress::fromBytes(AF_INET, &lsb[0]);
IOAddress::fromBytes(AF_INET, &link_select_buf[0]);
}
}
}
......
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