pub struct DhcpPacket<T: AsRef<[u8]>> { /* private fields */ }
Expand description
A read/write wrapper around a Dynamic Host Configuration Protocol packet buffer.
Implementations§
Source§impl<T: AsRef<[u8]>> Packet<T>
impl<T: AsRef<[u8]>> Packet<T>
Sourcepub const fn new_unchecked(buffer: T) -> Packet<T>
pub const fn new_unchecked(buffer: T) -> Packet<T>
Imbue a raw octet buffer with DHCP packet structure.
Sourcepub fn new_checked(buffer: T) -> Result<Packet<T>>
pub fn new_checked(buffer: T) -> Result<Packet<T>>
Shorthand for a combination of new_unchecked and check_len.
Sourcepub fn check_len(&self) -> Result<()>
pub fn check_len(&self) -> Result<()>
Ensure that no accessor method will panic if called.
Returns Err(Error)
if the buffer is too short.
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consume the packet, returning the underlying buffer.
Sourcepub fn hardware_type(&self) -> Hardware
pub fn hardware_type(&self) -> Hardware
Returns the hardware protocol type (e.g. ethernet).
Sourcepub fn hardware_len(&self) -> u8
pub fn hardware_len(&self) -> u8
Returns the length of a hardware address in bytes (e.g. 6 for ethernet).
Sourcepub fn transaction_id(&self) -> u32
pub fn transaction_id(&self) -> u32
Returns the transaction ID.
The transaction ID (called xid
in the specification) is a random number used to
associate messages and responses between client and server. The number is chosen by
the client.
Sourcepub fn client_hardware_address(&self) -> EthernetAddress
pub fn client_hardware_address(&self) -> EthernetAddress
Returns the hardware address of the client (called chaddr
in the specification).
Only ethernet is supported by smoltcp
, so this functions returns
an EthernetAddress
.
Sourcepub fn hops(&self) -> u8
pub fn hops(&self) -> u8
Returns the value of the hops
field.
The hops
field is set to zero by clients and optionally used by relay agents.
Sourcepub fn secs(&self) -> u16
pub fn secs(&self) -> u16
Returns the value of the secs
field.
The secs field is filled by clients and describes the number of seconds elapsed since client began process.
Sourcepub fn magic_number(&self) -> u32
pub fn magic_number(&self) -> u32
Returns the value of the magic cookie
field in the DHCP options.
This field should be always be 0x63825363
.
Sourcepub fn client_ip(&self) -> Ipv4Address
pub fn client_ip(&self) -> Ipv4Address
Returns the Ipv4 address of the client, zero if not set.
This corresponds to the ciaddr
field in the DHCP specification. According to it,
this field is “only filled in if client is in BOUND
, RENEW
or REBINDING
state
and can respond to ARP requests”.
Sourcepub fn your_ip(&self) -> Ipv4Address
pub fn your_ip(&self) -> Ipv4Address
Returns the value of the yiaddr
field, zero if not set.
Sourcepub fn server_ip(&self) -> Ipv4Address
pub fn server_ip(&self) -> Ipv4Address
Returns the value of the siaddr
field, zero if not set.
Sourcepub fn relay_agent_ip(&self) -> Ipv4Address
pub fn relay_agent_ip(&self) -> Ipv4Address
Returns the value of the giaddr
field, zero if not set.
pub fn flags(&self) -> Flags
Sourcepub fn options(&self) -> impl Iterator<Item = DhcpOption<'_>> + '_
pub fn options(&self) -> impl Iterator<Item = DhcpOption<'_>> + '_
Return an iterator over the options.
pub fn get_sname(&self) -> Result<&str>
pub fn get_boot_file(&self) -> Result<&str>
Source§impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>
impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>
Sourcepub fn set_sname_and_boot_file_to_zero(&mut self)
pub fn set_sname_and_boot_file_to_zero(&mut self)
Sets the optional sname
(“server name”) and file
(“boot file name”) fields to zero.
The fields are not commonly used, so we set their value always to zero. This method must be called when creating a packet, otherwise the emitted values for these fields are undefined!
Sourcepub fn set_opcode(&mut self, value: OpCode)
pub fn set_opcode(&mut self, value: OpCode)
Sets the OpCode
for the packet.
Sourcepub fn set_hardware_type(&mut self, value: Hardware)
pub fn set_hardware_type(&mut self, value: Hardware)
Sets the hardware address type (only ethernet is supported).
Sourcepub fn set_hardware_len(&mut self, value: u8)
pub fn set_hardware_len(&mut self, value: u8)
Sets the hardware address length.
Only ethernet is supported, so this field should be set to the value 6
.
Sourcepub fn set_transaction_id(&mut self, value: u32)
pub fn set_transaction_id(&mut self, value: u32)
Sets the transaction ID.
The transaction ID (called xid
in the specification) is a random number used to
associate messages and responses between client and server. The number is chosen by
the client.
Sourcepub fn set_client_hardware_address(&mut self, value: EthernetAddress)
pub fn set_client_hardware_address(&mut self, value: EthernetAddress)
Sets the ethernet address of the client.
Sets the chaddr
field.
Sourcepub fn set_hops(&mut self, value: u8)
pub fn set_hops(&mut self, value: u8)
Sets the hops field.
The hops
field is set to zero by clients and optionally used by relay agents.
Sourcepub fn set_secs(&mut self, value: u16)
pub fn set_secs(&mut self, value: u16)
Sets the secs
field.
The secs field is filled by clients and describes the number of seconds elapsed since client began process.
Sourcepub fn set_magic_number(&mut self, value: u32)
pub fn set_magic_number(&mut self, value: u32)
Sets the value of the magic cookie
field in the DHCP options.
This field should be always be 0x63825363
.
Sourcepub fn set_client_ip(&mut self, value: Ipv4Address)
pub fn set_client_ip(&mut self, value: Ipv4Address)
Sets the Ipv4 address of the client.
This corresponds to the ciaddr
field in the DHCP specification. According to it,
this field is “only filled in if client is in BOUND
, RENEW
or REBINDING
state
and can respond to ARP requests”.
Sourcepub fn set_your_ip(&mut self, value: Ipv4Address)
pub fn set_your_ip(&mut self, value: Ipv4Address)
Sets the value of the yiaddr
field.
Sourcepub fn set_server_ip(&mut self, value: Ipv4Address)
pub fn set_server_ip(&mut self, value: Ipv4Address)
Sets the value of the siaddr
field.
Sourcepub fn set_relay_agent_ip(&mut self, value: Ipv4Address)
pub fn set_relay_agent_ip(&mut self, value: Ipv4Address)
Sets the value of the giaddr
field.
Source§impl<'a, T: AsRef<[u8]> + AsMut<[u8]> + ?Sized> Packet<&'a mut T>
impl<'a, T: AsRef<[u8]> + AsMut<[u8]> + ?Sized> Packet<&'a mut T>
Sourcepub fn options_mut(&mut self) -> DhcpOptionWriter<'_>
pub fn options_mut(&mut self) -> DhcpOptionWriter<'_>
Return a pointer to the options.
Trait Implementations§
impl<T: Copy + AsRef<[u8]>> Copy for Packet<T>
impl<T: Eq + AsRef<[u8]>> Eq for Packet<T>
impl<T: AsRef<[u8]>> StructuralPartialEq for Packet<T>
Auto Trait Implementations§
impl<T> Freeze for Packet<T>where
T: Freeze,
impl<T> RefUnwindSafe for Packet<T>where
T: RefUnwindSafe,
impl<T> Send for Packet<T>where
T: Send,
impl<T> Sync for Packet<T>where
T: Sync,
impl<T> Unpin for Packet<T>where
T: Unpin,
impl<T> UnwindSafe for Packet<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)