[dnssd-server] implement DNS-SD discovery proxy functionality in core (#10050)

This commit implements a generic discovery proxy in the DNS-SD server.
It uses a set of newly added `otPlatDnssd` platform DNS-SD(mDNS) APIs
to start or stop browsers, SRV/TXT resolvers, and IPv6/IPv4 address
resolvers. These APIs closely match the native OpenThread mDNS
implementation.

OpenThread DNS-SD's existing `QueryCallback` mechanism, enabling
customized discovery proxy implementations, remains supported.

This commit includes a comprehensive unit test. This test validates
the discovery proxy's behavior, covering: standard use cases, request
timeout, s hared resolver/browser usage for multiple queries with the
same name, filtering of invalid addresses, and various edge cases.
This commit is contained in:
Abtin Keshavarzian
2024-06-10 12:16:24 -07:00
committed by GitHub
parent a8f07b57cf
commit 5dbbab175b
17 changed files with 4617 additions and 139 deletions
+60
View File
@@ -104,4 +104,64 @@ void otPlatDnssdUnregisterKey(otInstance *aInstance,
OT_UNUSED_VARIABLE(aCallback);
}
void otPlatDnssdStartBrowser(otInstance *aInstance, const otPlatDnssdBrowser *aBrowser)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aBrowser);
}
void otPlatDnssdStopBrowser(otInstance *aInstance, const otPlatDnssdBrowser *aBrowser)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aBrowser);
}
void otPlatDnssdStartSrvResolver(otInstance *aInstance, const otPlatDnssdSrvResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStopSrvResolver(otInstance *aInstance, const otPlatDnssdSrvResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStartTxtResolver(otInstance *aInstance, const otPlatDnssdTxtResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStopTxtResolver(otInstance *aInstance, const otPlatDnssdTxtResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStartIp6AddressResolver(otInstance *aInstance, const otPlatDnssdAddressResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStopIp6AddressResolver(otInstance *aInstance, const otPlatDnssdAddressResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStartIp4AddressResolver(otInstance *aInstance, const otPlatDnssdAddressResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
void otPlatDnssdStopIp4AddressResolver(otInstance *aInstance, const otPlatDnssdAddressResolver *aResolver)
{
OT_UNUSED_VARIABLE(aInstance);
OT_UNUSED_VARIABLE(aResolver);
}
#endif // OPENTHREAD_CONFIG_PLATFORM_DNSSD_ENABLE