DNS

Dieses Modul enthält Funktionen zur Steuerung der DNS-Kommunikation.

Zusammenfassung

Die Funktionen in diesem Modul sind nur verfügbar, wenn die Funktion OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE aktiviert ist.

Aufzählungen

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
enum
Der Typ stellt den NAT64-Modus in einem otDnsQueryConfig dar.
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
enum
„Type“ steht für das Flag „Recursion Desired“ (RD) in einem 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
Der Typ stellt den Dienstauflösungsmodus in otDnsQueryConfig dar.
otDnsTransportProto{
  OT_DNS_TRANSPORT_UDP = 1,
  OT_DNS_TRANSPORT_TCP = 2
}
enum
„Type“ steht für das DNS-Transportprotokoll in einem otDnsQueryConfig.

Typedefs

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) typedef
void(*
Pointer wird aufgerufen, wenn eine DNS-Antwort für eine Abfrage zur Adressauflösung empfangen wird.
otDnsAddressResponse typedef
Eine intransparente Darstellung einer Antwort auf eine DNS-Abfrage zur Adressauflösung.
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) typedef
void(*
Pointer wird aufgerufen, wenn eine DNS-Antwort für eine Suchabfrage (Serviceinstanz-Enumeration) empfangen wird.
otDnsBrowseResponse typedef
Eine intransparente Darstellung einer Antwort auf eine Browser-DNS-Abfrage (Dienstinstanzaufzählung).
otDnsQueryConfig typedef
Stellt eine DNS-Abfragekonfiguration dar.
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) typedef
void(*
Pointer wird aufgerufen, wenn eine DNS-Antwort auf eine Anfrage zur Auflösung einer Dienstinstanz eingeht.
otDnsServiceInfo typedef
Stellt Informationen zu einer DNS-Dienstinstanz bereit.
otDnsServiceResponse typedef
Eine intransparente Darstellung einer Antwort auf eine DNS-Abfrage zur Auflösung einer Dienstinstanz.
otDnsTxtEntry typedef
struct otDnsTxtEntry
Stellt einen TXT-Eintrageintrag dar, der ein Schlüssel/Wert-Paar darstellt (RFC 6763 – Abschnitt 6.3).
otDnsTxtEntryIterator typedef
Stellt einen iterator für TXT-Eintragseinträge (Schlüssel/Wert-Paare) dar.

Funktionen

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Ruft eine IPv6-Adresse ab, die mit einer DNS-Antwort mit einer Adressauflösung verknüpft ist.
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Ruft den vollständigen Hostnamen ab, der einer DNS-Antwort mit einer Adressauflösung zugeordnet ist.
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Ruft die IPv6-Adresse des Hosts aus einer Antwort des DNS-Durchsuchens (Serviceinstanz-Enumeration) ab.
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
Ruft Informationen zu einer Dienstinstanz aus einer Antwort des DNS-Browsers (Dienstinstanzaufzählung) ab.
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
Ruft eine Dienstinstanz ab, die mit einer Antwort des DNS-Browsers (Dienstinstanzauflistung) verknüpft ist.
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Ruft den Dienstnamen ab, der mit einer Antwort des DNS-Browsers (Dienstinstanzaufzählung) verknüpft ist.
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Sendet eine DNS-Suchanfrage (Dienstinstanzaufzählung) für einen bestimmten Dienstnamen.
otDnsClientGetDefaultConfig(otInstance *aInstance)
Ruft die aktuelle Standardabfragekonfiguration ab, die vom DNS-Client verwendet wird.
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Sendet eine DNS-Abfrage zur Adressauflösung für AAAA-Einträge (IPv6) für einen bestimmten Hostnamen.
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Sendet eine DNS-Abfrage zur Adressauflösung für A-Einträge (IPv4) für einen bestimmten Hostnamen.
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Startet die Auflösung einer DNS-Dienstinstanz für eine bestimmte Dienstinstanz.
otDnsClientResolveServiceAndHostAddress(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Startet eine Auflösung der DNS-Dienstinstanz für eine bestimmte Dienstinstanz mit einer möglichen Folgeadressenauflösung für den Hostnamen, der für die Dienstinstanz erkannt wurde.
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
Legt die Standardabfragekonfiguration auf dem DNS-Client fest.
otDnsEncodeTxtData(const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength)
Codiert eine bestimmte Liste von TXT-Eintragseinträgen (Schlüssel/Wert-Paare) in TXT-Daten im durch RFC 6763 angegebenen Format.
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
Parst die TXT-Daten von einem Iteration und ruft den nächsten TXT-Eintrageintrag (Schlüssel/Wert-Paar) ab.
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
Initialisiert einen TXT-Datensatziterator.
otDnsIsNameCompressionEnabled(void)
bool
Gibt an, ob der Modus „DNS-Namenskomprimierung“ aktiviert ist oder nicht.
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Ruft die IPv6-Hostadresse aus der Antwort zur Auflösung einer DNS-Dienstinstanz ab.
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
Ruft Informationen zu einer Dienstinstanz aus der Antwort zur Auflösung einer DNS-Dienstinstanz ab.
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
Ruft den Namen der Dienstinstanz ab, der mit einer Antwort zur Auflösung einer DNS-Dienstinstanz verknüpft ist.
otDnsSetNameCompressionEnabled(bool aEnabled)
void
Aktiviert/deaktiviert den Modus "DNS-Namenskomprimierung".

Strukturen

otDnsQueryConfig

Stellt eine DNS-Abfragekonfiguration dar.

otDnsServiceInfo

Stellt Informationen zu einer DNS-Dienstinstanz bereit.

otDnsTxtEntry

Stellt einen TXT-Eintrageintrag dar, der ein Schlüssel/Wert-Paar darstellt (RFC 6763 – Abschnitt 6.3).

otDnsTxtEntryIterator

Stellt einen iterator für TXT-Eintragseinträge (Schlüssel/Wert-Paare) dar.

Aufzählungen

otDnsNat64Mode

 otDnsNat64Mode

Der Typ stellt den NAT64-Modus in einem otDnsQueryConfig dar.

Der NAT64-Modus gibt an, ob die NAT64-Adressübersetzung während der DNS-Client-Adressauflösung zugelassen oder nicht zugelassen wird. Dieser Modus wird nur verwendet, wenn OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE aktiviert ist.

Attribute
OT_DNS_NAT64_ALLOW

NAT64-Adressübersetzung während der Auflösung von DNS-Clientadressen zulassen.

OT_DNS_NAT64_DISALLOW

NAT64-Adressübersetzung während der DNS-Client-Adressauflösung nicht zulassen.

OT_DNS_NAT64_UNSPECIFIED

NAT64-Modus ist nicht angegeben. Standard-NAT64-Modus verwenden.

otDnsRecursionFlag

 otDnsRecursionFlag

„Type“ steht für das Flag „Recursion Desired“ (RD) in einem otDnsQueryConfig.

Attribute
OT_DNS_FLAG_NO_RECURSION

Gibt an, dass der DNS-Nameserver die Abfrage nicht rekursiv auflösen kann.

OT_DNS_FLAG_RECURSION_DESIRED

Gibt an, dass der DNS-Nameserver die Abfrage rekursiv auflösen kann.

OT_DNS_FLAG_UNSPECIFIED

Gibt an, dass das Flag nicht angegeben ist.

otDnsServiceMode

 otDnsServiceMode

Der Typ stellt den Dienstauflösungsmodus in otDnsQueryConfig dar.

Wird nur während der DNS-Clientdienstauflösung otDnsClientResolveService() verwendet. Damit wird festgelegt, welche Datensatztypen abgefragt werden.

Attribute
OT_DNS_SERVICE_MODE_SRV

Abfrage nur nach SRV-Eintrag.

OT_DNS_SERVICE_MODE_SRV_TXT

Abfrage von SRV- und TXT-Einträgen in derselben Nachricht.

OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE

Führen Sie zuerst eine gemeinsame Abfrage von TXT/SRV durch. Wenn Fehler auftreten, führen Sie eine separate Abfrage durch.

OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE

Parallele Abfrage von SRV und TXT mit separaten Nachrichten.

OT_DNS_SERVICE_MODE_TXT

Abfrage nur für TXT-Eintrag.

OT_DNS_SERVICE_MODE_UNSPECIFIED

Der Modus ist nicht angegeben. Standarddienstmodus verwenden.

otDnsTransportProto

 otDnsTransportProto

„Type“ steht für das DNS-Transportprotokoll in einem otDnsQueryConfig.

Dieses OT_DNS_TRANSPORT_TCP wird nur unterstützt, wenn OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE aktiviert ist.

Attribute
OT_DNS_TRANSPORT_TCP

Die DNS-Abfrage sollte über UDP gesendet werden.

OT_DNS_TRANSPORT_UDP

DNS-Transport ist nicht angegeben.

Typedefs

otDnsAddressCallback

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

Pointer wird aufgerufen, wenn eine DNS-Antwort für eine Abfrage zur Adressauflösung empfangen wird.

Innerhalb dieses Callbacks kann der Nutzer otDnsAddressResponseGet{Item}()-Funktionen zusammen mit dem aResponse-Zeiger verwenden, um weitere Informationen zur Antwort zu erhalten.

Der aResponse-Zeiger kann nur innerhalb dieses Callbacks verwendet werden und bleibt nach der Rückkehr von dieser Funktion nicht mehr gültig, sodass der Nutzer den aResponse-Zeiger NICHT für die spätere Verwendung beibehalten DARF.

Das aError kann Folgendes haben:

Details
Parameter
[in] aError
Das Ergebnis der DNS-Transaktion.
[in] aResponse
Ein Zeiger auf die Antwort (ist immer nicht NULL).
[in] aContext
Ein Zeiger auf einen anwendungsspezifischen Kontext.

  • OT_ERROR_NONE Eine Antwort wurde empfangen.
  • OT_ERROR_ABORT Eine DNS-Transaktion wurde vom Stack abgebrochen.
  • OT_ERROR_ANSWER_TIMEOUT Es wurde keine DNS-Antwort innerhalb des Zeitlimits empfangen.

Wenn der Server die Anfrage zur Adressauflösung ablehnt, wird der Fehlercode des Servers wie folgt zugeordnet:

  • (0) NOERROR Erfolgreich (keine Fehlerbedingung) -> OT_ERROR_NONE
  • (1) FORMERR Server kann aufgrund eines Formatfehlers nicht interpretiert werden -> OT_ERROR_PARSE
  • (2) SERVFAIL-Server hat einen internen Fehler festgestellt -> OT_ERROR_FAILED
  • (3) NXDOMAIN-Name, der vorhanden sein sollte, existiert jedoch nicht -> OT_ERROR_NOT_FOUND
  • (4) NOTIMP Server unterstützt nicht den Abfragetyp (OpCode) -> OT_ERROR_NOT_IMPLEMENTED
  • (5) REFUSED Server abgelehnt aus Richtlinien-/Sicherheitsgründen -> OT_ERROR_SECURITY
  • (6) YXDOMAIN Ein Name, der nicht vorhanden sein sollte, ist vorhanden -> OT_ERROR_DUPLICATED
  • (7) YXRRSET Einige RRset-Werte, die nicht vorhanden sein sollten, ist vorhanden -> OT_ERROR_DUPLICATED
  • (8) NXRRSET Einige RRset-Werte, die vorhanden sein sollten, ist nicht vorhanden -> OT_ERROR_NOT_FOUND
  • (9) NOTAUTH-Dienst ist nicht autoritativ für Zone -> OT_ERROR_SECURITY
  • (10) NOTZONE A Name ist nicht in der Zone enthalten -> OT_ERROR_PARSE
  • (20) BADNAME Falscher Name -> OT_ERROR_PARSE
  • (21) BADALG Schlechter Algorithmus -> OT_ERROR_SECURITY
  • (22) BADTRUN Falsche Kürzung -> OT_ERROR_PARSE
  • Andere Antwortcodes -> OT_ERROR_FAILED

otDnsAddressResponse

struct otDnsAddressResponse otDnsAddressResponse

Eine intransparente Darstellung einer Antwort auf eine DNS-Abfrage zur Adressauflösung.

Zeiger auf eine Instanz dieses Typs werden vom Callback otDnsAddressCallback bereitgestellt.

otDnsBrowseCallback

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

Pointer wird aufgerufen, wenn eine DNS-Antwort für eine Suchabfrage (Serviceinstanz-Enumeration) empfangen wird.

Innerhalb dieses Callbacks kann der Nutzer otDnsBrowseResponseGet{Item}()-Funktionen zusammen mit dem aResponse-Zeiger verwenden, um weitere Informationen zur Antwort zu erhalten.

Der aResponse-Zeiger kann nur innerhalb dieses Callbacks verwendet werden und bleibt nach der Rückkehr von dieser Funktion nicht mehr gültig, sodass der Nutzer den aResponse-Zeiger NICHT für die spätere Verwendung beibehalten DARF.

Die vollständige Liste der möglichen Werte für aError finden Sie unter otDnsAddressCallback().

Details
Parameter
[in] aError
Das Ergebnis der DNS-Transaktion.
[in] aResponse
Ein Zeiger auf die Antwort (ist immer nicht NULL).
[in] aContext
Ein Zeiger auf einen anwendungsspezifischen Kontext.

otDnsBrowseResponse

struct otDnsBrowseResponse otDnsBrowseResponse

Eine intransparente Darstellung einer Antwort auf eine Browser-DNS-Abfrage (Dienstinstanzaufzählung).

Zeiger auf eine Instanz dieses Typs werden vom Callback otDnsBrowseCallback bereitgestellt.

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

Stellt eine DNS-Abfragekonfiguration dar.

Jedes Feld in dieser Struktur kann auf null gesetzt werden, um anzuzeigen, dass es nicht angegeben ist. Wie die nicht angegebenen Felder behandelt werden, hängt von der Funktion ab, die die Instanz von otDnsQueryConfig verwendet.

otDnsServiceCallback

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

Pointer wird aufgerufen, wenn eine DNS-Antwort auf eine Anfrage zur Auflösung einer Dienstinstanz eingeht.

Innerhalb dieses Callbacks kann der Nutzer otDnsServiceResponseGet{Item}()-Funktionen zusammen mit dem aResponse-Zeiger verwenden, um weitere Informationen zur Antwort zu erhalten.

Der aResponse-Zeiger kann nur innerhalb dieses Callbacks verwendet werden und bleibt nach der Rückkehr von dieser Funktion nicht mehr gültig, sodass der Nutzer den aResponse-Zeiger NICHT für die spätere Verwendung beibehalten DARF.

Die vollständige Liste der möglichen Werte für aError finden Sie unter otDnsAddressCallback().

Details
Parameter
[in] aError
Das Ergebnis der DNS-Transaktion.
[in] aResponse
Ein Zeiger auf die Antwort (ist immer nicht NULL).
[in] aContext
Ein Zeiger auf einen anwendungsspezifischen Kontext.

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

Stellt Informationen zu einer DNS-Dienstinstanz bereit.

otDnsServiceResponse

struct otDnsServiceResponse otDnsServiceResponse

Eine intransparente Darstellung einer Antwort auf eine DNS-Abfrage zur Auflösung einer Dienstinstanz.

Zeiger auf eine Instanz dieses Typs werden vom Callback otDnsAddressCallback bereitgestellt.

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

Stellt einen TXT-Eintrageintrag dar, der ein Schlüssel/Wert-Paar darstellt (RFC 6763 – Abschnitt 6.3).

Der Stringzwischenspeicher, auf den mKey und mValue verweisen, MÜSSEN beibehalten werden und unverändert bleiben, nachdem eine Instanz dieser Struktur an OpenThread (als Teil der otSrpClientService-Instanz) übergeben wurde.

In otSrpClientService wird ein Array mit otDnsTxtEntry-Einträgen verwendet, um den vollständigen TXT-Eintrag (eine Liste der Einträge) anzugeben.

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

Stellt einen iterator für TXT-Eintragseinträge (Schlüssel/Wert-Paare) dar.

Die Datenfelder in dieser Struktur sind für die Verwendung durch den OpenThread-Kern vorgesehen und der Aufrufer sollte sie weder lesen noch ändern.

Funktionen

otDnsAddressResponseGetAddress

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

Ruft eine IPv6-Adresse ab, die mit einer DNS-Antwort mit einer Adressauflösung verknüpft ist.

DÜRFEN nur ab otDnsAddressCallback verwendet werden.

Die Antwort kann mehrere IPv6-Adresseinträge enthalten. Mit aIndex kann die Liste der Adressen iteriert werden. Index Null ruft die erste Adresse ab usw. Wenn wir das Ende der Liste erreichen, wird OT_ERROR_NOT_FOUND zurückgegeben.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[in] aIndex
Der abzurufende Adresseintragsindex.
[out] aAddress
Ein Zeiger auf eine IPv6-Adresse für die Ausgabe der Adresse (DARF NICHT NULL sein).
[out] aTtl
Ein Zeiger auf eine uint32_t, um die TTL für die Adresse auszugeben. Sie kann NULL sein, wenn der Aufrufer die TTL nicht abrufen möchte.
Rückgabewerte
OT_ERROR_NONE
Die Adresse wurde gelesen.
OT_ERROR_NOT_FOUND
Kein Adressdatensatz in aResponse unter aIndex.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.
OT_ERROR_INVALID_STATE
Kein NAT64-Präfix (nur anwendbar, wenn NAT64 zulässig ist).

otDnsAddressResponseGetHostName

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

Ruft den vollständigen Hostnamen ab, der einer DNS-Antwort mit einer Adressauflösung zugeordnet ist.

DÜRFEN nur ab otDnsAddressCallback verwendet werden.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[out] aNameBuffer
Ein Puffer für das Zeichen-Array, um den vollständigen Hostnamen auszugeben (DARF NICHT NULL sein).
[in] aNameBufferSize
Die Größe von aNameBuffer.
Rückgabewerte
OT_ERROR_NONE
Der vollständige Hostname wurde gelesen.
OT_ERROR_NO_BUFS
Der Name passt nicht in aNameBuffer.

otDnsBrowseResponseGetHostAddress

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

Ruft die IPv6-Adresse des Hosts aus einer Antwort des DNS-Durchsuchens (Serviceinstanz-Enumeration) ab.

DÜRFEN nur ab otDnsBrowseCallback verwendet werden.

Die Antwort kann null oder mehr IPv6-Adresseinträge enthalten. Mit aIndex kann die Liste der Adressen iteriert werden. Index Null ruft die erste Adresse ab usw. Wenn wir das Ende der Liste erreichen, wird OT_ERROR_NOT_FOUND zurückgegeben.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[in] aHostName
Der Hostname zum Abrufen der Adresse (DARF NICHT NULL sein).
[in] aIndex
Der abzurufende Adresseintragsindex.
[out] aAddress
Ein Zeiger auf eine IPv6-Adresse für die Ausgabe der Adresse (DARF NICHT NULL sein).
[out] aTtl
Ein Zeiger auf eine uint32_t, um die TTL für die Adresse auszugeben. Sie kann NULL sein, wenn der Aufrufer die TTL nicht abrufen möchte.
Rückgabewerte
OT_ERROR_NONE
Die Adresse wurde gelesen.
OT_ERROR_NOT_FOUND
Kein Adresseintrag für aHostname in aResponse bei aIndex.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.

otDnsBrowseResponseGetServiceInfo

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

Ruft Informationen zu einer Dienstinstanz aus einer Antwort des DNS-Browsers (Dienstinstanzaufzählung) ab.

DÜRFEN nur ab otDnsBrowseCallback verwendet werden.

Eine Antwort auf die DNS-Abfrage kann SRV-, TXT- und AAAA-Einträge für die aufgeführten Dienstinstanzen enthalten. Dies ist ein SOLLTE UND nicht zwingend erforderlich und Server/Resolver sind nicht dazu verpflichtet. Diese Funktion versucht, diese Informationen für eine bestimmte Dienstinstanz abzurufen, sofern verfügbar.

  • Wenn in aResponse kein übereinstimmender SRV-Eintrag gefunden wird, wird OT_ERROR_NOT_FOUND zurückgegeben. In diesem Fall werden keine zusätzlichen Einträge (kein TXT und/oder AAAA) gelesen.
  • Wenn in aResponse ein übereinstimmender SRV-Eintrag gefunden wird, wird aServiceInfo aktualisiert und OT_ERROR_NONE zurückgegeben.
  • Wenn in aResponse kein übereinstimmender TXT-Eintrag gefunden wird, wird mTxtDataSize in aServiceInfo auf null gesetzt.
  • Wenn die TXT-Daten länger als mTxtDataSize sind, wird sie teilweise gelesen und mTxtDataTruncated wird auf "true" gesetzt.
  • Wenn in aResponse kein übereinstimmender AAAA-Eintrag gefunden wird, 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().

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[in] aInstanceLabel
Das Label der Dienstinstanz (DARF NICHT NULL sein).
[out] aServiceInfo
Ein ServiceInfo zur Ausgabe der Informationen zur Dienstinstanz (DARF NICHT NULL sein).
Rückgabewerte
OT_ERROR_NONE
Die Informationen zur Dienstinstanz wurden gelesen. aServiceInfo wurde aktualisiert.
OT_ERROR_NOT_FOUND
Für aInstanceLabel wurde kein übereinstimmender SRV-Eintrag gefunden.
OT_ERROR_NO_BUFS
Der Hostname und/oder die TXT-Daten passen nicht in den gegebenen Puffer.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.

otDnsBrowseResponseGetServiceInstance

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

Ruft eine Dienstinstanz ab, die mit einer Antwort des DNS-Browsers (Dienstinstanzauflistung) verknüpft ist.

DÜRFEN nur ab otDnsBrowseCallback verwendet werden.

Die Antwort kann mehrere Serviceinstanzeinträge enthalten. Mit aIndex kann die Liste iteriert werden. Index 0 gibt den ersten Datensatz an. Wenn wir das Ende der Liste erreichen, wird OT_ERROR_NOT_FOUND zurückgegeben.

Beachten Sie, dass diese Funktion das Serviceinstanzlabel und nicht den vollständigen Serviceinstanznamen im Format .. abruft.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[in] aIndex
Der abzurufende Dienstinstanzeintragsindex.
[out] aLabelBuffer
Ein Puffer für ein char-Array, um das Dienstinstanzlabel auszugeben (DARF NICHT NULL sein).
[in] aLabelBufferSize
Die Größe von aLabelBuffer.
Rückgabewerte
OT_ERROR_NONE
Die Dienstinstanz wurde gelesen.
OT_ERROR_NO_BUFS
Der Name passt nicht in aNameBuffer.
OT_ERROR_NOT_FOUND
Kein Dienstinstanzeintrag in aResponse bei aIndex.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.

otDnsBrowseResponseGetServiceName

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

Ruft den Dienstnamen ab, der mit einer Antwort des DNS-Browsers (Dienstinstanzaufzählung) verknüpft ist.

DÜRFEN nur ab otDnsBrowseCallback verwendet werden.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[out] aNameBuffer
Ein Puffer für das Zeichen-Array, um den Dienstnamen auszugeben (DARF NICHT NULL sein).
[in] aNameBufferSize
Die Größe von aNameBuffer.
Rückgabewerte
OT_ERROR_NONE
Der Dienstname wurde gelesen.
OT_ERROR_NO_BUFS
Der Name passt nicht in aNameBuffer.

otDnsClientBrowse

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

Sendet eine DNS-Suchanfrage (Dienstinstanzaufzählung) für einen bestimmten Dienstnamen.

Ist verfügbar, wenn OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE aktiviert ist.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration (aus otDnsClientGetDefaultConfig()) als Konfiguration für diese Abfrage verwendet. In einer Nicht-NULL-aConfig können einige Felder nicht angegeben werden (Wert null). Die nicht angegebenen Felder werden dann durch die Werte aus der Standardkonfiguration ersetzt.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aServiceName
Der Dienstname, der abgefragt werden soll (DARF NICHT NULL sein).
[in] aCallback
Ein Funktionszeiger, der beim Empfang einer Antwort oder bei einer Zeitüberschreitung aufgerufen wird.
[in] aContext
Ein Zeiger auf beliebige Kontextinformationen.
[in] aConfig
Ein Zeiger auf die Konfiguration, die für diese Abfrage verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gesendet. aCallback wird aufgerufen, um den Status zu melden.
OT_ERROR_NO_BUFS
Nicht genügend Puffer zum Vorbereiten und Senden der Abfrage.

otDnsClientGetDefaultConfig

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

Ruft die aktuelle Standardabfragekonfiguration ab, die vom DNS-Client verwendet wird.

Wenn der OpenThread-Stack gestartet wird, wird die Standardkonfiguration für DNS-Abfragen aus einer Reihe von OT-Konfigurationsoptionen wie OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS, _DEFAULT_SERVER_PORT, _DEFAULT_RESPONSE_TIMEOUT usw. bestimmt (siehe config/dns_client.h für alle zugehörigen Konfigurationsoptionen).

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
Rückgabe
Ein Zeiger auf die aktuelle Standardkonfiguration, die vom DNS-Client verwendet wird.

otDnsClientResolveAddress

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

Sendet eine DNS-Abfrage zur Adressauflösung für AAAA-Einträge (IPv6) für einen bestimmten Hostnamen.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration (aus otDnsClientGetDefaultConfig()) als Konfiguration für diese Abfrage verwendet. In einer Nicht-NULL-aConfig können einige Felder nicht angegeben werden (Wert null). Die nicht angegebenen Felder werden dann durch die Werte aus der Standardkonfiguration ersetzt.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aHostName
Der Hostname, für den die Adresse abgefragt werden soll (DARF NICHT NULL sein).
[in] aCallback
Ein Funktionszeiger, der beim Empfang einer Antwort oder bei einer Zeitüberschreitung aufgerufen wird.
[in] aContext
Ein Zeiger auf beliebige Kontextinformationen.
[in] aConfig
Ein Zeiger auf die Konfiguration, die für diese Abfrage verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gesendet. aCallback wird aufgerufen, um den Status zu melden.
OT_ERROR_NO_BUFS
Nicht genügend Puffer zum Vorbereiten und Senden der Abfrage.
OT_ERROR_INVALID_ARGS
Der Hostname hat kein gültiges Format.
OT_ERROR_INVALID_STATE
Die Abfrage kann nicht gesendet werden, da die Thread-Schnittstelle nicht aktiv ist.

otDnsClientResolveIp4Address

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

Sendet eine DNS-Abfrage zur Adressauflösung für A-Einträge (IPv4) für einen bestimmten Hostnamen.

Erfordert und ist verfügbar, wenn OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE aktiviert ist.

Wenn eine erfolgreiche Antwort eingeht, werden die Adressen von aCallback als übersetzte NAT64-IPv6-Versionen der IPv4-Adressen aus der Abfrageantwort zurückgegeben.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration (aus otDnsClientGetDefaultConfig()) als Konfiguration für diese Abfrage verwendet. In einer Nicht-NULL-aConfig können einige Felder nicht angegeben werden (Wert null). Die nicht angegebenen Felder werden dann durch die Werte aus der Standardkonfiguration ersetzt.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aHostName
Der Hostname, für den die Adresse abgefragt werden soll (DARF NICHT NULL sein).
[in] aCallback
Ein Funktionszeiger, der beim Empfang einer Antwort oder bei einer Zeitüberschreitung aufgerufen wird.
[in] aContext
Ein Zeiger auf beliebige Kontextinformationen.
[in] aConfig
Ein Zeiger auf die Konfiguration, die für diese Abfrage verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gesendet. aCallback wird aufgerufen, um den Status zu melden.
OT_ERROR_NO_BUFS
Nicht genügend Puffer zum Vorbereiten und Senden der Abfrage.
OT_ERROR_INVALID_ARGS
Der Hostname hat ein ungültiges Format oder NAT64 ist in der Konfiguration nicht aktiviert.
OT_ERROR_INVALID_STATE
Die Abfrage kann nicht gesendet werden, da die Thread-Schnittstelle nicht aktiv ist.

otDnsClientResolveService

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

Startet die Auflösung einer DNS-Dienstinstanz für eine bestimmte Dienstinstanz.

Ist verfügbar, wenn OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE aktiviert ist.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration (aus otDnsClientGetDefaultConfig()) als Konfiguration für diese Abfrage verwendet. In einer Nicht-NULL-aConfig können einige Felder nicht angegeben werden (Wert null). Die nicht angegebenen Felder werden dann durch die Werte aus der Standardkonfiguration ersetzt.

Die Funktion sendet Abfragen nach SRV- und/oder TXT-Einträgen für die angegebene Dienstinstanz. Mit dem Feld mServiceMode in otDnsQueryConfig wird festgelegt, welche Datensätze abgefragt werden (nur SRV, nur TXT oder sowohl SRV als auch TXT) und wie die Abfrage durchgeführt wird (gemeinsam in derselben Nachricht, separat, separat oder im optimierten Modus, wobei der Client zuerst in derselben Nachricht versucht und dann separat, wenn keine Antwort erfolgt).

Der SRV-Eintrag enthält Informationen über Dienstport, Priorität und Gewichtung zusammen mit dem Hostnamen, der der Dienstinstanz zugeordnet ist. Diese Funktion führt keine Adressauflösung für den Hostnamen durch, der aus dem SRV-Eintrag erkannt wurde. Der Server/Resolver kann AAAA/A-Einträge für den Hostnamen im Abschnitt „Zusätzliche Daten“ der Antwort auf die SRV/TXT-Anfrage bereitstellen. Diese Informationen können mit otDnsServiceResponseGetServiceInfo() in otDnsServiceCallback abgerufen werden. Nutzer dieser API DÜRFEN NICHT davon ausgehen, dass die Hostadresse immer ab otDnsServiceResponseGetServiceInfo() verfügbar ist.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aInstanceLabel
Das Label der Dienstinstanz.
[in] aServiceName
Der Dienstname (zusammen mit aInstanceLabel für den vollständigen Instanznamen).
[in] aCallback
Ein Funktionszeiger, der beim Empfang einer Antwort oder bei einer Zeitüberschreitung aufgerufen wird.
[in] aContext
Ein Zeiger auf beliebige Kontextinformationen.
[in] aConfig
Ein Zeiger auf die Konfiguration, die für diese Abfrage verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gesendet. aCallback wird aufgerufen, um den Status zu melden.
OT_ERROR_NO_BUFS
Nicht genügend Puffer zum Vorbereiten und Senden der Abfrage.
OT_ERROR_INVALID_ARGS
aInstanceLabel ist NULL.

otDnsClientResolveServiceAndHostAddress

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

Startet eine Auflösung der DNS-Dienstinstanz für eine bestimmte Dienstinstanz mit einer möglichen Folgeadressenauflösung für den Hostnamen, der für die Dienstinstanz erkannt wurde.

Ist verfügbar, wenn OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE aktiviert ist.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration (aus otDnsClientGetDefaultConfig()) als Konfiguration für diese Abfrage verwendet. In einer Nicht-NULL-aConfig können einige Felder nicht angegeben werden (Wert null). Die nicht angegebenen Felder werden dann durch die Werte aus der Standardkonfiguration ersetzt. Diese Funktion kann nicht mit mServiceMode in der DNS-Konfiguration verwendet werden, die auf OT_DNS_SERVICE_MODE_TXT festgelegt ist (d.h. nur für die Abfrage eines TXT-Eintrags) und gibt OT_ERROR_INVALID_ARGS zurück.

Verhält sich ähnlich wie otDnsClientResolveService()-Anfragen nach SRV- und TXT-Einträgen. Wenn der Server/Resolver jedoch im Abschnitt „Zusätzliche Daten“ keine AAAA/A-Einträge für den Hostnamen für den Hostnamen bereitstellt, führt er eine Auflösung des Hostnamens (durch Senden einer AAAA-Abfrage) für den im SRV-Eintrag gefundenen Hostnamen aus. Der Callback aCallback wird aufgerufen, wenn Antworten für alle Anfragen empfangen werden, d.h. sowohl die Dienst- als auch die Hostadresse-Auflösung abgeschlossen ist.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aInstanceLabel
Das Label der Dienstinstanz.
[in] aServiceName
Der Dienstname (zusammen mit aInstanceLabel für den vollständigen Instanznamen).
[in] aCallback
Ein Funktionszeiger, der beim Empfang einer Antwort oder bei einer Zeitüberschreitung aufgerufen wird.
[in] aContext
Ein Zeiger auf beliebige Kontextinformationen.
[in] aConfig
Ein Zeiger auf die Konfiguration, die für diese Abfrage verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gesendet. aCallback wird aufgerufen, um den Status zu melden.
OT_ERROR_NO_BUFS
Nicht genügend Puffer zum Vorbereiten und Senden der Abfrage.
OT_ERROR_INVALID_ARGS
aInstanceLabel ist NULL oder aConfig ist ungültig.

otDnsClientSetDefaultConfig

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

Legt die Standardabfragekonfiguration auf dem DNS-Client fest.

aConfig kann NULL sein. In diesem Fall wird die Standardkonfiguration auf die Standardwerte der OT-Konfigurationsoptionen (OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}) festgelegt. Dadurch wird die Standardabfragekonfiguration beim Start des OpenThread-Stacks auf die Konfiguration zurückgesetzt.

In einem aConfig ungleich NULL kann der Aufrufer einige Felder in der otDnsQueryConfig-Instanz nicht angegeben lassen (Wert null). Die nicht angegebenen Felder werden durch die entsprechenden Optionsdefinitionen der OT-Konfiguration OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} ersetzt, um die Standardabfragekonfiguration zu bilden.

Wenn OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE aktiviert ist, wird die IPv6-Adresse des Servers in der Standardkonfiguration automatisch vom DNS-Client festgelegt und aktualisiert. Dies geschieht nur, wenn der Nutzer dies nicht explizit festlegt oder angibt. Für dieses Verhalten müssen der SRP-Client und die automatische Startfunktion aktiviert sein. Der SRP-Client überwacht dann die Thread-Netzwerkdaten auf DNS-/SRP-Diensteinträge, um einen SRP-Server auszuwählen. Die ausgewählte SRP-Serveradresse wird in der Standardkonfiguration auch als DNS-Serveradresse festgelegt.

Details
Parameter
[in] aInstance
Ein Zeiger auf eine OpenThread-Instanz.
[in] aConfig
Ein Verweis auf die neue Abfragekonfiguration, die als Standard verwendet werden soll.

otDnsEncodeTxtData

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

Codiert eine bestimmte Liste von TXT-Eintragseinträgen (Schlüssel/Wert-Paare) in TXT-Daten im durch RFC 6763 angegebenen Format.

Details
Parameter
[in] aTxtEntries
Zeiger auf ein Array von otDnsTxtEntry.
[in] aNumTxtEntries
Anzahl der Einträge im Array aTxtEntries.
[out] aTxtData
Ein Zeiger auf einen Puffer, um die codierten TXT-Daten auszugeben.
[in,out] aTxtDataLength
Bei Eingabe die Größe des Puffers aTxtData. Bei der Ausgabe die Länge der codierten TXT-Daten.
Rückgabewerte
OT_ERROR_NONE
Die codierten TXT-Daten wurden erfolgreich codiert. aTxtData und aTxtDataLength werden aktualisiert.
OT_ERROR_INVALID_ARGS
aTxtEntries ist ungültig.
OT_ERROR_NO_BUS
Die codierten Daten konnten nicht in den aTxtData-Puffer mit ihren aTxtDataLength aufgenommen werden.

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

