mirror of
https://github.com/espressif/openthread.git
synced 2026-10-12 10:47:43 +00:00
Update mDNS traffic simulation in the Nexus platform to flow through the simulated infrastructure link. This ensures mDNS packets are automatically written to the PCAP file generated by the simulated infrastructure link. Changes: - Wrap mDNS messages in UDP/IPv6 headers and enqueue them on the simulated infrastructure interface (InfraIf). - Implement a new SendUdp overload in InfraIf that accepts a Message payload. - Update InfraIf::Receive to intercept mDNS UDP packets (port 5353) and deliver them to the Mdns module. - Remove the dedicated ProcessMdns loop and manual PendingTx list from Core and Mdns, consolidating traffic processing through InfraIf. - Initialize Mdns with a reference to the Node to allow access to InfraIf. - Add GetMulticastAddress static helper to Mdns for 'ff02::fb'.
70 lines
2.7 KiB
C++
70 lines
2.7 KiB
C++
/*
|
|
* Copyright (c) 2025, The OpenThread Authors.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the copyright holder nor the
|
|
* names of its contributors may be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef OT_NEXUS_PLATFORM_NEXUS_MDNS_HPP_
|
|
#define OT_NEXUS_PLATFORM_NEXUS_MDNS_HPP_
|
|
|
|
#include "instance/instance.hpp"
|
|
|
|
namespace ot {
|
|
namespace Nexus {
|
|
|
|
class Node;
|
|
|
|
class Mdns
|
|
{
|
|
public:
|
|
static constexpr uint16_t kUdpPort = 5353;
|
|
static constexpr uint32_t kInfraIfIndex = 1;
|
|
|
|
using AddressInfo = otPlatMdnsAddressInfo;
|
|
|
|
Mdns(void);
|
|
void Init(Node &aNode);
|
|
void Reset(void);
|
|
Error SetListeningEnabled(Instance &aInstance, bool aEnable, uint32_t aInfraIfIndex);
|
|
void SendMulticast(Message &aMessage, uint32_t aInfraIfIndex);
|
|
void SendUnicast(Message &aMessage, const AddressInfo &aAddress);
|
|
|
|
void SignalIfAddresses(Instance &aInstance);
|
|
void Receive(Instance &aInstance, Message &aMessage, bool aIsUnicast, const AddressInfo &aSenderAddress);
|
|
void GetAddress(AddressInfo &aAddress) const;
|
|
void HandleHostAddressEvent(const Ip6::Address &aAddress, bool aAdded);
|
|
void HandleHostAddressRemoveAll(void);
|
|
|
|
static void GetMulticastAddress(Ip6::Address &aAddress);
|
|
|
|
Node *mNode;
|
|
bool mEnabled;
|
|
};
|
|
|
|
} // namespace Nexus
|
|
} // namespace ot
|
|
|
|
#endif // OT_NEXUS_PLATFORM_NEXUS_MDNS_HPP_
|