Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

DNSv6

このモジュールには、DNS 通信を制御する関数が含まれています。

概要

このモジュールの関数は、機能 OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE が有効になっている場合にのみ使用できます。

列挙型

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
列挙型
この列挙型は、otDnsQueryConfig の NAT64 モードを表します。
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
列挙型
この列挙型は、otDnsQueryConfig の「Recursion Desired」(RD)フラグを表します。

Typedef

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) typedef
void(*
この関数ポインタは、アドレス解決クエリに対して DNS レスポンスが受信されたときに呼び出されます。
otDnsAddressResponse typedef
この型は、アドレス解決 DNS クエリに対するレスポンスの不透明な表現です。
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) typedef
void(*
この関数ポインタは、ブラウズ(サービス インスタンス列挙)クエリで DNS レスポンスが受信されたときに呼び出されます。
otDnsBrowseResponse typedef
このタイプは、参照(サービス インスタンス列挙)DNS クエリへのレスポンスの不透明な表現です。
otDnsQueryConfig typedef
この構造は、DNS クエリの構成を表します。
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) typedef
void(*
この関数ポインタは、サービス インスタンスの解決クエリに対して DNS レスポンスが受信されたときに呼び出されます。
otDnsServiceInfo typedef
この構造により、DNS サービス インスタンスの情報が提供されます。
otDnsServiceResponse typedef
このタイプは、サービス インスタンス解決 DNS クエリに対するレスポンスの不透明な表現です。
otDnsTxtEntry typedef
struct otDnsTxtEntry
この構造は、Key-Value ペア(RFC 6763 - セクション 6.3)を表す TXT レコード エントリを表します。
otDnsTxtEntryIterator typedef
この構造は、TXT レコード全体(Key-Value ペア)のイテレータを表します。

関数

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
この関数は、アドレス解決 DNS レスポンスに関連付けられた IPv6 アドレスを取得します。
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
この関数は、アドレス解決 DNS レスポンスに関連付けられた完全なホスト名を取得します。
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
この関数は、DNS ブラウズ(サービス インスタンス列挙)レスポンスからホスト IPv6 アドレスを取得します。
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
この関数は、DNS ブラウズ(サービス インスタンス列挙)レスポンスからサービス インスタンスの情報を取得します。
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
この関数は、DNS ブラウズ(サービス インスタンスの列挙)レスポンスに関連付けられたサービス インスタンスを取得します。
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
この関数は、DNS ブラウズ(サービス インスタンスの列挙)レスポンスに関連付けられたサービス名を取得します。
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
この関数は、指定されたサービス名に対する DNS ブラウズ(サービス インスタンスの列挙)クエリを送信します。
otDnsClientGetDefaultConfig(otInstance *aInstance)
この関数は、DNS クライアントによって使用されている現在のデフォルトのクエリ構成を取得します。
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
この関数は、特定のホスト名の AAAA(IPv6)レコードのアドレス解決 DNS クエリを送信します。
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
この関数は、特定のホスト名に対する A(IPv4)レコードのアドレス解決 DNS クエリを送信します。
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
この関数は、特定のサービス インスタンスに対する DNS サービス インスタンスの解決クエリを送信します。
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
この関数は、DNS クライアントでデフォルトのクエリ構成を設定します。
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
この関数は、イテレータから TXT データを解析し、次の TXT レコード エントリ(Key-Value ペア)を取得します。
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
この関数は、TXT レコード イテレータを初期化します。
otDnsIsNameCompressionEnabled(void)
bool
この関数は、「DNS 名圧縮」モードが有効かどうかを示します。
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
この関数は、DNS サービス インスタンスの解決レスポンスからホストの IPv6 アドレスを取得します。
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
この関数は、DNS サービス インスタンスの解決レスポンスからサービス インスタンスの情報を取得します。
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
この関数は、DNS サービス インスタンスの解決レスポンスに関連付けられたサービス インスタンス名を取得します。
otDnsSetNameCompressionEnabled(bool aEnabled)
void
この関数は、「DNS 名圧縮」モードを有効または無効にします。

構造体

otDnsQueryConfig

この構造は、DNS クエリの構成を表します。

otDnsServiceInfo

この構造により、DNS サービス インスタンスの情報が提供されます。

otDnsTxtEntry

この構造は、Key-Value ペア(RFC 6763 - セクション 6.3)を表す TXT レコード エントリを表します。

otDnsTxtEntryIterator

この構造は、TXT レコード全体(Key-Value ペア)のイテレータを表します。

列挙型

otDnsNat64Mode

 otDnsNat64Mode

この列挙型は、otDnsQueryConfig の NAT64 モードを表します。

NAT64 モードは、DNS クライアント アドレス解決中に NAT64 アドレス変換を許可するか許可しないかを示します。このモードは、OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE が有効になっている場合にのみ使用されます。

プロパティ
OT_DNS_NAT64_ALLOW

DNS クライアント アドレス解決中に NAT64 アドレス変換を許可します。

OT_DNS_NAT64_DISALLOW

DNS クライアント アドレス解決中に NAT64 アドレス変換を許可しない。

OT_DNS_NAT64_UNSPECIFIED

NAT64 モードが指定されていません。デフォルトの NAT64 モードを使用します。

otDnsRecursionFlag(警告)

 otDnsRecursionFlag

この列挙型は、otDnsQueryConfig の「Recursion Desired」(RD)フラグを表します。

プロパティ
OT_DNS_FLAG_NO_RECURSION

DNS ネームサーバーがクエリを再帰的に解決できないことを示します。

OT_DNS_FLAG_RECURSION_DESIRED

DNS ネームサーバーがクエリを再帰的に解決できることを示します。

OT_DNS_FLAG_UNSPECIFIED

フラグが指定されていないことを示します。

Typedef

otDnsAddressCallback を使用する

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

この関数ポインタは、アドレス解決クエリに対して DNS レスポンスが受信されたときに呼び出されます。

このコールバック内で、otDnsAddressResponseGet{Item}() 関数と aResponse ポインタを使用して、レスポンスに関する詳細情報を取得できます。

aResponse ポインタはこのコールバック内でのみ使用できます。この関数から戻ると、有効なままではないため、ユーザーは後で使用するために aResponse ポインタを保持してはなりません。

aError には次のものを含めることができます。

詳細
パラメータ
[in] aError
DNS トランザクションの結果。
[in] aResponse
レスポンスへのポインタ(常に NULL 以外です)。
[in] aContext
アプリ固有のコンテキストへのポインタ。

  • OT_ERROR_NONE レスポンスが正常に受信されました。
  • OT_ERROR_ABORT DNS トランザクションがスタックによって中止されました。
  • OT_ERROR_RESPONSE_TIMEOUT タイムアウト内に DNS レスポンスを受信していません。

サーバーがアドレス解決リクエストを拒否した場合、サーバーのエラーコードは次のようにマッピングされます。

  • (0)NOERROR 成功(エラー状態なし)-> OT_ERROR_NONE
  • (1)フォーマット エラー -> OT_ERROR_PARSE により、FORMERR サーバーが解釈できません
  • (2)SERVFAIL サーバーで内部エラーが発生した -> OT_ERROR_FAILED
  • (3)存在しないはずの NXDOMAIN の名前 -> OT_ERROR_NOT_FOUND
  • (4)NOTIMP Server は、Query Type(OpCode) -> OT_ERROR_NOT_IMPLEMENTED をサポートしていない
  • (5)ポリシーまたはセキュリティ上の理由で REFUSED サーバーが拒否された -> OT_ERROR_SECURITY
  • (6)YXDOMAIN 存在しないはずの名前が存在する -> OT_ERROR_DUPLICATED
  • (7)YXRRSET 存在しないはずの RRset が存在します -> OT_ERROR_DUPLICATED
  • (8)NXRRSET 存在しない RRset が存在しません -> OT_ERROR_NOT_FOUND
  • (9) NOTAUTH サービスはゾーンで信頼できるものではありません -> OT_ERROR_SECURITY
  • (10)NOTZONE 名前がゾーンにありません -> OT_ERROR_PARSE
  • (20)BADNAME 不正な名前 -> OT_ERROR_PARSE
  • (21)BADALG 不正なアルゴリズム -> OT_ERROR_SECURITY
  • (22)BADTRUN 不正な切り捨て -> OT_ERROR_PARSE
  • その他のレスポンス コード -> OT_ERROR_FAILED

otDnsAddressResponse(OTDnsAddressResponse)

struct otDnsAddressResponse otDnsAddressResponse

この型は、アドレス解決 DNS クエリに対するレスポンスの不透明な表現です。

この型のインスタンスへのポインタは、コールバック otDnsAddressCallback から提供されます。

otDnsBrowseCallback(英語)

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

この関数ポインタは、ブラウズ(サービス インスタンス列挙)クエリで DNS レスポンスが受信されたときに呼び出されます。

このコールバック内で、otDnsBrowseResponseGet{Item}() 関数と aResponse ポインタを使用して、レスポンスに関する詳細情報を取得できます。

aResponse ポインタはこのコールバック内でのみ使用できます。この関数から戻ると、有効なままではないため、ユーザーは後で使用するために aResponse ポインタを保持してはなりません。

aError に使用可能な値の完全なリストについては、otDnsAddressCallback() をご覧ください。

詳細
パラメータ
[in] aError
DNS トランザクションの結果。
[in] aResponse
レスポンスへのポインタ(常に NULL 以外です)。
[in] aContext
アプリ固有のコンテキストへのポインタ。

otDnsBrowseResponse

struct otDnsBrowseResponse otDnsBrowseResponse

このタイプは、参照(サービス インスタンス列挙)DNS クエリへのレスポンスの不透明な表現です。

この型のインスタンスへのポインタは、コールバック otDnsBrowseCallback から提供されます。

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

この構造は、DNS クエリの構成を表します。

この構造体のフィールドはすべてゼロに設定して、指定されていないことを示します。指定されていないフィールドの処理方法は、otDnsQueryConfig のインスタンスを使用する関数によって決まります。

otDnsServiceCallback を使用する

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

この関数ポインタは、サービス インスタンスの解決クエリに対して DNS レスポンスが受信されたときに呼び出されます。

このコールバック内で、otDnsServiceResponseGet{Item}() 関数と aResponse ポインタを使用して、レスポンスに関する詳細情報を取得できます。

aResponse ポインタはこのコールバック内でのみ使用できます。この関数から戻ると、有効なままではないため、ユーザーは後で使用するために aResponse ポインタを保持してはなりません。

aError に使用可能な値の完全なリストについては、otDnsAddressCallback() をご覧ください。

詳細
パラメータ
[in] aError
DNS トランザクションの結果。
[in] aResponse
レスポンスへのポインタ(常に NULL 以外です)。
[in] aContext
アプリ固有のコンテキストへのポインタ。

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

この構造により、DNS サービス インスタンスの情報が提供されます。

otDnsServiceResponse(英語)

struct otDnsServiceResponse otDnsServiceResponse

このタイプは、サービス インスタンス解決 DNS クエリに対するレスポンスの不透明な表現です。

この型のインスタンスへのポインタは、コールバック otDnsAddressCallback から提供されます。

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

この構造は、Key-Value ペア(RFC 6763 - セクション 6.3)を表す TXT レコード エントリを表します。

mKeymValue が参照する文字列バッファは、そのような構造体のインスタンスが OpenThread に(otSrpClientService インスタンスの一部として)渡された後も維持され、変化しないようにする必要があります。

otSrpClientService では、otDnsTxtEntry エントリの配列を使用して完全な TXT レコード(エントリのリスト)を指定します。

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

この構造は、TXT レコード全体(Key-Value ペア)のイテレータを表します。

この構造体のデータ フィールドは OpenThread コアでの使用を意図しており、呼び出し元はこれらを読み取ったり変更したりしないでください。

関数

otDnsAddressResponseGetAddress(宛先)

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

この関数は、アドレス解決 DNS レスポンスに関連付けられた IPv6 アドレスを取得します。

この関数は otDnsAddressCallback からのみ使用する必要があります。

レスポンスには複数の IPv6 アドレス レコードを含めることができます。aIndex を使用すると、アドレスのリストを反復処理できます。インデックス 0 では最初のアドレスが取得され、以下同様に続きます。リストの最後に到達すると、OT_ERROR_NOT_FOUND が返されます。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[in] aIndex
取得する住所レコードのインデックス。
[out] aAddress
アドレスを出力する IPv6 アドレスへのポインタ(NULL にはしないでください)。
[out] aTtl
アドレスの TTL を出力する uint32_t へのポインタ。呼び出し元が TTL を取得しない場合は、NULL が返されることがあります。
戻り値
OT_ERROR_NONE
アドレスが正常に読み取られました。
OT_ERROR_NOT_FOUND
aResponseaIndex の住所レコードはありません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。
OT_ERROR_INVALID_STATE
NAT64 プレフィックスがありません(NAT64 が許可されている場合のみ該当)。

otDnsAddressResponseGetHostName(英語)

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

この関数は、アドレス解決 DNS レスポンスに関連付けられた完全なホスト名を取得します。

この関数は otDnsAddressCallback からのみ使用する必要があります。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[out] aNameBuffer
完全なホスト名を出力するための文字配列へのバッファ(NULL にはしないでください)。
[in] aNameBufferSize
aNameBuffer のサイズ。
戻り値
OT_ERROR_NONE
完全なホスト名が正常に読み取られました。
OT_ERROR_NO_BUFS
この名前は aNameBuffer に収まりません。

otDnsBrowseResponseGetHostAddress

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

この関数は、DNS ブラウズ(サービス インスタンス列挙)レスポンスからホスト IPv6 アドレスを取得します。

この関数は otDnsBrowseCallback からのみ使用する必要があります。

レスポンスには 0 個以上の IPv6 アドレス レコードを含めることができます。aIndex を使用すると、アドレスのリストを反復処理できます。インデックス 0 では最初のアドレスが取得され、以下同様に続きます。リストの最後に到達すると、OT_ERROR_NOT_FOUND が返されます。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[in] aHostName
アドレスを取得するホスト名(NULL にはしないでください)。
[in] aIndex
取得する住所レコードのインデックス。
[out] aAddress
アドレスを出力する IPv6 アドレスへのポインタ(NULL にはしないでください)。
[out] aTtl
アドレスの TTL を出力する uint32_t へのポインタ。呼び出し元が TTL を取得しない場合は、NULL が返されることがあります。
戻り値
OT_ERROR_NONE
アドレスが正常に読み取られました。
OT_ERROR_NOT_FOUND
aHostname」の住所レコード(aResponseaIndex)はありません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。

otDnsBrowseResponseGetServiceInfo(OTDnsBrowseResponseGetServiceInfo)

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

この関数は、DNS ブラウズ(サービス インスタンス列挙)レスポンスからサービス インスタンスの情報を取得します。

この関数は otDnsBrowseCallback からのみ使用する必要があります。

参照 DNS レスポンスには、列挙されているサービス インスタンスの SRV、TXT、AAAA レコードを含める必要があります(これは必須ではなく、すべきです)。この関数は、利用可能な場合に、指定されたサービス インスタンスのこの情報を取得しようとします。

  • aResponse に一致する SRV レコードが見つからない場合は、OT_ERROR_NOT_FOUND が返されます。
  • aResponse で一致する SRV レコードが見つかった場合、aServiceInfo が更新され、OT_ERROR_NONE が返されます。
  • aResponse に一致する TXT レコードが見つからない場合、aServiceInfomTxtDataSize はゼロに設定されます。
  • 一致する AAAA レコードが aResponse で見つからない場合、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()`

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[in] aInstanceLabel
サービス インスタンス ラベル(NULL にはしないでください)。
[out] aServiceInfo
サービス インスタンス情報を出力する ServiceInfo(NULL にはしないでください)。
戻り値
OT_ERROR_NONE
サービス インスタンス情報が読み取られました。aServiceInfo が更新されました。
OT_ERROR_NOT_FOUND
aInstanceLabel に一致する SRV レコードが見つかりませんでした。
OT_ERROR_NO_BUFS
ホスト名や TXT データが指定したバッファに収まりません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。

otDnsBrowseResponseGetServiceInstance(OTDnsBrowseResponseGetServiceInstance)

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

この関数は、DNS ブラウズ(サービス インスタンスの列挙)レスポンスに関連付けられたサービス インスタンスを取得します。

この関数は otDnsBrowseCallback からのみ使用する必要があります。

レスポンスに複数のサービス インスタンス レコードを含めることができます。aIndex を使用すると、リストを反復処理できます。インデックス 0 は、最初のレコードを提供します。リストの最後に到達すると、OT_ERROR_NOT_FOUND が返されます。

この関数では、.. のような完全なサービス インスタンス名ではなく、サービス インスタンス ラベルを取得します。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[in] aIndex
取得するサービス インスタンスのレコード インデックス。
[out] aLabelBuffer
サービス インスタンス ラベルを出力する(文字は NULL ではない)文字配列へのバッファ。
[in] aLabelBufferSize
aLabelBuffer のサイズ。
戻り値
OT_ERROR_NONE
サービス インスタンスが正常に読み取られました。
OT_ERROR_NO_BUFS
この名前は aNameBuffer に収まりません。
OT_ERROR_NOT_FOUND
aResponseaIndex にサービス インスタンス レコードはありません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。

otDnsBrowseResponseGetServiceName(英語)

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

この関数は、DNS ブラウズ(サービス インスタンスの列挙)レスポンスに関連付けられたサービス名を取得します。

この関数は otDnsBrowseCallback からのみ使用する必要があります。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[out] aNameBuffer
サービス名を出力するための文字配列へのバッファ(NULL にはしないでください)。
[in] aNameBufferSize
aNameBuffer のサイズ。
戻り値
OT_ERROR_NONE
サービス名が正常に読み取られました。
OT_ERROR_NO_BUFS
この名前は aNameBuffer に収まりません。

otDnsClientBrowse

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

この関数は、指定されたサービス名に対する DNS ブラウズ(サービス インスタンスの列挙)クエリを送信します。

この関数は、OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE が有効な場合に利用できます。

aConfig は NULL にできます。この場合、デフォルトの構成(otDnsClientGetDefaultConfig() から)がこのクエリの構成として使用されます。NULL 以外の aConfig では、一部のフィールドを未指定のままにすることができます(値がゼロ)。未指定フィールドは、デフォルトの構成の値に置き換えられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aServiceName
クエリ対象のサービス名(NULL にはしないでください)。
[in] aCallback
レスポンスの受信時またはタイムアウト時に呼び出す関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
[in] aConfig
このクエリに使用する構成へのポインタ。
戻り値
OT_ERROR_NONE
クエリを送信しました。ステータスを報告するために、aCallback が呼び出されます。
OT_ERROR_NO_BUFS
クエリを準備して送信するためのバッファが不十分です。

otDnsClientGetDefaultConfig(その他)

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

この関数は、DNS クライアントによって使用されている現在のデフォルトのクエリ構成を取得します。

OpenThread スタックが開始すると、デフォルトの DNS クエリ構成は、OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS_DEFAULT_SERVER_PORT_DEFAULT_RESPONSE_TIMEOUT などの OT 構成オプションのセットから決定されます(関連するすべての構成オプションについては、config/dns_client.h をご覧ください)。 。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
戻り値
DNS クライアントで使用されている現在のデフォルト構成へのポインタ。

otDnsClientResolveAddress(OTDnsClientResolveAddress)

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

この関数は、特定のホスト名の AAAA(IPv6)レコードのアドレス解決 DNS クエリを送信します。

aConfig は NULL にできます。この場合、デフォルトの構成(otDnsClientGetDefaultConfig() から)がこのクエリの構成として使用されます。NULL 以外の aConfig では、一部のフィールドを未指定のままにすることができます(値がゼロ)。未指定フィールドは、デフォルトの構成の値に置き換えられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aHostName
住所を照会するホスト名(NULL にはしないでください)。
[in] aCallback
レスポンスの受信時またはタイムアウト時に呼び出す関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
[in] aConfig
このクエリに使用する構成へのポインタ。
戻り値
OT_ERROR_NONE
クエリを送信しました。ステータスを報告するために、aCallback が呼び出されます。
OT_ERROR_NO_BUFS
クエリを準備して送信するためのバッファが不十分です。
OT_ERROR_INVALID_ARGS
ホスト名の形式が無効です。
OT_ERROR_INVALID_STATE
Thread インターフェースが有効でないため、クエリを送信できません。

otDnsClientResolveIp4Address(OTDnsClientResolveIp4Address)

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

この関数は、特定のホスト名に対する A(IPv4)レコードのアドレス解決 DNS クエリを送信します。

この関数は OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE が有効な場合に必須で、使用できます。

成功のレスポンスを受信すると、アドレスは aCallback から IPv6 アドレスの NAT64 IPv6 変換バージョン(クエリ レスポンス)として返されます。

aConfig は NULL にできます。この場合、デフォルトの構成(otDnsClientGetDefaultConfig() から)がこのクエリの構成として使用されます。NULL 以外の aConfig では、一部のフィールドを未指定のままにすることができます(値がゼロ)。未指定フィールドは、デフォルトの構成の値に置き換えられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aHostName
住所を照会するホスト名(NULL にはしないでください)。
[in] aCallback
レスポンスの受信時またはタイムアウト時に呼び出す関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
[in] aConfig
このクエリに使用する構成へのポインタ。
戻り値
OT_ERROR_NONE
クエリを送信しました。ステータスを報告するために、aCallback が呼び出されます。
OT_ERROR_NO_BUFS
クエリを準備して送信するためのバッファが不十分です。
OT_ERROR_INVALID_ARGS
ホスト名が有効な形式ではないか、構成で NAT64 が有効になっていません。
OT_ERROR_INVALID_STATE
Thread インターフェースが有効でないため、クエリを送信できません。

otDnsClientResolveService(OTDnsClientResolveService)

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

この関数は、特定のサービス インスタンスに対する DNS サービス インスタンスの解決クエリを送信します。

この関数は、OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE が有効な場合に利用できます。

aConfig は NULL にできます。この場合、デフォルトの構成(otDnsClientGetDefaultConfig() から)がこのクエリの構成として使用されます。NULL 以外の aConfig では、一部のフィールドを未指定のままにすることができます(値がゼロ)。未指定フィールドは、デフォルトの構成の値に置き換えられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aInstanceLabel
サービス インスタンスのラベル。
[in] aServiceName
サービス名(aInstanceLabel と合わせて完全なインスタンス名)。
[in] aCallback
レスポンスの受信時またはタイムアウト時に呼び出す関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
[in] aConfig
このクエリに使用する構成へのポインタ。
戻り値
OT_ERROR_NONE
クエリを送信しました。ステータスを報告するために、aCallback が呼び出されます。
OT_ERROR_NO_BUFS
クエリを準備して送信するためのバッファが不十分です。
OT_ERROR_INVALID_ARGS
aInstanceLabel が NULL である。

otDnsClientSetDefaultConfig

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

この関数は、DNS クライアントでデフォルトのクエリ構成を設定します。

注: 進行中のクエリでは、開始時から構成が引き続き使用されます。今後のデフォルト DNS クエリには、新しいデフォルト構成が使用されます。aConfig は NULL にできます。この場合、デフォルトの構成は OT 構成オプション OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} からデフォルトに設定されます。これにより、OpenThread スタックが開始したときに、デフォルトのクエリ構成が構成に戻されます。

NULL 以外の aConfig では、呼び出し元は otDnsQueryConfig インスタンスの一部のフィールドを未指定のままにすることもできます(値 0)。未指定のフィールドは、対応する OT 構成オプションの定義 OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} に置き換えられ、デフォルトのクエリ構成が形成されます。

OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE を有効にすると、デフォルト構成でサーバーの IPv6 アドレスが自動的に設定され、DNS クライアントによって更新されます。これは、ユーザーが明示的に設定または指定していない場合にのみ行われます。この動作を実現するには、SRP クライアントとその自動スタート機能を有効にする必要があります。その後、SRP クライアントは DNS/SRP サービス エントリのスレッド ネットワーク データをモニタリングし、SRP サーバーを選択します。選択した SRP サーバーのアドレスも、デフォルト設定の DNS サーバー アドレスとして設定されます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aConfig
デフォルトとして使用する新しいクエリ構成へのポインタ。

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

この関数は、イテレータから TXT データを解析し、次の TXT レコード エントリ(Key-Value ペア)を取得します。

この関数を呼び出す前に aIteratorotDnsInitTxtEntryIterator() を使用して初期化しなければならず、イテレータの初期化に使用される TXT データバッファは維持され、変更されないままでなければなりません。それ以外の場合、この関数の動作は定義されていません。

解析されたキー文字列の長さが OT_DNS_TXT_KEY_MAX_LENGTH(推奨される最大キー長)以下の場合、aEntrymKey でキー文字列が返されます。ただし、鍵が長い場合は mKey が NULL に設定され、エンコードされた TXT エントリ文字列全体が mValuemValueLength に返されます。

詳細
パラメータ
[in] aIterator
イテレータへのポインタ(NULL にはしないでください)。
[out] aEntry
解析された/読み取りエントリを出力する otDnsTxtEntry 構造体へのポインタ(NULL にはしないでください)。
戻り値
OT_ERROR_NONE
次のエントリが正常に解析されました。aEntry が更新されました。
OT_ERROR_NOT_FOUND
TXT データのエントリがありません。
OT_ERROR_PARSE
aIterator の TXT データの形式が正しくありません。

otDnsInitTxtEntryIterator

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

この関数は、TXT レコード イテレータを初期化します。

バッファ ポインタ aTxtData とそのコンテンツは、aIterator オブジェクトを使用している間は保持され、変更されないままにする必要があります。

詳細
パラメータ
[in] aIterator
初期化するイテレータへのポインタ(NULL にはしないでください)。
[in] aTxtData
エンコードされた TXT データを含むバッファへのポインタ。
[in] aTxtDataLength
aTxtData の長さ(バイト数)。

otDnsIsNameCompressionEnabled(OTD の有効化)

bool otDnsIsNameCompressionEnabled(
  void
)

この関数は、「DNS 名圧縮」モードが有効かどうかを示します。

これはテストのみを目的としており、OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 構成が有効な場合にのみ使用できます。

詳細
戻り値
「DNS 名圧縮」モードが有効になっている場合は TRUE、それ以外の場合は FALSE。

otDnsServiceResponseGetHostAddress(英語)

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

この関数は、DNS サービス インスタンスの解決レスポンスからホストの IPv6 アドレスを取得します。

この関数は otDnsServiceCallback からのみ使用する必要があります。

レスポンスには 0 個以上の IPv6 アドレス レコードを含めることができます。aIndex を使用すると、アドレスのリストを反復処理できます。インデックス 0 では最初のアドレスが取得され、以下同様に続きます。リストの最後に到達すると、OT_ERROR_NOT_FOUND が返されます。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[in] aHostName
アドレスを取得するホスト名(NULL にはしないでください)。
[in] aIndex
取得する住所レコードのインデックス。
[out] aAddress
アドレスを出力する IPv6 アドレスへのポインタ(NULL にはしないでください)。
[out] aTtl
アドレスの TTL を出力する uint32_t へのポインタ。呼び出し元が TTL を取得しない場合は、NULL が返されることがあります。
戻り値
OT_ERROR_NONE
アドレスが正常に読み取られました。
OT_ERROR_NOT_FOUND
aHostname」の住所レコード(aResponseaIndex)はありません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。

otDnsServiceResponseGetServiceInfo(OTDnsServiceResponseGetServiceInfo)

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

この関数は、DNS サービス インスタンスの解決レスポンスからサービス インスタンスの情報を取得します。

この関数は otDnsServiceCallback からのみ使用する必要があります。

  • aResponse に一致する SRV レコードが見つからない場合は、OT_ERROR_NOT_FOUND が返されます。
  • aResponse で一致する SRV レコードが見つかった場合、aServiceInfo が更新され、OT_ERROR_NONE が返されます。
  • aResponse に一致する TXT レコードが見つからない場合、aServiceInfomTxtDataSize はゼロに設定されます。
  • 一致する AAAA レコードが aResponse で見つからない場合、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()`。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[out] aServiceInfo
サービス インスタンス情報を出力する ServiceInfo(NULL にはしないでください)。
戻り値
OT_ERROR_NONE
サービス インスタンス情報が読み取られました。aServiceInfo が更新されました。
OT_ERROR_NOT_FOUND
aResponse で、一致する SRV レコードが見つかりませんでした。
OT_ERROR_NO_BUFS
ホスト名や TXT データが指定したバッファに収まりません。
OT_ERROR_PARSE
aResponse のレコードを解析できませんでした。

otDnsServiceResponseGetServiceName(英語)

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

この関数は、DNS サービス インスタンスの解決レスポンスに関連付けられたサービス インスタンス名を取得します。

この関数は otDnsServiceCallback からのみ使用する必要があります。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[out] aLabelBuffer
サービス インスタンス ラベルを出力する(文字は NULL ではない)文字配列へのバッファ。
[in] aLabelBufferSize
aLabelBuffer のサイズ。
[out] aNameBuffer
残りのサービス名を出力する char 配列のバッファ(ユーザーが名前を取得しない場合は、NULL も可)。
[in] aNameBufferSize
aNameBuffer のサイズ。
戻り値
OT_ERROR_NONE
サービス名が正常に読み取られました。
OT_ERROR_NO_BUFS
ラベルまたは名前が指定されたバッファに収まりません。

otDnsSetNameCompressionEnabled(オットニ セット名の設定圧縮の有効化)

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

この関数は、「DNS 名圧縮」モードを有効または無効にします。

デフォルトでは、DNS 名の圧縮が有効になっています。無効にすると、DNS 名がフルとして追加されます。圧縮されることはありません。これは、OpenThread の DNS と SRP のクライアント/サーバー モジュールに適用されます。

これはテストのみを目的としており、OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 構成が有効な場合にのみ使用できます。

OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE を使用している場合、このモードはすべての OpenThread インスタンスに適用されます(つまり、この関数を呼び出すと、すべての OpenThread インスタンスに対して圧縮モードが有効または無効になります)。

詳細
パラメータ
[in] aEnabled
「DNS 名圧縮」モードを有効にする場合は TRUE、無効にする場合は FALSE。

マクロ

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

ラベル文字列の最大サイズ(文字列の末尾に null 文字を含む)。

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

名前文字列の最大サイズ(文字列の末尾に null 文字を含む)。

OT_DNS_TXT_KEY_MAX_LENGTH

 OT_DNS_TXT_KEY_MAX_LENGTH 9

TXT レコードのキー文字列の推奨最大長(RFC 6763 - セクション 6.4)。

OT_DNS_TXT_KEY_MIN_LENGTH

 OT_DNS_TXT_KEY_MIN_LENGTH 1

TXT レコードのキー文字列の最小の長さ(RFC 6763 - セクション 6.4)。

リソース

OpenThread API リファレンスのトピックは、GitHub で入手可能なソースコードに基づいています。 詳細またはドキュメントへの投稿については、リソースをご覧ください。