Parst die TXT-Daten von einem Iteration und ruft den nächsten TXT-Eintrageintrag (Schlüssel/Wert-Paar) ab.

Die aIterator MUSS mit otDnsInitTxtEntryIterator() initialisiert werden, bevor diese Funktion aufgerufen wird. Der TXT-Datenzwischenspeicher, der zur Initialisierung des Iterators verwendet wird, MUSS beibehalten werden und unverändert bleiben. Andernfalls ist das Verhalten dieser Funktion nicht definiert.

Wenn die Länge des geparsten Schlüsselstrings kleiner oder gleich OT_DNS_TXT_KEY_ITER_MAX_LENGTH ist, wird der Schlüsselstring in mKey in aEntry zurückgegeben. Ist der Schlüssel jedoch länger, wird mKey auf NULL gesetzt und der gesamte codierte TXT-Eintragsstring wird in mValue und mValueLength zurückgegeben.

Details
Parameter
[in] aIterator
Ein Zeiger auf den Iterator (DARF NICHT NULL sein).
[out] aEntry
Ein Zeiger auf eine otDnsTxtEntry-Struktur, um den geparsten/gelesenen Eintrag auszugeben (DARF NICHT NULL sein).
Rückgabewerte
OT_ERROR_NONE
Der nächste Eintrag wurde erfolgreich geparst. aEntry wurde aktualisiert.
OT_ERROR_NOT_FOUND
Keine weiteren Einträge in den TXT-Daten.
OT_ERROR_PARSE
Die TXT-Daten von aIterator sind nicht korrekt formatiert.

