class MdnsInterfaceTransceiver

Defined at line 28 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

Handles mDNS communication for a single NIC. This class is abstract and has

two concrete implementations providing family-specific behavior:

|MdnsInterfaceTransceiverV4| and |MdnsInterfaceTransceiverV6|.

Protected Members

static const int kTimeToLive_
static const size_t kMaxPacketSize

Public Methods

std::unique_ptr<MdnsInterfaceTransceiver> Create (inet::IpAddress address, const std::string & name, uint32_t id, Media media)

Creates the variant of |MdnsInterfaceTransceiver| appropriate for the

address family specified in |address|.

Defined at line 34 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

const inet::IpAddress & address ()

Defined at line 42 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

const std::string & name ()

Defined at line 44 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

void ~MdnsInterfaceTransceiver ()

Defined at line 56 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

bool Start (InboundMessageCallback callback)

Starts the interface transceiver.

Defined at line 58 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void Stop ()

Stops the interface transceiver.

Defined at line 87 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void SetInterfaceAddresses (const std::vector<inet::IpAddress> & interface_addresses)

Sets the list of all addresses for the interface.

Defined at line 93 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void SendMessage (const DnsMessage & message, const inet::SocketAddress & address)

Sends a message to the specified address. A V6 interface will send to

|MdnsAddresses::V6Multicast| if |address| is |MdnsAddresses::V4Multicast|. If any resource

section of the message contains one or more address placeholders, those placeholders will be

replaced by address resource records for all this interface's addresses.

Defined at line 103 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void SendAddress (const DnsName & host_full_name)

Sends a message containing only an address resource for this interface.

Defined at line 133 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void SendAddressGoodbye (const DnsName & host_full_name)

Sends a message containing only an address resource for this interface with

zero ttl, indicating that the address is no longer valid.

Defined at line 140 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

void LogTraffic ()

Writes log messages describing lifetime traffic.

Defined at line 149 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

IpVersions IpVersions ()
uint32_t id ()

Defined at line 46 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

Media media ()

Defined at line 48 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

void MdnsInterfaceTransceiver (const MdnsInterfaceTransceiver & )

Disallow copy, assign and move.

Defined at line 139 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

void MdnsInterfaceTransceiver (MdnsInterfaceTransceiver && )

Defined at line 140 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

MdnsInterfaceTransceiver & operator= (const MdnsInterfaceTransceiver & )

Defined at line 141 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

MdnsInterfaceTransceiver & operator= (MdnsInterfaceTransceiver && )

Defined at line 142 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

Protected Methods

void MdnsInterfaceTransceiver (inet::IpAddress address, const std::string & name, uint32_t id, Media media)

Defined at line 45 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc

int SetOptionDisableMulticastLoop ()
int SetOptionJoinMulticastGroup ()
int SetOptionOutboundInterface ()
int SetOptionUnicastTtl ()
int SetOptionMulticastTtl ()
int SetOptionFamilySpecific ()
int Bind ()
ssize_t SendTo (const void * buffer, size_t size, const inet::SocketAddress & address)
const fbl::unique_fd & socket_fd ()

Defined at line 86 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h

const std::vector<std::shared_ptr<DnsResource>> & GetInterfaceAddressResources (const DnsName & host_full_name)

Returns address resource (A/AAAA) records with the given name and the

addresses contained in |interface_addresses_|.

This method is protected so it can be accessed by subclasses used in tests.

Defined at line 245 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc