class MdnsInterfaceTransceiver
Defined at line 52 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
const inet::IpAddress & address ()
Defined at line 66 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
const std::string & name ()
Defined at line 68 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
uint32_t id ()
Defined at line 70 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
Media media ()
Defined at line 72 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
std::unique_ptr<MdnsInterfaceTransceiver> Create (inet::IpAddressaddress,const std::string &name,uint32_tid,Mediamedia)
Creates the variant of |MdnsInterfaceTransceiver| appropriate for the
address family specified in |address|.
Defined at line 73 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void ~MdnsInterfaceTransceiver ()
Defined at line 95 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
bool Start (InboundMessageCallback callback)
Starts the interface transceiver.
Defined at line 97 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void Stop ()
Stops the interface transceiver.
Defined at line 127 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void SetInterfaceAddresses (const std::vector<IpSubnet> & interface_addresses)
Sets the list of all addresses for the interface.
Defined at line 133 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
bool IsOnLocalSubnet (const inet::IpAddress & address)
Determines if |address| is link local by checking if it is in any of the subnets
listed in |interface_addresses_| or is link-local.
Defined at line 143 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 153 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void MdnsInterfaceTransceiver (const MdnsInterfaceTransceiver & )
Disallow copy, assign and move.
Defined at line 180 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
void MdnsInterfaceTransceiver (MdnsInterfaceTransceiver && )
Defined at line 181 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
MdnsInterfaceTransceiver & operator= (const MdnsInterfaceTransceiver & )
Defined at line 182 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
MdnsInterfaceTransceiver & operator= (MdnsInterfaceTransceiver && )
Defined at line 183 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
void SendAddress (const DnsName & host_full_name)
Sends a message containing only an address resource for this interface.
Defined at line 183 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 190 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void LogTraffic ()
Writes log messages describing lifetime traffic.
Defined at line 199 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
IpVersions IpVersions ()
Protected Methods
int SetOptionDisableMulticastLoop ()
int SetOptionJoinMulticastGroup ()
int SetOptionOutboundInterface ()
int SetOptionUnicastTtl ()
int SetOptionMulticastTtl ()
int SetOptionFamilySpecific ()
int Bind ()
ssize_t SendTo (const void *buffer,size_tsize,const inet::SocketAddress &address)
void set_inbound_message_callback (InboundMessageCallback callback)
Sets the inbound message callback. This is protected to enable testing.
Defined at line 143 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.h
void MdnsInterfaceTransceiver (inet::IpAddressaddress,const std::string &name,uint32_tid,Mediamedia)
Defined at line 84 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
const fbl::unique_fd & socket_fd ()
Defined at line 114 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 359 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void WaitForInbound ()
Starts |fd_waiter_| waiting for inbound messages on the socket. This is virtual and
protected to enable testing.
Defined at line 243 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
void InboundReady (zx_status_t status, uint32_t events)
Handles inbound messages. The signature matches |fsl::FDWaiter::Callback|. This
is protected to enable testing.
Defined at line 248 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc
ssize_t ReceiveMessage (intsockfd,struct msghdr *msg,intflags)
Wrapper for |recvmsg|. This is virtual and protected to enable testing.
Defined at line 344 of file ../../src/connectivity/network/mdns/service/transport/mdns_interface_transceiver.cc