otDnsInitTxtEntryIterator

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

Initialisiert einen TXT-Datensatziterator.

Der Zwischenspeicherzeiger aTxtData und sein Inhalt MÜSSEN beibehalten werden und unverändert bleiben, während das aIterator-Objekt verwendet wird.

Details
Parameter
[in] aIterator
Ein Zeiger auf den zu initialisierenden Iterator (DARF NICHT NULL sein).
[in] aTxtData
Ein Zeiger zum Zwischenspeichern mit den codierten TXT-Daten.
[in] aTxtDataLength
Die Länge (Anzahl der Byte) von aTxtData.

otDnsIsNameCompressionEnabled

bool otDnsIsNameCompressionEnabled(
  void
)

Gibt an, ob der Modus „DNS-Namenskomprimierung“ aktiviert ist oder nicht.

Dies ist nur für Tests vorgesehen und verfügbar, wenn die OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE-Konfiguration aktiviert ist.

Details
Rückgabe
TRUE, wenn der Modus „DNS-Namenskomprimierung“ aktiviert ist, andernfalls FALSE.

otDnsServiceResponseGetHostAddress

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

Ruft die IPv6-Hostadresse aus der Antwort zur Auflösung einer DNS-Dienstinstanz ab.

DÜRFEN nur ab otDnsServiceCallback verwendet werden.

