Struct PacketBuilder

Source
pub struct PacketBuilder<'a, State> { /* private fields */ }
Expand description

A zero-copy packet builder.

Using the typestate pattern, a state machine is implemented using the type system. The state machine ensures that the package is built correctly.

The creation of new PacketBuilder instances happens on the stack. These stack allocations are very cheap and most likely optimized away by the compiler. The state types are zero-sized types (ZSTs) and don’t consume any memory.

Implementations§

Source§

impl<'a, State> PacketBuilder<'a, State>

Source

pub fn header_len(&self) -> usize

Returns the length of all encapsulated headers in bytes.

Source

pub fn payload_len(&self) -> usize

Returns the length of the payload in bytes.

Payload is the data after all headers.

Source

pub fn payload(&self) -> &[u8]

Returns a reference to the payload.

Payload is the data after all headers.

Source

pub fn build(self) -> &'a [u8]

Returns a reference to the data slice.

Source§

impl<'a> PacketBuilder<'a, RawState>

Source

pub fn new(bytes: &'a mut [u8]) -> PacketBuilder<'a, RawState>

Source§

impl<'a> PacketBuilder<'a, RawState>

Source

pub fn ethernet( self, src_mac: &[u8; 6], dest_mac: &[u8; 6], ethertype: u16, ) -> Result<PacketBuilder<'a, EthernetHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RawState>

Source

pub fn ethernet_vlan( self, src_mac: &[u8; 6], dest_mac: &[u8; 6], ethertype: u16, tci: u16, ) -> Result<PacketBuilder<'a, EthernetHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RawState>

Source

pub fn ethernet_qinq( self, src_mac: &[u8; 6], dest_mac: &[u8; 6], ethertype: u16, tci1: u16, tci2: u16, ) -> Result<PacketBuilder<'a, EthernetHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, EthernetHeaderState>

Source

pub fn arp( self, hardware_type: u16, protocol_type: u16, hardware_address_length: u8, protocol_address_length: u8, operation: u16, src_mac: &[u8; 6], src_ip: &[u8; 4], dest_mac: &[u8; 6], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, ArpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, EthernetHeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, EthernetHeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4EncapsulatedState>

Source

pub fn tcp( self, src_ip: &[u8; 4], src_port: u16, dest_ip: &[u8; 4], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4EncapsulatedState>

Source

pub fn udp( self, src_addr: &[u8; 4], src_port: u16, dest_addr: &[u8; 4], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4EncapsulatedState>

Source

pub fn icmpv4( self, icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv4HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6EncapsulatedState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6EncapsulatedState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6EncapsulatedState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4HeaderState>

Source

pub fn tcp( self, src_ip: &[u8; 4], src_port: u16, dest_ip: &[u8; 4], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4HeaderState>

Source

pub fn udp( self, src_addr: &[u8; 4], src_port: u16, dest_addr: &[u8; 4], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4HeaderState>

Source

pub fn icmpv4( self, icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv4HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4HeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv4HeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn hop_by_hop( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, HopByHopOptionsState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn destination_options1( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions1State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn routing_header( self, next_header: u8, header_ext_len: u8, routing_type: u8, segments_left: u8, data: &[u8], ) -> Result<PacketBuilder<'a, RoutingHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn fragment_header( self, next_header: u8, fragment_offset: u16, m_flag: bool, identification: u32, ) -> Result<PacketBuilder<'a, FragmentHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn authentication_header( self, next_header: u8, payload_len: u8, spi: u32, seq_num: u32, auth_data: &[u8], ) -> Result<PacketBuilder<'a, AuthHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, Ipv6HeaderState>

Source

pub fn destination_options2( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions2State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn destination_options1( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions1State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn routing_header( self, next_header: u8, header_ext_len: u8, routing_type: u8, segments_left: u8, data: &[u8], ) -> Result<PacketBuilder<'a, RoutingHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn fragment_header( self, next_header: u8, fragment_offset: u16, m_flag: bool, identification: u32, ) -> Result<PacketBuilder<'a, FragmentHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn authentication_header( self, next_header: u8, payload_len: u8, spi: u32, seq_num: u32, auth_data: &[u8], ) -> Result<PacketBuilder<'a, AuthHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, HopByHopOptionsState>

Source

pub fn destination_options2( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions2State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions1State>

Source

pub fn routing_header( self, next_header: u8, header_ext_len: u8, routing_type: u8, segments_left: u8, data: &[u8], ) -> Result<PacketBuilder<'a, RoutingHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn fragment_header( self, next_header: u8, fragment_offset: u16, m_flag: bool, identification: u32, ) -> Result<PacketBuilder<'a, FragmentHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn authentication_header( self, next_header: u8, payload_len: u8, spi: u32, seq_num: u32, auth_data: &[u8], ) -> Result<PacketBuilder<'a, AuthHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, RoutingHeaderState>

Source

pub fn destination_options2( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions2State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn authentication_header( self, next_header: u8, payload_len: u8, spi: u32, seq_num: u32, auth_data: &[u8], ) -> Result<PacketBuilder<'a, AuthHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, FragmentHeaderState>

Source

pub fn destination_options2( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions2State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, AuthHeaderState>

Source

pub fn destination_options2( self, next_header: u8, extension_len: u8, options: &[u8], ) -> Result<PacketBuilder<'a, DestinationOptions2State>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions2State>

Source

pub fn tcp( self, src_ip: &[u8; 16], src_port: u16, dest_ip: &[u8; 16], dest_port: u16, sequence_number: u32, acknowledgment_number: u32, data_offset: u8, reserved: u8, flags: u8, window_size: u16, urgent_pointer: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, TcpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions2State>

Source

pub fn udp( self, src_addr: &[u8; 16], src_port: u16, dest_addr: &[u8; 16], dest_port: u16, length: u16, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, UdpHeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions2State>

Source

pub fn icmpv6( self, src_addr: &[u8; 16], dest_addr: &[u8; 16], icmp_type: u8, icmp_code: u8, payload: Option<&[u8]>, ) -> Result<PacketBuilder<'a, Icmpv6HeaderState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions2State>

Source

pub fn ipv4( self, version: u8, ihl: u8, dscp: u8, ecn: u8, total_length: u16, identification: u16, flags: u8, fragment_offset: u16, ttl: u8, protocol: u8, src_ip: &[u8; 4], dest_ip: &[u8; 4], ) -> Result<PacketBuilder<'a, Ipv4EncapsulatedState>, &'static str>

Source§

impl<'a> PacketBuilder<'a, DestinationOptions2State>

Source

pub fn ipv6( self, version: u8, traffic_class: u8, flow_label: u32, payload_length: u16, next_header: u8, hop_limit: u8, src_addr: &[u8; 16], dest_addr: &[u8; 16], ) -> Result<PacketBuilder<'a, Ipv6EncapsulatedState>, &'static str>

Auto Trait Implementations§

§

impl<'a, State> Freeze for PacketBuilder<'a, State>
where State: Freeze,

§

impl<'a, State> RefUnwindSafe for PacketBuilder<'a, State>
where State: RefUnwindSafe,

§

impl<'a, State> Send for PacketBuilder<'a, State>
where State: Send,

§

impl<'a, State> Sync for PacketBuilder<'a, State>
where State: Sync,

§

impl<'a, State> Unpin for PacketBuilder<'a, State>
where State: Unpin,

§

impl<'a, State> !UnwindSafe for PacketBuilder<'a, State>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.