mirror of
https://github.com/espressif/openthread.git
synced 2026-10-20 06:28:14 +00:00
[dnssd] support forwarding DNS queries to platform upstream (#8668)
This commit adds a set of APsI for forwarding a DNS query to the
upstream DNS server via platform API and a posix platform
implementation.
This feature is disabled by default, and this PR adds a `dns server
upstream {enable|disable}` command CLI for enabling and disabling this
feature.
Tests will be added after ot-br-posix adds related support.
This commit is contained in:
@@ -67,6 +67,7 @@ void TestDnsName(void)
|
||||
char name[Dns::Name::kMaxNameSize];
|
||||
const char *subDomain;
|
||||
const char *domain;
|
||||
const char *domain2;
|
||||
|
||||
static const uint8_t kEncodedName1[] = {7, 'e', 'x', 'a', 'm', 'p', 'l', 'e', 3, 'c', 'o', 'm', 0};
|
||||
static const uint8_t kEncodedName2[] = {3, 'f', 'o', 'o', 1, 'a', 2, 'b', 'b', 3, 'e', 'd', 'u', 0};
|
||||
@@ -210,6 +211,42 @@ void TestDnsName(void)
|
||||
domain = "Vice.arpa.";
|
||||
VerifyOrQuit(!Dns::Name::IsSubDomainOf(subDomain, domain));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "example.com.";
|
||||
VerifyOrQuit(Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "example.com";
|
||||
VerifyOrQuit(Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "ExAmPlE.cOm";
|
||||
VerifyOrQuit(Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com";
|
||||
domain2 = "ExAmPlE.cOm";
|
||||
VerifyOrQuit(Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "ExAmPlE.cOm.";
|
||||
VerifyOrQuit(Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "aExAmPlE.cOm.";
|
||||
VerifyOrQuit(!Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = "cOm.";
|
||||
VerifyOrQuit(!Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.";
|
||||
domain2 = "example.com.";
|
||||
VerifyOrQuit(!Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
domain = "example.com.";
|
||||
domain2 = ".example.com.";
|
||||
VerifyOrQuit(!Dns::Name::IsSameDomain(domain, domain2));
|
||||
|
||||
printf("----------------------------------------------------------------\n");
|
||||
printf("Append names, check encoded bytes, parse name and read labels:\n");
|
||||
|
||||
|
||||
@@ -505,4 +505,18 @@ otError otPlatUdpLeaveMulticastGroup(otUdpSocket *aUdpSocket,
|
||||
}
|
||||
#endif // OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE
|
||||
|
||||
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
void otPlatDnsStartUpstreamQuery(otInstance *aInstance, otPlatDnsUpstreamQuery *aTxn, const otMessage *aQuery)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
OT_UNUSED_VARIABLE(aTxn);
|
||||
OT_UNUSED_VARIABLE(aQuery);
|
||||
}
|
||||
|
||||
void otPlatDnsCancelUpstreamQuery(otInstance *aInstance, otPlatDnsUpstreamQuery *aTxn)
|
||||
{
|
||||
otPlatDnsUpstreamQueryDone(aInstance, aTxn, nullptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
} // extern "C"
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
#include <openthread/config.h>
|
||||
#include <openthread/platform/alarm-milli.h>
|
||||
#include <openthread/platform/dns.h>
|
||||
#include <openthread/platform/dso_transport.h>
|
||||
#include <openthread/platform/entropy.h>
|
||||
#include <openthread/platform/logging.h>
|
||||
|
||||
Reference in New Issue
Block a user