Struct smoltcp::wire::DhcpPacket[][src]

pub struct DhcpPacket<T: AsRef<[u8]>> { /* fields omitted */ }

A read/write wrapper around a Dynamic Host Configuration Protocol packet buffer.

Implementations

impl<T: AsRef<[u8]>> Packet<T>[src]

pub fn new_unchecked(buffer: T) -> Packet<T>[src]

Imbue a raw octet buffer with DHCP packet structure.

pub fn new_checked(buffer: T) -> Result<Packet<T>>[src]

Shorthand for a combination of new_unchecked and check_len.

pub fn check_len(&self) -> Result<()>[src]

Ensure that no accessor method will panic if called. Returns Err(Error::Truncated) if the buffer is too short.

pub fn into_inner(self) -> T[src]

Consume the packet, returning the underlying buffer.

pub fn opcode(&self) -> OpCode[src]

Returns the operation code of this packet.

pub fn hardware_type(&self) -> Hardware[src]

Returns the hardware protocol type (e.g. ethernet).

pub fn hardware_len(&self) -> u8[src]

Returns the length of a hardware address in bytes (e.g. 6 for ethernet).

pub fn transaction_id(&self) -> u32[src]

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.

pub fn client_hardware_address(&self) -> EthernetAddress[src]

Returns the hardware address of the client (called chaddr in the specification).

Only ethernet is supported by smoltcp, so this functions returns an EthernetAddress.

pub fn hops(&self) -> u8[src]

Returns the value of the hops field.

The hops field is set to zero by clients and optionally used by relay agents.

pub fn secs(&self) -> u16[src]

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.

pub fn magic_number(&self) -> u32[src]

Returns the value of the magic cookie field in the DHCP options.

This field should be always be 0x63825363.

pub fn client_ip(&self) -> Ipv4Address[src]

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”.

pub fn your_ip(&self) -> Ipv4Address[src]

Returns the value of the yiaddr field, zero if not set.

pub fn server_ip(&self) -> Ipv4Address[src]

Returns the value of the siaddr field, zero if not set.

pub fn relay_agent_ip(&self) -> Ipv4Address[src]

Returns the value of the giaddr field, zero if not set.

pub fn broadcast_flag(&self) -> bool[src]

Returns true if the broadcast flag is set.

impl<'a, T: AsRef<[u8]> + ?Sized> Packet<&'a T>[src]

pub fn options(&self) -> Result<&'a [u8]>[src]

Return a pointer to the options.

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>[src]

pub fn set_sname_and_boot_file_to_zero(&mut self)[src]

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!

pub fn set_opcode(&mut self, value: OpCode)[src]

Sets the OpCode for the packet.

pub fn set_hardware_type(&mut self, value: Hardware)[src]

Sets the hardware address type (only ethernet is supported).

pub fn set_hardware_len(&mut self, value: u8)[src]

Sets the hardware address length.

Only ethernet is supported, so this field should be set to the value 6.

pub fn set_transaction_id(&mut self, value: u32)[src]

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.

pub fn set_client_hardware_address(&mut self, value: EthernetAddress)[src]

Sets the ethernet address of the client.

Sets the chaddr field.

pub fn set_hops(&mut self, value: u8)[src]

Sets the hops field.

The hops field is set to zero by clients and optionally used by relay agents.

pub fn set_secs(&mut self, value: u16)[src]

Sets the secs field.

The secs field is filled by clients and describes the number of seconds elapsed since client began process.

pub fn set_magic_number(&mut self, value: u32)[src]

Sets the value of the magic cookie field in the DHCP options.

This field should be always be 0x63825363.

pub fn set_client_ip(&mut self, value: Ipv4Address)[src]

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”.

pub fn set_your_ip(&mut self, value: Ipv4Address)[src]

Sets the value of the yiaddr field.

pub fn set_server_ip(&mut self, value: Ipv4Address)[src]

Sets the value of the siaddr field.

pub fn set_relay_agent_ip(&mut self, value: Ipv4Address)[src]

Sets the value of the giaddr field.

pub fn set_broadcast_flag(&mut self, value: bool)[src]

Sets the broadcast flag to the specified value.

impl<'a, T: AsRef<[u8]> + AsMut<[u8]> + ?Sized> Packet<&'a mut T>[src]

pub fn options_mut(&mut self) -> Result<&mut [u8]>[src]

Return a pointer to the options.

Trait Implementations

impl<T: Debug + AsRef<[u8]>> Debug for Packet<T>[src]

impl<T: PartialEq + AsRef<[u8]>> PartialEq<Packet<T>> for Packet<T>[src]

impl<T: AsRef<[u8]>> StructuralPartialEq for Packet<T>[src]

Auto Trait Implementations

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 T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.