Struct etherparse::Ipv4Header

source ·
pub struct Ipv4Header {
    pub differentiated_services_code_point: u8,
    pub explicit_congestion_notification: u8,
    pub payload_len: u16,
    pub identification: u16,
    pub dont_fragment: bool,
    pub more_fragments: bool,
    pub fragments_offset: u16,
    pub time_to_live: u8,
    pub protocol: u8,
    pub header_checksum: u16,
    pub source: [u8; 4],
    pub destination: [u8; 4],
    /* private fields */
}
Expand description

IPv4 header without options.

Fields§

§differentiated_services_code_point: u8§explicit_congestion_notification: u8§payload_len: u16

Length of the payload of the ipv4 packet in bytes (does not contain the options).

This field does not directly exist in an ipv4 header but instead is decoded from & encoded to the total_size field together with the options length (using the ihl). If the total_length field in a ipv4 header is smaller then

§identification: u16§dont_fragment: bool§more_fragments: bool§fragments_offset: u16§time_to_live: u8§protocol: u8§header_checksum: u16§source: [u8; 4]§destination: [u8; 4]

Implementations§

Constructs an Ipv4Header with standard values for non specified values.

Length of the header in 4 bytes (often also called IHL - Internet Header Lenght).

The minimum allowed length of a header is 5 (= 20 bytes) and the maximum length is 15 (= 60 bytes).

Returns a slice to the options part of the header (empty if no options are present).

Length of the header (includes options) in bytes.

Returns the total length of the header + payload in bytes.

Sets the payload length if the value is not too big. Otherwise an error is returned.

Returns the maximum payload size based on the current options size.

Sets the options & header_length based on the provided length. The length of the given slice must be a multiple of 4 and maximum 40 bytes. If the length is not fullfilling these constraints, no data is set and an error is returned.

Read an Ipv4Header from a slice and return the header & unused parts of the slice.

Reads an IPv4 header from the current position.

Reads an IPv4 header assuming the version & ihl field have already been read.

Checks if the values in this header are valid values for an ipv4 header.

Specifically it will be checked, that:

  • payload_len + options_len is not too big to be encoded in the total_size header field
  • differentiated_services_code_point is not greater then 0x3f
  • explicit_congestion_notification is not greater then 0x3
  • fragments_offset is not greater then 0x1fff

Writes a given IPv4 header to the current position (this method automatically calculates the header length and checksum).

Writes a given IPv4 header to the current position (this method just writes the specified checksum and does note compute it).

Calculate header checksum of the current ipv4 header.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Size of the header itself (without options) in bytes.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.