packet_formats::igmp

Struct IgmpMessage

Source
pub struct IgmpMessage<B: SplitByteSlice, M: MessageType<B>> { /* private fields */ }
Expand description

An IGMP message.

An IgmpMessage is a struct representing an IGMP message in memory; it holds the 3 IGMP message parts and is characterized by the MessageType trait.

Implementations§

Source§

impl<B: SplitByteSlice> IgmpMessage<B, IgmpMembershipQueryV2>

Source

pub fn is_igmpv1_query(&self) -> bool

Returns true if this is an IGMPv1 query.

Defined in RFC 2236 section 4.1:

The IGMPv1 router will send General Queries with the Max Response Time set to 0…

Source§

impl<B: SplitByteSlice> IgmpMessage<B, IgmpMembershipQueryV3>

Source

pub fn as_v2_query(&self) -> IgmpMessage<&[u8], IgmpMembershipQueryV2>

Reinterprets this IgmpMembershipQueryV3 message as an IgmpMembershipQueryV2 message.

Given this crate parses the version separately, users desiring to operate in IGMPv2 or IGMPv1 modes SHOULD reinterpret V3 queries as the older version.

See RFC 3376 section 7.2.1 and RFC 2236 section 2.5.

Source§

impl<B: SplitByteSlice, M: MessageType<B>> IgmpMessage<B, M>

Source

pub fn builder(&self) -> IgmpPacketBuilder<B, M>

Construct a builder with the same contents as this packet.

Source

pub fn max_response_time(&self) -> M::MaxRespTime

Gets the interpreted Max Response Time for the message

Source

pub fn header(&self) -> &M::FixedHeader

Returns the header.

Source

pub fn body(&self) -> &M::VariableBody

Returns the body.

Source§

impl<B: SplitByteSlice, M: MessageType<B, FixedHeader = Ipv4Addr>> IgmpMessage<B, M>

Source

pub fn group_addr(&self) -> Ipv4Addr

Returns the group address.

Trait Implementations§

Source§

impl<B: Debug + SplitByteSlice, M: Debug + MessageType<B>> Debug for IgmpMessage<B, M>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<B: SplitByteSlice, M: MessageType<B>> ParsablePacket<B, ()> for IgmpMessage<B, M>

Source§

type Error = ParseError

The type of errors returned from parse and parse_mut.
Source§

fn parse_metadata(&self) -> ParseMetadata

Gets metadata about this packet required by [GrowBuffer::undo_parse]. Read more
Source§

fn parse<BV: BufferView<B>>(buffer: BV, _args: ()) -> Result<Self, ParseError>

Parses a packet from a buffer. Read more
§

fn parse_mut<BV>(buffer: BV, args: ParseArgs) -> Result<Self, Self::Error>
where BV: BufferViewMut<B>, B: SplitByteSliceMut,

Parses a packet from a mutable buffer. Read more

Auto Trait Implementations§

§

impl<B, M> Freeze for IgmpMessage<B, M>
where <M as MessageType<B>>::VariableBody: Freeze, B: Freeze,

§

impl<B, M> RefUnwindSafe for IgmpMessage<B, M>

§

impl<B, M> Send for IgmpMessage<B, M>
where <M as MessageType<B>>::VariableBody: Send, B: Send, <M as MessageType<B>>::FixedHeader: Send,

§

impl<B, M> Sync for IgmpMessage<B, M>
where <M as MessageType<B>>::VariableBody: Sync, B: Sync, <M as MessageType<B>>::FixedHeader: Sync,

§

impl<B, M> Unpin for IgmpMessage<B, M>
where <M as MessageType<B>>::VariableBody: Unpin, B: Unpin, <M as MessageType<B>>::FixedHeader: Unpin,

§

impl<B, M> UnwindSafe for IgmpMessage<B, M>

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.