[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:
Song GUO
2023-02-21 21:15:03 -08:00
committed by GitHub
parent c311b85cc9
commit 852d076f00
28 changed files with 1038 additions and 16 deletions
+37
View File
@@ -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");