DNS

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

概要

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

列挙型

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
enum
タイプは、otDnsQueryConfig の NAT64 モードを表します。
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
enum
型は、otDnsQueryConfig 内の「Recursion Desired」(RD)フラグを表します。
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
型は、otDnsQueryConfig 内のサービス解決モードを表します。
otDnsTransportProto{
  OT_DNS_TRANSPORT_UDP = 1,
  OT_DNS_TRANSPORT_TCP = 2
}
enum
タイプは、otDnsQueryConfig 内の DNS トランスポート プロトコルを表します。

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 サービス インスタンスの解決を開始します。
otDnsClientResolveServiceAndHostAddress(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
指定されたサービス インスタンスの DNS サービス インスタンスの解決を開始します。その際、サービス インスタンスで検出されたホスト名のフォローアップ アドレス解決が行われる可能性もあります。
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
DNS クライアントのデフォルトのクエリ構成を設定します。
otDnsEncodeTxtData(const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength)
TXT レコード エントリの指定されたリスト(Key-Value ペア)を TXT データ(RFC 6763 で規定されている形式)にエンコードします。
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

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

otDnsServiceMode

 otDnsServiceMode

型は、otDnsQueryConfig 内のサービス解決モードを表します。

これは、DNS クライアント サービスの解決 otDnsClientResolveService() 時にのみ使用されます。クエリ対象のレコードタイプを決定します。

プロパティ
OT_DNS_SERVICE_MODE_SRV

SRV レコードのみのクエリ。

OT_DNS_SERVICE_MODE_SRV_TXT

同じメッセージで SRV レコードと TXT レコードの両方をクエリします。

OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE

まず TXT と SRV を一緒にクエリし、失敗した場合は個別にクエリします。

OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE

別々のメッセージを使用して SRV と TXT の複数のクエリを並列処理します。

OT_DNS_SERVICE_MODE_TXT

TXT レコードのみのクエリを実行します。

OT_DNS_SERVICE_MODE_UNSPECIFIED

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

otDnsTransportProto

 otDnsTransportProto

タイプは、otDnsQueryConfig 内の DNS トランスポート プロトコルを表します。

この OT_DNS_TRANSPORT_TCP は、OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE が有効になっている場合にのみサポートされます。

プロパティ
OT_DNS_TRANSPORT_TCP

DNS クエリは UDP 経由で送信する必要があります。

OT_DNS_TRANSPORT_UDP

DNS トランスポートが指定されていません。

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)FORMERR サーバーが形式エラーにより解釈できない -> OT_ERROR_PARSE
  • (2)SERVFAIL サーバーで内部エラーが発生しました -> OT_ERROR_FAILED
  • (3)存在するはずの NXDOMAIN 名が存在しません -> OT_ERROR_NOT_FOUND
  • (4)NOTIMP サーバーがクエリタイプ(オペコード)をサポートしていない -> 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

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 によってポイントされる文字列バッファは、そのような構造体のインスタンスが(otSrpClientService インスタンスの一部として)OpenThread に渡された後も保持され、変更されないままでなければなりません。

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
完全なホスト名を出力するための char 配列のバッファ(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
aResponseaIndex に住所「aHostname」の住所レコードがありません。
OT_ERROR_PARSE
aResponse 内のレコードを解析できませんでした。

otDnsBrowseResponseGetServiceInfo

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

DNS 参照(サービス インスタンスの列挙)レスポンスからサービス インスタンスの情報を取得します。

otDnsBrowseCallback からのみ使用しなければなりません。

DNS 参照レスポンスには、列挙されたサービス インスタンスの SRV、TXT、AAAA レコードを含めることができます。これは「すべき」であり、「しなければならない」要件ではなく、サーバー/リゾルバはこれを提供する必要はありません。この関数は、指定されたサービス インスタンスのこの情報を取得しようとします(利用可能な場合)。

  • aResponse に一致する SRV レコードが見つからない場合は、OT_ERROR_NOT_FOUND が返されます。この場合、それ以上のレコード(TXT、AAAA、またはその両方)は読み込まれません。
  • 一致する SRV レコードが aResponse で見つかった場合は、aServiceInfo が更新され、OT_ERROR_NONE が返されます。
  • aResponse に一致する TXT レコードが見つからない場合、aServiceInfomTxtDataSize はゼロに設定されます。
  • TXT データの長さが mTxtDataSize より大きい場合、部分的な読み取りが行われ、mTxtDataTruncated が true に設定されます。
  • aResponse で一致する 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()`。

詳細
パラメータ
[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

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
サービス インスタンス ラベルを出力するための char 配列のバッファ(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
サービス名を出力するための char 配列のバッファ(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

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

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

指定されたホスト名の A(IPv4)レコードのアドレス解決 DNS クエリを送信します。

必須であり、OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE が有効な場合に利用可能です。

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

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

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 では、一部のフィールドを未指定(値ゼロ)のままにできます。未指定のフィールドは、その後、デフォルト構成の値に置き換えられます。

この関数は、指定されたサービス インスタンスの SRV レコードや TXT レコードのクエリを送信します。otDnsQueryConfigmServiceMode フィールドでは、クエリするレコード(SRV のみ、TXT のみ、または SRV と TXT の両方)とクエリの実行方法(同じメッセージで並行して並行して個別に、またはクライアントが最初に同じメッセージを試行し、応答が得られなかった場合に個別に試行する最適化モード)のクエリの実行方法を決定します。

SRV レコードは、サービス インスタンスに関連付けられているホスト名、サービスポート、優先度、重みに関する情報を提供します。この関数は、SRV レコードから検出されたホスト名のアドレス解決を実行しません。サーバー/リゾルバは、SRV/TXT クエリのレスポンスの追加データ セクションでホスト名の AAAA/A レコードを指定できます。この情報は、otDnsServiceCallbackotDnsServiceResponseGetServiceInfo() を使用して取得できます。この API のユーザーは、ホストアドレスが常に otDnsServiceResponseGetServiceInfo() から利用できると仮定してはなりません。

詳細
パラメータ
[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 である。

otDnsClientResolveServiceAndHostAddress

otError otDnsClientResolveServiceAndHostAddress(
  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 では、一部のフィールドを未指定(値ゼロ)のままにできます。未指定のフィールドは、その後、デフォルト構成の値に置き換えられます。この関数は、OT_DNS_SERVICE_MODE_TXT に設定されている DNS 構成の mServiceMode では使用できません(つまり、TXT レコードのみをクエリします)。OT_ERROR_INVALID_ARGS を返します。

動作は、SRV レコードや TXT レコードのクエリを送信する otDnsClientResolveService() と同様です。ただし、SRV クエリへの応答(追加データ セクション内)でホスト名の AAAA/A レコードを指定しなかった場合、サーバー/リゾルバは SRV レコードから検出されたホスト名のホスト名解決(AAAA クエリを送信)を実行します。コールバック aCallback は、すべてのクエリに対するレスポンスを受信したとき(つまり、サービスとホストのアドレス両方の解決が終了したときに呼び出されます)

詳細
パラメータ
[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 であるか、aConfig が無効です。

otDnsClientSetDefaultConfig

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

DNS クライアントのデフォルトのクエリ構成を設定します。

aConfig は NULL にできます。この場合、デフォルト構成は OT 構成オプション OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} のデフォルトに設定されます。これにより、OpenThread スタックの開始時にデフォルトのクエリ構成が元の構成にリセットされます。

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

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

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

otDnsEncodeTxtData

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

TXT レコード エントリの指定されたリスト(Key-Value ペア)を TXT データ(RFC 6763 で規定されている形式)にエンコードします。

詳細
パラメータ
[in] aTxtEntries
otDnsTxtEntry の配列へのポインタ。
[in] aNumTxtEntries
aTxtEntries 配列内のエントリ数。
[out] aTxtData
エンコードされた TXT データを出力するためのバッファへのポインタ。
[in,out] aTxtDataLength
入力時、バッファのサイズ aTxtData。出力時のエンコードされた TXT データの長さ。
戻り値
OT_ERROR_NONE
エンコードされた TXT データが正常にエンコードされました。aTxtDataaTxtDataLength が更新されました。
OT_ERROR_INVALID_ARGS
aTxtEntries が無効です。
OT_ERROR_NO_BUS
エンコードされたデータは、aTxtDataLengthaTxtData バッファに格納できませんでした。

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

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

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

解析された鍵文字列の長さが OT_DNS_TXT_KEY_ITER_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

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
aResponseaIndex に住所「aHostname」の住所レコードがありません。
OT_ERROR_PARSE
aResponse 内のレコードを解析できませんでした。

otDnsServiceResponseGetServiceInfo

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

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

otDnsClientResolveService() または otDnsClientResolveServiceAndHostAddress() からトリガーされた otDnsServiceCallback からのみ使用しなければなりません。

これを otDnsClientResolveService() コールバックから使用する場合、サーバー/リゾルバからの DNS レスポンスでは、解決されるサービス インスタンスに関連付けられたホスト名の AAAA レコードが [Additional Data] セクションに表示されることがあります。これは「すべき」であり、「しなければならない」要件ではないため、サーバー/リゾルバはこれを提供する必要はありません。この関数は、レスポンスに含まれている AAAA レコードの解析を試みます。指定しない場合、mHostAddress がすべてゼロ(未指定のアドレス)に設定されます。ホストアドレスも解決するために、ユーザーは DNS クライアント API 関数 otDnsClientResolveServiceAndHostAddress() を使用できます。この関数によりサービス解決が実行され、その後にホスト名アドレス解決クエリが続きます(SRV クエリ レスポンスでサーバー/リゾルバから AAAA レコードが提供されていない場合)。

  • 一致する SRV レコードが aResponse で見つかると、aServiceInfo が更新されます。
  • 一致する SRV レコードが見つからない場合、このクエリのクエリ構成で mServiceModeOT_DNS_SERVICE_MODE_TXT が使用されている場合を除き、OT_ERROR_NOT_FOUND が返されます(つまり、リクエストが TXT レコードに対するもののみであることを意味します)。このケースでも、レスポンスの追加データ セクションの SRV レコードの解析が試みられます(サーバーから情報が提供された場合)。
  • aResponse に一致する TXT レコードが見つからない場合、aServiceInfomTxtDataSize はゼロに設定されます。
  • TXT データの長さが mTxtDataSize より大きい場合、部分的な読み取りが行われ、mTxtDataTruncated が true に設定されます。
  • aResponse で一致する 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() を使用します。

詳細
パラメータ
[in] aResponse
レスポンスへのポインタ。
[out] aServiceInfo
サービス インスタンス情報を出力する ServiceInfo(NULL であってはなりません)。
戻り値
OT_ERROR_NONE
サービス インスタンス情報が読み取られました。aServiceInfo が更新されました。
OT_ERROR_NOT_FOUND
aResponse に必要なレコードが見つかりませんでした。
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
サービス インスタンス ラベルを出力するための char 配列のバッファ(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_ITER_MAX_LENGTH

 OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64

otDnsTxtEntryIterator でサポートされる TXT 鍵文字列の最大長。

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 で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。