Die Antwort kann null oder mehr IPv6-Adresseinträge enthalten. Mit aIndex kann die Liste der Adressen iteriert werden. Index Null ruft die erste Adresse ab usw. Wenn wir das Ende der Liste erreichen, wird OT_ERROR_NOT_FOUND zurückgegeben.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[in] aHostName
Der Hostname zum Abrufen der Adresse (DARF NICHT NULL sein).
[in] aIndex
Der abzurufende Adresseintragsindex.
[out] aAddress
Ein Zeiger auf eine IPv6-Adresse für die Ausgabe der Adresse (DARF NICHT NULL sein).
[out] aTtl
Ein Zeiger auf eine uint32_t, um die TTL für die Adresse auszugeben. Sie kann NULL sein, wenn der Aufrufer die TTL nicht abrufen möchte.
Rückgabewerte
OT_ERROR_NONE
Die Adresse wurde gelesen.
OT_ERROR_NOT_FOUND
Kein Adresseintrag für aHostname in aResponse bei aIndex.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.

otDnsServiceResponseGetServiceInfo

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

Ruft Informationen zu einer Dienstinstanz aus der Antwort zur Auflösung einer DNS-Dienstinstanz ab.

DARF nur über ein otDnsServiceCallback verwendet werden, das von otDnsClientResolveService() oder otDnsClientResolveServiceAndHostAddress() ausgelöst wird.

