hickory_proto::multicast

Enum MdnsQueryType

Source
pub enum MdnsQueryType {
    OneShot,
    Continuous,
    OneShotJoin,
    Passive,
}
Available on crate feature mdns only.
Expand description

See rfc6762 details on these different types.

Variants§

§

OneShot

The querier using this socket will only perform standard DNS queries over multicast. (clients only)

Effectively treats mDNS as essentially no different than any other DNS query; one request followed by one response. Only one UDP socket will be created.

§

Continuous

The querier is fully compliant with rfc6762. (servers, clients)

mDNS capable clients will sent messages with many queries, and they will expect many responses. Two UDP sockets will be created, one for receiving multicast traffic, the other used for sending queries and direct responses. This requires port 5353 to be available on the system (many modern OSes already have mDNSResponders running taking this port).

§

OneShotJoin

The querier operates under the OneShot semantics, but also joins the multicast group. (non-compliant servers, clients)

This is not defined in the mDNS RFC, but allows for a multicast client to join the group, receiving all multicast network traffic. This is useful where listening for all mDNS traffic is of interest, but because another mDNS process may have already taken the known port, 5353. Query responses will come from and to the standard UDP socket with a random port, multicast traffic will come from the multicast socket. This will create two sockets.

§

Passive

The querier operates under the OneShot semantics, but also joins the multicast group. (servers)

Not defined in the RFC, allows for a passive listener to receive all mDNS traffic.

Implementations§

Source§

impl MdnsQueryType

Source

pub fn sender(self) -> bool

This will be sending packets, i.e. a standard UDP socket will be created

Source

pub fn bind_on_5353(self) -> bool

Returns true if this process can bind to *:5353

Source

pub fn join_multicast(self) -> bool

Returns true if this mDNS client should join, listen, on the multicast address

Trait Implementations§

Source§

impl Clone for MdnsQueryType

Source§

fn clone(&self) -> MdnsQueryType

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MdnsQueryType

Source§

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

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

impl PartialEq for MdnsQueryType

Source§

fn eq(&self, other: &MdnsQueryType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for MdnsQueryType

Source§

impl Eq for MdnsQueryType

Source§

impl StructuralPartialEq for MdnsQueryType

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T