netutils: fix missing parameter list in DHCPDISCOVER

This commit is contained in:
Mark Poliakov 2025-02-10 09:52:28 +02:00
parent 0a46e6f57c
commit 8db05f304e

View File

@ -53,7 +53,7 @@ enum DhcpOption {
SubnetMask(u32),
Router(Ipv4Addr),
ServerId(Ipv4Addr),
// ParameterRequestList(Vec<u8>),
ParameterRequestList(Vec<u8>),
RequestedAddress(Ipv4Addr),
}
@ -117,7 +117,10 @@ impl DhcpOption {
Self::MessageType(ty) => {
buffer.extend_from_slice(&[53, 0x01, (*ty).into()]);
}
// Self::ParameterRequestList(list) => todo!(),
Self::ParameterRequestList(list) => {
buffer.extend_from_slice(&[55, list.len() as u8]);
buffer.extend_from_slice(list);
}
Self::RequestedAddress(addr) => {
buffer.extend_from_slice(&[50, 0x04]);
buffer.extend_from_slice(&u32::from(*addr).to_be_bytes());
@ -469,7 +472,11 @@ fn attempt_request(
cookie: 0x63825363u32.to_be(),
..DhcpMessageHeader::zeroed()
},
options: vec![DhcpOption::MessageType(DhcpMessageType::Discover)],
options: vec![
DhcpOption::MessageType(DhcpMessageType::Discover),
// Request subnet mask and router
DhcpOption::ParameterRequestList(vec![0x01, 0x03]),
],
};
message.header.chaddr[..6].copy_from_slice(&iface_mac_bytes);
let data = message.to_vec();