Wenn dies in einem otDnsClientResolveService()-Callback verwendet wird, kann die DNS-Antwort des Servers/Resolvers im Abschnitt „Zusätzliche Daten“ AAAA-Einträge für den Hostnamen enthalten, der mit der aufgelösten Serviceinstanz verknüpft ist. Dies ist eine SOLLTE und nicht zwingend erforderlich, daher sind keine Server/Resolver erforderlich, um diese Informationen bereitzustellen. Diese Funktion versucht, AAAA-Einträge zu parsen, wenn sie in der Antwort enthalten sind. Wenn er nicht enthalten ist, wird mHostAddress auf alle Nullen (keine Adresse) gesetzt. Um auch die Hostadresse aufzulösen, kann der Nutzer die DNS-Client-API-Funktion otDnsClientResolveServiceAndHostAddress() verwenden, die eine Dienstauflösung gefolgt von einer Abfrage zur Auflösung des Hostnamens durchführt (wenn in der SRV-Anfrageantwort keine AAAA-Einträge vom Server/Resolver bereitgestellt werden).

  • Wenn in aResponse ein übereinstimmender SRV-Eintrag gefunden wird, wird aServiceInfo aktualisiert.
  • Wird kein übereinstimmender SRV-Eintrag gefunden, wird OT_ERROR_NOT_FOUND zurückgegeben, es sei denn, in der Abfragekonfiguration für diese Abfrage wurde OT_DNS_SERVICE_MODE_TXT für mServiceMode verwendet. Die Anfrage betraf also nur den TXT-Eintrag. In diesem Fall versuchen wir immer noch, den SRV-Eintrag aus dem Abschnitt „Additional Data“ (Zusätzliche Daten) der Antwort zu parsen (falls der Server die Informationen bereitgestellt hat).
  • Wenn in aResponse kein übereinstimmender TXT-Eintrag gefunden wird, wird mTxtDataSize in aServiceInfo auf null gesetzt.
  • Wenn die TXT-Daten länger als mTxtDataSize sind, wird sie teilweise gelesen und mTxtDataTruncated wird auf "true" gesetzt.
  • Wenn in aResponse kein übereinstimmender AAAA-Eintrag gefunden wird, 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()`.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[out] aServiceInfo
Ein ServiceInfo zur Ausgabe der Informationen zur Dienstinstanz (DARF NICHT NULL sein).
Rückgabewerte
OT_ERROR_NONE
Die Informationen zur Dienstinstanz wurden gelesen. aServiceInfo wurde aktualisiert.
OT_ERROR_NOT_FOUND
In aResponse wurde kein erforderlicher Datensatz gefunden.
OT_ERROR_NO_BUFS
Der Hostname und/oder die TXT-Daten passen nicht in den gegebenen Puffer.
OT_ERROR_PARSE
Die Datensätze im aResponse konnten nicht geparst werden.

otDnsServiceResponseGetServiceName

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

Ruft den Namen der Dienstinstanz ab, der mit einer Antwort zur Auflösung einer DNS-Dienstinstanz verknüpft ist.

DÜRFEN nur ab otDnsServiceCallback verwendet werden.

Details
Parameter
[in] aResponse
Ein Zeiger auf die Antwort.
[out] aLabelBuffer
Ein Puffer für ein char-Array, um das Dienstinstanzlabel auszugeben (DARF NICHT NULL sein).
[in] aLabelBufferSize
Die Größe von aLabelBuffer.
[out] aNameBuffer
Ein Zwischenspeicher zum char-Array, um den Rest des Dienstnamens auszugeben (kann NULL sein, wenn der Nutzer nicht am Namen des Dienstes interessiert ist.
[in] aNameBufferSize
Die Größe von aNameBuffer.
Rückgabewerte
OT_ERROR_NONE
Der Dienstname wurde gelesen.
OT_ERROR_NO_BUFS
Das Label oder der Name passen nicht in den gegebenen Puffer.

otDnsSetNameCompressionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

Aktiviert/deaktiviert den Modus "DNS-Namenskomprimierung".

Die DNS-Namenskomprimierung ist standardmäßig aktiviert. Wenn diese Option deaktiviert ist, werden DNS-Namen als vollständige und nie komprimiert angehängt. Dies gilt für die DNS- und SRP-Client/Server-Module von OpenThread.

Dies ist nur für Tests vorgesehen und verfügbar, wenn die OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE-Konfiguration aktiviert ist.

Im Fall von OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE gilt dieser Modus für alle OpenThread-Instanzen.Wenn Sie diese Funktion aufrufen, wird der Komprimierungsmodus also für alle OpenThread-Instanzen aktiviert bzw. deaktiviert.

Details
Parameter
[in] aEnabled
TRUE zum Aktivieren des Modus "DNS-Namenskomprimierung" und FALSE zum Deaktivieren.

Makros

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

Maximale Größe des Labelstrings (Null-Zeichen am Ende des Strings einfügen)

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

Maximale Größe des Namensstrings (einschließlich Nullzeichen am Ende des Strings).

OT_DNS_TXT_KEY_ITER_MAX_LENGTH

 OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64

Maximale Länge des TXT-Schlüsselstrings, der von otDnsTxtEntryIterator unterstützt wird.

OT_DNS_TXT_KEY_MAX_LENGTH

 OT_DNS_TXT_KEY_MAX_LENGTH 9

Empfohlene maximale Länge des TXT-Eintragsschlüsselstrings (RFC 6763 – Abschnitt 6.4).

OT_DNS_TXT_KEY_MIN_LENGTH

 OT_DNS_TXT_KEY_MIN_LENGTH 1

Mindestlänge des TXT-Eintragsschlüsselstrings (RFC 6763 – Abschnitt 6.4).

Ressourcen

OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.