DNS

Ten moduł obejmuje funkcje sterujące komunikacją DNS.

Podsumowanie

Funkcje w tym module są dostępne tylko wtedy, gdy jest włączona funkcja OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE.

Wyliczenia

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
enum | typ wyliczeniowy
Typ reprezentuje tryb NAT64 w otDnsQueryConfig.
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
enum | typ wyliczeniowy
Typ reprezentuje flagę „Recursion Desired” (RD) w elemencie otDnsQueryConfig.
otDnsServiceMode{
  OT_DNS_SERVICE_MODE_UNSPECIFIED = 0,
  OT_DNS_SERVICE_MODE_SRV = 1,
  OT_DNS_SERVICE_MODE_TXT = 2,
  OT_DNS_SERVICE_MODE_SRV_TXT = 3,
  OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE = 4,
  OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE = 5
}
enum | typ wyliczeniowy
Typ reprezentuje tryb rozstrzygania usług w otDnsQueryConfig.
otDnsTransportProto{
  OT_DNS_TRANSPORT_UDP = 1,
  OT_DNS_TRANSPORT_TCP = 2
}
enum | typ wyliczeniowy
Typ reprezentuje protokół transportu DNS w otDnsQueryConfig.

Definicje typów

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) typedef
void(*
Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania dotyczącego rozpoznawania adresów.
otDnsAddressResponse typedef
Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS dotyczące rozpoznawania adresów.
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) typedef
void(*
Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania przeglądania (wyliczenia instancji usługi).
otDnsBrowseResponse typedef
Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS przeglądania (wyliczenie instancji usługi).
otDnsQueryConfig typedef
Reprezentuje konfigurację zapytania DNS.
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) typedef
void(*
Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania dotyczącego rozpoznawania instancji usługi.
otDnsServiceInfo typedef
Udostępnia informacje o instancji usługi DNS.
otDnsServiceResponse typedef
Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS rozpoznawania instancji usługi.
otDnsTxtEntry typedef
struct otDnsTxtEntry
Reprezentuje wpis w rekordzie TXT reprezentujący parę klucz/wartość (RFC 6763 – sekcja 6.3).
otDnsTxtEntryIterator typedef
Reprezentuje iterator wpisów z rekordami TXT (par klucz/wartość).

Funkcje

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Pobiera adres IPv6 powiązany z odpowiedzią DNS związaną z rozpoznawaniem adresów.
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Pobiera pełną nazwę hosta powiązaną z odpowiedzią DNS rozpoznawania adresów.
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Pobiera adres IPv6 hosta z odpowiedzi Przeglądaj DNS (wyliczenie instancji usługi).
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
Pobiera informacje o instancji usługi z odpowiedzi Przeglądaj DNS (wyliczenie instancji usługi).
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
Pobiera instancję usługi powiązaną z odpowiedzią „przeglądaj DNS” (wyliczenie instancji usługi).
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Pobiera nazwę usługi powiązaną z odpowiedzią „przeglądaj DNS” (wyliczenie instancji usługi).
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Wysyła zapytanie przeglądania DNS (wyliczenie instancji usługi) dla podanej nazwy usługi.
otDnsClientGetDefaultConfig(otInstance *aInstance)
Pobiera bieżącą domyślną konfigurację zapytania używaną przez klienta DNS.
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Wysyła zapytanie DNS dotyczące rozpoznawania adresów dla rekordów AAAA (IPv6) dla danej nazwy hosta.
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Wysyła zapytanie DNS dotyczące rozpoznawania adresów dla rekordów A (IPv4) dla danej nazwy hosta.
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Uruchamia rozpoznawanie instancji usługi DNS dla danej instancji usługi.
otDnsClientResolveServiceAndHostAddress(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Uruchamia rozpoznawanie instancji usługi DNS dla danej instancji usługi z możliwością dalszego rozpoznania adresu dla nazwy hosta wykrytej dla instancji usługi.
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
Ustawia domyślną konfigurację zapytania w kliencie DNS.
otDnsEncodeTxtData(const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength)
Koduje podaną listę wpisów w rekordzie TXT (pary klucz/wartość) w dane TXT (zgodnie z formatem określonym w RFC 6763).
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
Analizuje dane TXT z iteratora i pobiera następny wpis TXT (para klucz/wartość).
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
Inicjuje iterator rekordów TXT.
otDnsIsNameCompressionEnabled(void)
bool
Wskazuje, czy tryb „kompresji nazwy DNS” jest włączony.
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Pobiera adres IPv6 hosta z odpowiedzi rozpoznawania instancji usługi DNS.
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
Pobiera informacje o instancji usługi z odpowiedzi rozpoznawania instancji usługi DNS.
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
Pobiera nazwę instancji usługi powiązaną z odpowiedzią dotyczącą rozpoznawania instancji usługi DNS.
otDnsSetNameCompressionEnabled(bool aEnabled)
void
Włącza lub wyłącza tryb „kompresji nazwy DNS”.

Konstrukcja

otDnsQueryConfig

Reprezentuje konfigurację zapytania DNS.

otDnsServiceInfo

Udostępnia informacje o instancji usługi DNS.

otDnsTxtEntry

Reprezentuje wpis w rekordzie TXT reprezentujący parę klucz/wartość (RFC 6763 – sekcja 6.3).

otDnsTxtEntryIterator

Reprezentuje iterator wpisów z rekordami TXT (par klucz/wartość).

Wyliczenia

otDnsNat64Mode

 otDnsNat64Mode

Typ reprezentuje tryb NAT64 w otDnsQueryConfig.

Tryb NAT64 wskazuje, czy zezwolić na translację adresów NAT64 podczas rozpoznawania adresów klientów DNS, czy nie. Ten tryb jest używany tylko wtedy, gdy włączona jest OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE.

Właściwości
OT_DNS_NAT64_ALLOW

Zezwalaj na translację adresów NAT64 podczas rozpoznawania adresów klientów DNS.

OT_DNS_NAT64_DISALLOW

Nie zezwalaj na translację adresów NAT64 podczas rozpoznawania adresów klientów DNS.

OT_DNS_NAT64_UNSPECIFIED

Nie określono trybu NAT64. Użyj domyślnego trybu NAT64.

otDnsRecursionFlag

 otDnsRecursionFlag

Typ reprezentuje flagę „Recursion Desired” (RD) w elemencie otDnsQueryConfig.

Właściwości
OT_DNS_FLAG_NO_RECURSION

Wskazuje, że serwer nazw DNS nie może rekurencyjnie zrealizować zapytania.

OT_DNS_FLAG_RECURSION_DESIRED

Wskazuje, że serwer nazw DNS może rozwiązywać zapytanie rekurencyjnie.

OT_DNS_FLAG_UNSPECIFIED

Wskazuje, że flaga nie została określona.

otDnsServiceMode

 otDnsServiceMode

Typ reprezentuje tryb rozstrzygania usług w otDnsQueryConfig.

Jest używana tylko podczas rozpoznawania otDnsClientResolveService() usługi klienta DNS. Określa on typy rekordów, których dotyczy zapytanie.

Właściwości
OT_DNS_SERVICE_MODE_SRV

Zapytanie tylko o rekord SRV.

OT_DNS_SERVICE_MODE_SRV_TXT

Zapytanie obejmujące rekordy SRV i TXT w tej samej wiadomości.

OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE

Najpierw wyślij zapytanie o TXT/SRV, a jeśli się nie uda, wyślij zapytanie oddzielnie.

OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE

Równoległe zapytania dotyczące SRV i TXT przy użyciu osobnych wiadomości.

OT_DNS_SERVICE_MODE_TXT

Zapytanie tylko o rekord TXT.

OT_DNS_SERVICE_MODE_UNSPECIFIED

Nie określono trybu. Użyj domyślnego trybu usługi.

otDnsTransportProto

 otDnsTransportProto

Typ reprezentuje protokół transportu DNS w otDnsQueryConfig.

Ta właściwość OT_DNS_TRANSPORT_TCP jest obsługiwana tylko wtedy, gdy włączona jest zasada OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE.

Właściwości
OT_DNS_TRANSPORT_TCP

Zapytanie DNS należy wysłać przez UDP.

OT_DNS_TRANSPORT_UDP

Transport DNS nie jest określony.

Definicje typów

otDnsAddressCallback

void(* otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext)

Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania dotyczącego rozpoznawania adresów.

W ramach tego wywołania zwrotnego użytkownik może użyć funkcji otDnsAddressResponseGet{Item}() w połączeniu ze wskaźnikiem aResponse, aby uzyskać więcej informacji o odpowiedzi.

Wskaźnika aResponse można użyć tylko w ramach tego wywołania zwrotnego, a po powrocie z tej funkcji nie zachowa on ważności, więc użytkownik NIE MOŻE zachować wskaźnika aResponse do późniejszego użycia.

aError może zawierać:

Szczegóły
Parametry
[in] aError
Wynik transakcji DNS.
[in] aResponse
Wskaźnik do odpowiedzi (zawsze nie ma wartości NULL).
[in] aContext
Wskaźnik do kontekstu aplikacji.

  • OT_ERROR_NONE Odpowiedź została odebrana.
  • OT_ERROR_ABORT Transakcja DNS została przerwana przez stos.
  • OT_ERROR_odpowiedź_TIMEOUT Nie otrzymano odpowiedzi DNS w przeciągu czasu oczekiwania.

Jeśli serwer odrzuci żądanie rozwiązania adresu, kod błędu z serwera zostanie zmapowany w ten sposób:

  • (0) NOERROR Udało się (brak warunku błędu) -> OT_ERROR_NONE
  • (1) Serwer FORMERR nie może zinterpretować z powodu błędu formatu -> OT_ERROR_PARSE
  • (2) Serwer SERVFAIL napotkał błąd wewnętrzny -> OT_ERROR_FAILED
  • (3) Nazwa NXDOMAIN, która powinna istnieć, nie istnieje -> OT_ERROR_NOT_FOUND
  • (4) Serwer NOTIMP nie obsługuje typu zapytania (kod OpCode) -> OT_ERROR_NOT_IMPLEMENTED
  • (5) Odrzucenie serwera REFUSE z powodu naruszenia zasad/bezpieczeństwa -> OT_ERROR_ERROR
  • (6) YXDOMAIN Jedna nazwa, która nie powinna istnieć, istnieje -> OT_ERROR_DUPLICATED
  • (7) YXRRSET Jakiś parametr RRset, który nie powinien istnieć, jednak istnieje -> OT_ERROR_DUPLICATED
  • (8) NXRRSET Jakiś RRset, który powinien istnieć, nie istnieje -> OT_ERROR_NOT_FOUND
  • (9) Usługa NOTAUTH nie jest autorytatywna w przypadku strefy -> OT_ERROR_BEZPIECZEŃSTWO
  • (10) NOTZONE Nazwa nie znajduje się w strefie -> OT_ERROR_PARSE
  • (20) BADNAME Niewłaściwa nazwa -> OT_ERROR_PARSE
  • (21) BADALG Nieprawidłowy algorytm -> OT_ERROR_ERROR
  • (22) BADTRUN Nieprawidłowe obcięcie -> OT_ERROR_PARSE
  • Inne kody odpowiedzi -> OT_ERROR_FAILED

otDnsAddressResponse

struct otDnsAddressResponse otDnsAddressResponse

Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS dotyczące rozpoznawania adresów.

Wskaźniki do instancji tego typu są dostarczane z wywołania zwrotnego otDnsAddressCallback.

otDnsBrowseCallback

void(* otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)

Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania przeglądania (wyliczenia instancji usługi).

W ramach tego wywołania zwrotnego użytkownik może użyć funkcji otDnsBrowseResponseGet{Item}() w połączeniu ze wskaźnikiem aResponse, aby uzyskać więcej informacji o odpowiedzi.

Wskaźnika aResponse można użyć tylko w ramach tego wywołania zwrotnego, a po powrocie z tej funkcji nie zachowa on ważności, więc użytkownik NIE MOŻE zachować wskaźnika aResponse do późniejszego użycia.

Pełną listę możliwych wartości parametru aError znajdziesz tutaj: otDnsAddressCallback().

Szczegóły
Parametry
[in] aError
Wynik transakcji DNS.
[in] aResponse
Wskaźnik do odpowiedzi (zawsze nie ma wartości NULL).
[in] aContext
Wskaźnik do kontekstu aplikacji.

otDnsBrowseResponse

struct otDnsBrowseResponse otDnsBrowseResponse

Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS przeglądania (wyliczenie instancji usługi).

Wskaźniki do instancji tego typu są dostarczane z wywołania zwrotnego otDnsBrowseCallback.

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

Reprezentuje konfigurację zapytania DNS.

Możesz ustawić dowolne z pól w tej strukturze na 0, aby wskazać, że nie jest ono określone. Sposób traktowania nieokreślonych pól zależy od funkcji, która używa wystąpienia otDnsQueryConfig.

otDnsServiceCallback

void(* otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)

Wskaźnik jest wywoływany po otrzymaniu odpowiedzi DNS dla zapytania dotyczącego rozpoznawania instancji usługi.

W ramach tego wywołania zwrotnego użytkownik może użyć funkcji otDnsServiceResponseGet{Item}() w połączeniu ze wskaźnikiem aResponse, aby uzyskać więcej informacji o odpowiedzi.

Wskaźnika aResponse można użyć tylko w ramach tego wywołania zwrotnego, a po powrocie z tej funkcji nie zachowa on ważności, więc użytkownik NIE MOŻE zachować wskaźnika aResponse do późniejszego użycia.

Pełną listę możliwych wartości parametru aError znajdziesz tutaj: otDnsAddressCallback().

Szczegóły
Parametry
[in] aError
Wynik transakcji DNS.
[in] aResponse
Wskaźnik do odpowiedzi (zawsze nie ma wartości NULL).
[in] aContext
Wskaźnik do kontekstu aplikacji.

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

Udostępnia informacje o instancji usługi DNS.

otDnsServiceResponse

struct otDnsServiceResponse otDnsServiceResponse

Nieprzejrzysta reprezentacja odpowiedzi na zapytanie DNS rozpoznawania instancji usługi.

Wskaźniki do instancji tego typu są dostarczane z wywołania zwrotnego otDnsAddressCallback.

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

Reprezentuje wpis w rekordzie TXT reprezentujący parę klucz/wartość (RFC 6763 – sekcja 6.3).

Bufory ciągu znaków, na które wskazuje mKey i mValue, MUSZĄ zostać zachowane i niezmienione po przekazaniu wystąpienia takiej struktury do OpenThread (w ramach instancji otSrpClientService).

Tablica wpisów otDnsTxtEntry jest używana w otSrpClientService do określenia pełnego rekordu TXT (listy wpisów).

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

Reprezentuje iterator wpisów z rekordami TXT (par klucz/wartość).

Pola danych w tej strukturze są przeznaczone do użytku przez rdzeni OpenThread, a element wywołujący nie powinien ich odczytywać ani zmieniać.

Funkcje

otDnsAddressResponseGetAddress

otError otDnsAddressResponseGetAddress(
  const otDnsAddressResponse *aResponse,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Pobiera adres IPv6 powiązany z odpowiedzią DNS związaną z rozpoznawaniem adresów.

MOŻNA używać tylko od otDnsAddressCallback.

Odpowiedź może zawierać wiele rekordów adresów IPv6. aIndex może posłużyć do iteracji listy adresów. Indeks 0 otrzymuje pierwszy adres i tak dalej. Gdy dotrzemy do końca listy, zwracany jest kod OT_ERROR_NOT_FOUND.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[in] aIndex
Indeks rekordu adresu do pobrania.
[out] aAddress
Wskaźnik na adres IPv6 wyjściowym do adresu (NIE MOŻE mieć wartości NULL).
[out] aTtl
Wskaźnik do uint32_t, który wyświetla wartość TTL adresu. Jeśli element wywołujący nie chce otrzymywać wartości TTL, może mieć wartość NULL.
Zwracane wartości
OT_ERROR_NONE
Adres został odczytany.
OT_ERROR_NOT_FOUND
Brak rekordu adresu w: aResponse o aIndex.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.
OT_ERROR_INVALID_STATE
Brak prefiksu NAT64 (dotyczy tylko wtedy, gdy dozwolony jest protokół NAT64).

otDnsAddressResponseGetHostName

otError otDnsAddressResponseGetHostName(
  const otDnsAddressResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Pobiera pełną nazwę hosta powiązaną z odpowiedzią DNS rozpoznawania adresów.

MOŻNA używać tylko od otDnsAddressCallback.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[out] aNameBuffer
Buforuj tablicę charakterystyczną, aby wyświetlić pełną nazwę hosta (NIE MOŻE zawierać wartości NULL).
[in] aNameBufferSize
Rozmiar aNameBuffer.
Zwracane wartości
OT_ERROR_NONE
Pełna nazwa hosta została odczytana.
OT_ERROR_NO_BUFS
Nazwa nie pasuje do: aNameBuffer.

otDnsBrowseResponseGetHostAddress

otError otDnsBrowseResponseGetHostAddress(
  const otDnsBrowseResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Pobiera adres IPv6 hosta z odpowiedzi Przeglądaj DNS (wyliczenie instancji usługi).

MOŻNA używać tylko od otDnsBrowseCallback.

Odpowiedź może zawierać zero lub więcej rekordów adresów IPv6. aIndex może posłużyć do iteracji listy adresów. Indeks 0 otrzymuje pierwszy adres i tak dalej. Gdy dotrzemy do końca listy, zwracany jest kod OT_ERROR_NOT_FOUND.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[in] aHostName
Nazwa hosta, która ma uzyskać adres (NIE MOŻE zawierać wartości NULL).
[in] aIndex
Indeks rekordu adresu do pobrania.
[out] aAddress
Wskaźnik na adres IPv6 wyjściowym do adresu (NIE MOŻE mieć wartości NULL).
[out] aTtl
Wskaźnik do uint32_t, który wyświetla wartość TTL adresu. Jeśli element wywołujący nie chce otrzymywać wartości TTL, może mieć wartość NULL.
Zwracane wartości
OT_ERROR_NONE
Adres został odczytany.
OT_ERROR_NOT_FOUND
Brak rekordu adresu użytkownika aHostname w: aResponse o aIndex.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.

otDnsBrowseResponseGetServiceInfo

otError otDnsBrowseResponseGetServiceInfo(
  const otDnsBrowseResponse *aResponse,
  const char *aInstanceLabel,
  otDnsServiceInfo *aServiceInfo
)

Pobiera informacje o instancji usługi z odpowiedzi Przeglądaj DNS (wyliczenie instancji usługi).

MOŻNA używać tylko od otDnsBrowseCallback.

Odpowiedź DNS przeglądania może zawierać rekordy SRV, TXT i AAAA dla wyliczonych instancji usługi. Nie jest to wymagane, a serwery/rozwiązania nie są wymagane. Ta funkcja próbuje pobrać te informacje o danej instancji usługi, gdy są dostępne.

  • Jeśli w metodzie aResponse nie znaleziono pasującego rekordu SRV, zwracana jest wartość OT_ERROR_NOT_FOUND. W takim przypadku nie są odczytywane żadne dodatkowe rekordy (żadne z rekordów TXT ani AAAA).
  • Jeśli w aResponse zostanie znaleziony pasujący rekord SRV, wartość aServiceInfo zostanie zaktualizowana i zwrócona zostanie OT_ERROR_NONE.
  • Jeśli w aResponse nie znaleziono pasującego rekordu TXT, wartość mTxtDataSize w aServiceInfo jest ustawiona na 0.
  • Jeśli długość danych TXT jest większa niż mTxtDataSize, są one odczytywane tylko częściowo, a mTxtDataTruncated ma wartość Prawda.
  • Jeśli w aResponse nie znaleziono pasującego rekordu AAAA, mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsBrowseResponseGetHostAddress()`.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[in] aInstanceLabel
Etykieta instancji usługi (NIE MOŻE zawierać wartości NULL).
[out] aServiceInfo
ServiceInfo do przekazywania informacji o instancji usługi (NIE MOŻE zawierać wartości NULL).
Zwracane wartości
OT_ERROR_NONE
Informacje o instancji usługi zostały odczytane. Zaktualizowano aplikację aServiceInfo.
OT_ERROR_NOT_FOUND
Nie udało się znaleźć pasującego rekordu SRV dla: aInstanceLabel.
OT_ERROR_NO_BUFS
Nazwa hosta lub dane TXT nie mogły się zmieścić w podanych buforach.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.

otDnsBrowseResponseGetServiceInstance

otError otDnsBrowseResponseGetServiceInstance(
  const otDnsBrowseResponse *aResponse,
  uint16_t aIndex,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize
)

Pobiera instancję usługi powiązaną z odpowiedzią „przeglądaj DNS” (wyliczenie instancji usługi).

MOŻNA używać tylko od otDnsBrowseCallback.

Odpowiedź może zawierać wiele rekordów instancji usługi. Do iteracji listy można użyć funkcji aIndex. Indeks 0 oznacza pierwszy rekord. Gdy dotrzemy do końca listy, zwracany jest kod OT_ERROR_NOT_FOUND.

Zwróć uwagę, że ta funkcja otrzymuje etykietę instancji usługi, a nie pełną nazwę instancji usługi, która ma postać ...

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[in] aIndex
Indeks rekordu instancji usługi do pobrania.
[out] aLabelBuffer
Buforuj tablicę charakterystyczną, aby wyświetlić etykietę instancji usługi (NIE MOŻE mieć wartości NULL).
[in] aLabelBufferSize
Rozmiar aLabelBuffer.
Zwracane wartości
OT_ERROR_NONE
Instancja usługi została odczytana.
OT_ERROR_NO_BUFS
Nazwa nie pasuje do: aNameBuffer.
OT_ERROR_NOT_FOUND
Brak rekordu instancji usługi w strefie aResponse o aIndex.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.

otDnsBrowseResponseGetServiceName

otError otDnsBrowseResponseGetServiceName(
  const otDnsBrowseResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Pobiera nazwę usługi powiązaną z odpowiedzią „przeglądaj DNS” (wyliczenie instancji usługi).

MOŻNA używać tylko od otDnsBrowseCallback.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[out] aNameBuffer
Buforuj do tablicy charakterystycznej, aby wyświetlić nazwę usługi (NIE MOŻE mieć wartości NULL).
[in] aNameBufferSize
Rozmiar aNameBuffer.
Zwracane wartości
OT_ERROR_NONE
Udało się odczytać nazwę usługi.
OT_ERROR_NO_BUFS
Nazwa nie pasuje do: aNameBuffer.

otDnsClientBrowse

otError otDnsClientBrowse(
  otInstance *aInstance,
  const char *aServiceName,
  otDnsBrowseCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Wysyła zapytanie przeglądania DNS (wyliczenie instancji usługi) dla podanej nazwy usługi.

Dostępne, gdy włączona jest opcja OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig może zawierać wartość NULL. W tym przypadku jako konfiguracja dla tego zapytania zostanie użyta konfiguracja domyślna (z otDnsClientGetDefaultConfig()). W polu aConfig bez wartości NULL niektóre pola mogą być nieokreślone (wartość 0). Nieokreślone pola są następnie zastępowane wartościami z konfiguracji domyślnej.

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aServiceName
Nazwa usługi, której ma dotyczyć zapytanie (NIE MOŻE zawierać wartości NULL).
[in] aCallback
Wskaźnik funkcji, który będzie wywoływany po odebraniu odpowiedzi lub przekroczeniu limitu czasu.
[in] aContext
Wskaźnik do dowolnych informacji kontekstowych.
[in] aConfig
Wskaźnik konfiguracji używanej w przypadku tego zapytania.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało wysłane. Aby zgłosić stan, zostanie wywołana funkcja aCallback.
OT_ERROR_NO_BUFS
Niewystarczająca ilość bufora, aby przygotować i wysłać zapytanie.

otDnsClientGetDefaultConfig

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

Pobiera bieżącą domyślną konfigurację zapytania używaną przez klienta DNS.

Po uruchomieniu stosu OpenThread domyślna konfiguracja zapytania DNS jest określana na podstawie zestawu opcji konfiguracji OT, takich jak OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS, _DEFAULT_SERVER_PORT, _DEFAULT_RESPONSE_TIMEOUT itp. (wszystkie powiązane opcje konfiguracji znajdziesz na config/dns_client.h).

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
Zwroty
Wskaźnik do bieżącej domyślnej konfiguracji używanej przez klienta DNS.

otDnsClientResolveAddress

otError otDnsClientResolveAddress(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Wysyła zapytanie DNS dotyczące rozpoznawania adresów dla rekordów AAAA (IPv6) dla danej nazwy hosta.

aConfig może zawierać wartość NULL. W tym przypadku jako konfiguracja dla tego zapytania zostanie użyta konfiguracja domyślna (z otDnsClientGetDefaultConfig()). W polu aConfig bez wartości NULL niektóre pola mogą być nieokreślone (wartość 0). Nieokreślone pola są następnie zastępowane wartościami z konfiguracji domyślnej.

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aHostName
Nazwa hosta, dla którego ma zostać wykonane zapytanie dotyczące adresu (NIE MOŻE zawierać wartości NULL).
[in] aCallback
Wskaźnik funkcji, który będzie wywoływany po odebraniu odpowiedzi lub przekroczeniu limitu czasu.
[in] aContext
Wskaźnik do dowolnych informacji kontekstowych.
[in] aConfig
Wskaźnik konfiguracji używanej w przypadku tego zapytania.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało wysłane. Aby zgłosić stan, zostanie wywołana funkcja aCallback.
OT_ERROR_NO_BUFS
Niewystarczająca ilość bufora, aby przygotować i wysłać zapytanie.
OT_ERROR_INVALID_ARGS
Nazwa hosta ma nieprawidłowy format.
OT_ERROR_INVALID_STATE
Nie można wysłać zapytania, ponieważ interfejs Thread nie działa.

otDnsClientResolveIp4Address

otError otDnsClientResolveIp4Address(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Wysyła zapytanie DNS dotyczące rozpoznawania adresów dla rekordów A (IPv4) dla danej nazwy hosta.

Wymaga i jest dostępna, gdy włączona jest OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE.

Po otrzymaniu odpowiedzi na żądanie adresy są zwracane z aCallback jako wersje adresów IPv4 przetłumaczone przez NAT64 z odpowiedzi na zapytanie.

aConfig może zawierać wartość NULL. W tym przypadku jako konfiguracja dla tego zapytania zostanie użyta konfiguracja domyślna (z otDnsClientGetDefaultConfig()). W polu aConfig bez wartości NULL niektóre pola mogą być nieokreślone (wartość 0). Nieokreślone pola są następnie zastępowane wartościami z konfiguracji domyślnej.

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aHostName
Nazwa hosta, dla którego ma zostać wykonane zapytanie dotyczące adresu (NIE MOŻE zawierać wartości NULL).
[in] aCallback
Wskaźnik funkcji, który będzie wywoływany po odebraniu odpowiedzi lub przekroczeniu limitu czasu.
[in] aContext
Wskaźnik do dowolnych informacji kontekstowych.
[in] aConfig
Wskaźnik konfiguracji używanej w przypadku tego zapytania.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało wysłane. Aby zgłosić stan, zostanie wywołana funkcja aCallback.
OT_ERROR_NO_BUFS
Niewystarczająca ilość bufora, aby przygotować i wysłać zapytanie.
OT_ERROR_INVALID_ARGS
Nazwa hosta ma nieprawidłowy format lub nie włączono NAT64 w konfiguracji.
OT_ERROR_INVALID_STATE
Nie można wysłać zapytania, ponieważ interfejs Thread nie działa.

otDnsClientResolveService

otError otDnsClientResolveService(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Uruchamia rozpoznawanie instancji usługi DNS dla danej instancji usługi.

Dostępne, gdy włączona jest opcja OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig może zawierać wartość NULL. W tym przypadku jako konfiguracja dla tego zapytania zostanie użyta konfiguracja domyślna (z otDnsClientGetDefaultConfig()). W polu aConfig bez wartości NULL niektóre pola mogą być nieokreślone (wartość 0). Nieokreślone pola są następnie zastępowane wartościami z konfiguracji domyślnej.

Funkcja wysyła zapytania dotyczące rekordów SRV lub TXT dla danej instancji usługi. Pole mServiceMode w tabeli otDnsQueryConfig określa, do których rekordów należy wysyłać zapytanie (tylko SRV, tylko TXT lub zarówno SRV, jak i TXT) oraz sposób wykonywania zapytania (w tej samej wiadomości, oddzielnie, równolegle lub w trybie zoptymalizowanym, w którym klient najpierw spróbuje użyć tej samej wiadomości, a potem oddzielnie, jeśli nie otrzyma odpowiedzi).

Rekord SRV zawiera informacje o porcie usługi, priorytecie i wadze wraz z nazwą hosta powiązaną z instancją usługi. Ta funkcja NIE wykonuje rozpoznawania adresów dla nazwy hosta wykrytej w rekordzie SRV. Serwer/narzędzie do rozpoznawania nazw może udostępnić rekordy AAAA/A dla nazwy hosta w sekcji Dodatkowe dane odpowiedzi na zapytanie SRV/TXT. Te informacje można pobrać przy użyciu otDnsServiceResponseGetServiceInfo() w otDnsServiceCallback. Użytkownicy tego interfejsu API NIE MOGĄ zakładać, że adres hosta będzie zawsze dostępny z otDnsServiceResponseGetServiceInfo().

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aInstanceLabel
Etykieta instancji usługi.
[in] aServiceName
Nazwa usługi (razem aInstanceLabel z pełną nazwą instancji).
[in] aCallback
Wskaźnik funkcji, który będzie wywoływany po odebraniu odpowiedzi lub przekroczeniu limitu czasu.
[in] aContext
Wskaźnik do dowolnych informacji kontekstowych.
[in] aConfig
Wskaźnik konfiguracji używanej w przypadku tego zapytania.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało wysłane. Aby zgłosić stan, zostanie wywołana funkcja aCallback.
OT_ERROR_NO_BUFS
Niewystarczająca ilość bufora, aby przygotować i wysłać zapytanie.
OT_ERROR_INVALID_ARGS
aInstanceLabel ma wartość NULL.

otDnsClientResolveServiceAndHostAddress

otError otDnsClientResolveServiceAndHostAddress(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Uruchamia rozpoznawanie instancji usługi DNS dla danej instancji usługi z możliwością dalszego rozpoznania adresu dla nazwy hosta wykrytej dla instancji usługi.

Dostępne, gdy włączona jest opcja OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig może zawierać wartość NULL. W tym przypadku jako konfiguracja dla tego zapytania zostanie użyta konfiguracja domyślna (z otDnsClientGetDefaultConfig()). W polu aConfig bez wartości NULL niektóre pola mogą być nieokreślone (wartość 0). Nieokreślone pola są następnie zastępowane wartościami z konfiguracji domyślnej. Tej funkcji nie można używać z zasadą mServiceMode w konfiguracji DNS ustawionej na OT_DNS_SERVICE_MODE_TXT (tzn. z zapytaniem tylko o rekord TXT) i zwraca OT_ERROR_INVALID_ARGS.

Działa podobnie do usługi otDnsClientResolveService() wysyłającej zapytania dotyczące rekordów SRV i TXT. Jeśli jednak serwer/narzędzie do rozpoznawania nazw nie udostępnia rekordów AAAA/A dla nazwy hosta w odpowiedzi na zapytanie SRV (w sekcji Dodatkowe dane), wykona rozpoznawanie nazw hostów (wysyłając zapytanie AAAA) dla wykrytej nazwy hosta z rekordu SRV. Wywołanie zwrotne aCallback jest wywoływane po otrzymaniu odpowiedzi na wszystkie zapytania (tj. rozpoznawanie adresów usług i hosta zostało zakończone).

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aInstanceLabel
Etykieta instancji usługi.
[in] aServiceName
Nazwa usługi (razem aInstanceLabel z pełną nazwą instancji).
[in] aCallback
Wskaźnik funkcji, który będzie wywoływany po odebraniu odpowiedzi lub przekroczeniu limitu czasu.
[in] aContext
Wskaźnik do dowolnych informacji kontekstowych.
[in] aConfig
Wskaźnik konfiguracji używanej w przypadku tego zapytania.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało wysłane. Aby zgłosić stan, zostanie wywołana funkcja aCallback.
OT_ERROR_NO_BUFS
Niewystarczająca ilość bufora, aby przygotować i wysłać zapytanie.
OT_ERROR_INVALID_ARGS
Pole aInstanceLabel ma wartość NULL lub aConfig jest nieprawidłowe.

otDnsClientSetDefaultConfig

void otDnsClientSetDefaultConfig(
  otInstance *aInstance,
  const otDnsQueryConfig *aConfig
)

Ustawia domyślną konfigurację zapytania w kliencie DNS.

aConfig może zawierać wartość NULL. W tym przypadku domyślna konfiguracja zostanie ustawiona na domyślne z opcji konfiguracji OT OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}. Spowoduje to przywrócenie domyślnej konfiguracji zapytania do konfiguracji po uruchomieniu stosu OpenThread.

W polu aConfig bez wartości NULL wywołujący może pozostawić niektóre pola w instancji otDnsQueryConfig nieokreślone (wartość 0). Pola nieokreślone są zastępowane odpowiednimi definicjami opcji konfiguracji dogrywek OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}, aby utworzyć domyślną konfigurację zapytania.

Gdy zasada OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE jest włączona, klient DNS automatycznie ustawia i aktualizuje adres IPv6 serwera w konfiguracji domyślnej. Dzieje się tak tylko wtedy, gdy użytkownik nie ustawi ani nie określi takiej aktywności. To zachowanie wymaga włączenia klienta SRP i jego funkcji automatycznego uruchamiania. Klient SRP będzie następnie monitorował dane sieci Thread pod kątem wpisów usługi DNS/SRP, aby wybrać serwer SRP. Wybrany adres serwera SRP jest też ustawiony jako adres serwera DNS w domyślnej konfiguracji.

Szczegóły
Parametry
[in] aInstance
Wskaźnik do instancji OpenThread.
[in] aConfig
Wskaźnik nowej konfiguracji zapytania, która ma być używana jako domyślna.

otDnsEncodeTxtData

otError otDnsEncodeTxtData(
  const otDnsTxtEntry *aTxtEntries,
  uint16_t aNumTxtEntries,
  uint8_t *aTxtData,
  uint16_t *aTxtDataLength
)

Koduje podaną listę wpisów w rekordzie TXT (pary klucz/wartość) w dane TXT (zgodnie z formatem określonym w RFC 6763).

Szczegóły
Parametry
[in] aTxtEntries
Wskaźnik do tablicy otDnsTxtEntry.
[in] aNumTxtEntries
Liczba wpisów w tablicy aTxtEntries.
[out] aTxtData
Wskaźnik do bufora, który wyświetla zakodowane dane TXT.
[in,out] aTxtDataLength
Po wejściu, rozmiar bufora: aTxtData. Na wyjściu: długość zakodowanych danych TXT.
Zwracane wartości
OT_ERROR_NONE
Zakodowane dane TXT zostały zaktualizowane, zaktualizowano aTxtData i aTxtDataLength.
OT_ERROR_INVALID_ARGS
Wartość aTxtEntries jest nieprawidłowa.
OT_ERROR_NO_BUS
Nie udało się zmieścić zaszyfrowanych danych w buforze aTxtData z jego aTxtDataLength.

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

Analizuje dane TXT z iteratora i pobiera następny wpis TXT (para klucz/wartość).

Przed wywołaniem tej funkcji aIterator MUSI zostać zainicjowana przy użyciu otDnsInitTxtEntryIterator(), a bufor danych TXT użyty do zainicjowania iteratora MUSI zostać zachowany i pozostanie niezmieniony. W przeciwnym razie działanie tej funkcji będzie nieokreślone.

Jeśli długość przeanalizowanego ciągu klucza jest mniejsza lub równa OT_DNS_TXT_KEY_ITER_MAX_LENGTH, ciąg znaków jest zwracany w funkcji mKey w funkcji aEntry. Jeśli jednak klucz jest dłuższy, mKey ma wartość NULL, a cały zakodowany ciąg tekstowy TXT jest zwracany w mValue i mValueLength.

Szczegóły
Parametry
[in] aIterator
Wskaźnik do iteratora (NIE MOŻE zawierać wartości NULL).
[out] aEntry
Wskaźnik do struktury otDnsTxtEntry, który wyświetla na wyjściu przeanalizowany/odczytany wpis (NIE MOŻE mieć wartości NULL).
Zwracane wartości
OT_ERROR_NONE
Następny wpis został przeanalizowany. Zaktualizowano aplikację aEntry.
OT_ERROR_NOT_FOUND
Brak wpisów w danych TXT.
OT_ERROR_PARSE
Dane TXT z domeny aIterator nie są poprawnie sformułowane.

otDnsInitTxtEntryIterator

void otDnsInitTxtEntryIterator(
  otDnsTxtEntryIterator *aIterator,
  const uint8_t *aTxtData,
  uint16_t aTxtDataLength
)

Inicjuje iterator rekordów TXT.

Wskaźnik bufora aTxtData i jego zawartość MUSZĄ pozostawać niezmienione podczas używania obiektu aIterator.

Szczegóły
Parametry
[in] aIterator
Wskaźnik do inicjowania iteratora (NIE MOŻE mieć wartości NULL).
[in] aTxtData
Wskaźnik bufora zawierający zakodowane dane TXT.
[in] aTxtDataLength
Długość (liczba bajtów) zasobu aTxtData.

otDnsIsNameCompressionEnabled

bool otDnsIsNameCompressionEnabled(
  void
)

Wskazuje, czy tryb „kompresji nazwy DNS” jest włączony.

Służy ona tylko do testowania i jest dostępna tylko wtedy, gdy włączona jest konfiguracja OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Szczegóły
Zwroty
Wartość TRUE, jeśli włączony jest tryb „kompresja nazwy DNS”, w przeciwnym razie ma wartość FALSE.

otDnsServiceResponseGetHostAddress

otError otDnsServiceResponseGetHostAddress(
  const otDnsServiceResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Pobiera adres IPv6 hosta z odpowiedzi rozpoznawania instancji usługi DNS.

MOŻNA używać tylko od otDnsServiceCallback.

Odpowiedź może zawierać zero lub więcej rekordów adresów IPv6. aIndex może posłużyć do iteracji listy adresów. Indeks 0 otrzymuje pierwszy adres i tak dalej. Gdy dotrzemy do końca listy, zwracany jest kod OT_ERROR_NOT_FOUND.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[in] aHostName
Nazwa hosta, która ma uzyskać adres (NIE MOŻE zawierać wartości NULL).
[in] aIndex
Indeks rekordu adresu do pobrania.
[out] aAddress
Wskaźnik na adres IPv6 wyjściowym do adresu (NIE MOŻE mieć wartości NULL).
[out] aTtl
Wskaźnik do uint32_t, który wyświetla wartość TTL adresu. Jeśli element wywołujący nie chce otrzymywać wartości TTL, może mieć wartość NULL.
Zwracane wartości
OT_ERROR_NONE
Adres został odczytany.
OT_ERROR_NOT_FOUND
Brak rekordu adresu użytkownika aHostname w: aResponse o aIndex.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.

otDnsServiceResponseGetServiceInfo

otError otDnsServiceResponseGetServiceInfo(
  const otDnsServiceResponse *aResponse,
  otDnsServiceInfo *aServiceInfo
)

Pobiera informacje o instancji usługi z odpowiedzi rozpoznawania instancji usługi DNS.

MUSI być używana tylko w przypadku otDnsServiceCallback wywołanych z metody otDnsClientResolveService() lub otDnsClientResolveServiceAndHostAddress().

Jeśli zostanie ono użyte z wywołania zwrotnego otDnsClientResolveService(), odpowiedź DNS z serwera/mechanizmu rozstrzygającego może zawierać rekordy AAAA w sekcji „Dodatkowe dane” dla nazwy hosta powiązanej z instancją usługi, która została rozpoznana. Jest to wymagane, a nie MUSI to wymagać, więc serwery/rozwiązania nie muszą tego robić. Ta funkcja próbuje przeanalizować rekordy AAAA, jeśli znajduje się w odpowiedzi. Jeśli go nie ma, w polu mHostAddress używane są wszystkie zera (nieokreślony adres). Aby też rozpoznać adres hosta, użytkownik może użyć funkcji otDnsClientResolveServiceAndHostAddress() interfejsu API klienta DNS, która wykona rozpoznawanie usług, a następnie zapytanie o rozpoznawanie adresów nazw hosta (gdy rekordy AAAA nie są podane przez serwer/rozstrzygający w odpowiedzi na zapytanie SRV).

  • Jeśli w aResponse zostanie znaleziony pasujący rekord SRV, zaktualizowany zostanie aServiceInfo.
  • Jeśli nie znaleziono pasującego rekordu SRV, zwracany jest OT_ERROR_NOT_FOUND, chyba że konfiguracja zapytania dla tego zapytania użyła OT_DNS_SERVICE_MODE_TXT dla mServiceMode (co oznacza, że żądanie dotyczyło tylko rekordu TXT). W takim przypadku nadal staramy się przeanalizować rekord SRV z sekcji danych dodatkowych odpowiedzi (na wypadek, gdyby serwer przekazał te informacje).
  • Jeśli w aResponse nie znaleziono pasującego rekordu TXT, wartość mTxtDataSize w aServiceInfo jest ustawiona na 0.
  • Jeśli długość danych TXT jest większa niż mTxtDataSize, są one odczytywane tylko częściowo, a mTxtDataTruncated ma wartość Prawda.
  • Jeśli w aResponse nie znaleziono pasującego rekordu AAAA, mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsServiceResponseGetHostAddress()`.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[out] aServiceInfo
ServiceInfo do przekazywania informacji o instancji usługi (NIE MOŻE zawierać wartości NULL).
Zwracane wartości
OT_ERROR_NONE
Informacje o instancji usługi zostały odczytane. Zaktualizowano aplikację aServiceInfo.
OT_ERROR_NOT_FOUND
Nie udało się znaleźć wymaganego rekordu w: aResponse.
OT_ERROR_NO_BUFS
Nazwa hosta lub dane TXT nie mogły się zmieścić w podanych buforach.
OT_ERROR_PARSE
Nie udało się przeanalizować rekordów w: aResponse.

otDnsServiceResponseGetServiceName

otError otDnsServiceResponseGetServiceName(
  const otDnsServiceResponse *aResponse,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Pobiera nazwę instancji usługi powiązaną z odpowiedzią dotyczącą rozpoznawania instancji usługi DNS.

MOŻNA używać tylko od otDnsServiceCallback.

Szczegóły
Parametry
[in] aResponse
Wskaźnik odpowiedzi.
[out] aLabelBuffer
Buforuj tablicę charakterystyczną, aby wyświetlić etykietę instancji usługi (NIE MOŻE mieć wartości NULL).
[in] aLabelBufferSize
Rozmiar aLabelBuffer.
[out] aNameBuffer
Buforuj do tablicy char, aby wyświetlić resztę nazwy usługi (może mieć wartość NULL, jeśli użytkownik nie chce otrzymać nazwy.
[in] aNameBufferSize
Rozmiar aNameBuffer.
Zwracane wartości
OT_ERROR_NONE
Udało się odczytać nazwę usługi.
OT_ERROR_NO_BUFS
Etykieta lub nazwa nie mieszczą się w podanych buforach.

otDnsSetNameCompressionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

Włącza lub wyłącza tryb „kompresji nazwy DNS”.

Domyślnie kompresja nazw DNS jest włączona. Gdy ta opcja jest wyłączona, nazwy DNS są dołączane jako pełne i nigdy nie są skompresowane. Dotyczy to modułów klienta/serwera DNS i SRP w OpenThread.

Służy ona tylko do testowania i jest dostępna tylko wtedy, gdy włączona jest konfiguracja OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Pamiętaj, że w przypadku użycia funkcji OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE ten tryb ma zastosowanie do wszystkich instancji OpenThread (tzn. wywołanie tej funkcji powoduje włączenie lub wyłączenie trybu kompresji we wszystkich instancjach OpenThread).

Szczegóły
Parametry
[in] aEnabled
Wartość TRUE (prawda) włącza tryb „Kompresja nazwy DNS”, a wartość FALSE (FAŁSZ), aby wyłączyć.

Makra

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

Maksymalny rozmiar ciągu etykiety (uwzględnij znak null na końcu ciągu).

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

Maksymalny rozmiar ciągu nazwy (zawiera znak null na końcu ciągu).

OT_DNS_TXT_KEY_ITER_MAX_LENGTH

 OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64

Maksymalna długość ciągu znaków klucza TXT obsługiwana przez plik otDnsTxtEntryIterator.

OT_DNS_TXT_KEY_MAX_LENGTH

 OT_DNS_TXT_KEY_MAX_LENGTH 9

Zalecana maksymalna długość ciągu klucza rekordu TXT (RFC 6763 – sekcja 6.4).

OT_DNS_TXT_KEY_MIN_LENGTH

 OT_DNS_TXT_KEY_MIN_LENGTH 1

Minimalna długość ciągu klucza rekordu TXT (RFC 6763 – sekcja 6.4).

Zasoby

Tematy referencyjne interfejsu OpenThread API pochodzą z kodu źródłowego dostępnego w GitHub. Aby dowiedzieć się więcej lub dołączyć do naszej dokumentacji, skorzystaj z sekcji Zasoby.