Struct Ipv4Header
pub struct Ipv4Header {
pub source: Ipv4Addr,
pub destination: Ipv4Addr,
pub protocol: IpProtocol,
pub hop_limit: u8,
pub traffic_class: u8,
pub fragment: IpFragment,
pub dont_fragment: bool,
}net only.Expand description
IPv4 header fields for packet construction. Options are supplied to Self::encode.
Fields§
§source: Ipv4AddrSource address.
destination: Ipv4AddrDestination address.
protocol: IpProtocolPayload protocol.
hop_limit: u8Time to live.
traffic_class: u8DSCP and ECN.
fragment: IpFragmentPacket identification and fragmentation metadata. Encoding requires a sixteen-bit identification and an eight-byte-aligned offset.
dont_fragment: boolDon’t Fragment flag.
Implementations§
§impl Ipv4Header
impl Ipv4Header
pub const fn new(
source: Ipv4Addr,
destination: Ipv4Addr,
protocol: IpProtocol,
) -> Ipv4Header
pub const fn new( source: Ipv4Addr, destination: Ipv4Addr, protocol: IpProtocol, ) -> Ipv4Header
An unfragmented header with hop limit 64, no ECN/DSCP and identification zero.
pub const fn with_identification(self, identification: u16) -> Ipv4Header
pub const fn with_identification(self, identification: u16) -> Ipv4Header
Set the IPv4 identification, whose wire width is sixteen bits.
pub const fn try_with_fragment(
self,
offset: u16,
more: bool,
) -> Result<Ipv4Header, IpPacketError>
pub const fn try_with_fragment( self, offset: u16, more: bool, ) -> Result<Ipv4Header, IpPacketError>
Set a fragment’s byte offset and More Fragments flag. Offsets must be aligned to eight bytes; payload-dependent checks occur on encoding.
pub const fn fragment(&self) -> IpFragment
pub const fn fragment(&self) -> IpFragment
Identification and fragment metadata.
pub fn encode(
&self,
options: &[u8],
payload: &[u8],
output: &mut [u8],
) -> Result<usize, IpPacketError>
pub fn encode( &self, options: &[u8], payload: &[u8], output: &mut [u8], ) -> Result<usize, IpPacketError>
Serialize a complete packet. Options must include zero padding to a four-byte boundary. The output is untouched when any input is invalid.
pub fn encode_header<'b>(
&self,
options: &[u8],
payload_len: usize,
output: &'b mut [u8],
) -> Result<&'b mut [u8], IpPacketError>
pub fn encode_header<'b>( &self, options: &[u8], payload_len: usize, output: &'b mut [u8], ) -> Result<&'b mut [u8], IpPacketError>
Write the header and return the caller-owned payload region to fill. Lengths and options are checked before touching the output.
Trait Implementations§
§impl Clone for Ipv4Header
impl Clone for Ipv4Header
§fn clone(&self) -> Ipv4Header
fn clone(&self) -> Ipv4Header
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Ipv4Header
Auto Trait Implementations§
impl Freeze for Ipv4Header
impl RefUnwindSafe for Ipv4Header
impl Send for Ipv4Header
impl Sync for Ipv4Header
impl Unpin for Ipv4Header
impl UnsafeUnpin for Ipv4Header
impl UnwindSafe for Ipv4Header
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more