DNS
このモジュールには、DNS 通信を制御する機能が含まれています。
概要
このモジュールの関数は、機能 OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE
が有効になっている場合にのみ使用できます。
列挙型 |
|
---|---|
otDnsNat64Mode{
|
enum タイプは、 otDnsQueryConfig の NAT64 モードを表します。 |
otDnsRecursionFlag{
|
enum 型は、 otDnsQueryConfig 内の「Recursion Desired」(RD)フラグを表します。 |
otDnsServiceMode{
|
enum 型は、 otDnsQueryConfig 内のサービス解決モードを表します。 |
otDnsTransportProto{
|
enum タイプは、 otDnsQueryConfig 内の DNS トランスポート プロトコルを表します。 |
Typedef |
|
---|---|
otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext)
|
typedefvoid(*
アドレス解決クエリの DNS レスポンスを受信すると、ポインタが呼び出されます。 |
otDnsAddressResponse
|
typedefstruct otDnsAddressResponse
アドレス解決の DNS クエリに対するレスポンスの不透明な表現。 |
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)
|
typedefvoid(*
参照(サービス インスタンスの列挙)クエリの DNS レスポンスを受信すると、ポインタが呼び出されます。 |
otDnsBrowseResponse
|
typedefstruct otDnsBrowseResponse
ブラウズ(サービス インスタンスの列挙)DNS クエリに対するレスポンスの不透明な表現。 |
otDnsQueryConfig
|
typedefstruct otDnsQueryConfig
DNS クエリの構成を表します。 |
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)
|
typedefvoid(*
サービス インスタンス解決クエリの DNS レスポンスを受信すると、ポインタが呼び出されます。 |
otDnsServiceInfo
|
typedefstruct otDnsServiceInfo
DNS サービス インスタンスの情報を提供します。 |
otDnsServiceResponse
|
typedefstruct otDnsServiceResponse
サービス インスタンス解決の DNS クエリに対するレスポンスの不透明な表現。 |
otDnsTxtEntry
|
typedefstruct otDnsTxtEntry
Key-Value ペア(RFC 6763 - セクション 6.3)を表す TXT レコード エントリを表します。 |
otDnsTxtEntryIterator
|
typedefstruct otDnsTxtEntryIterator
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)
|
const otDnsQueryConfig *
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
は、以下のものを指定できます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
- 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()
をご覧ください。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
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()
をご覧ください。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
otDnsServiceResponse
struct otDnsServiceResponse otDnsServiceResponse
サービス インスタンス解決の DNS クエリに対するレスポンスの不透明な表現。
この型のインスタンスへのポインタは、コールバック otDnsAddressCallback
から提供されます。
otDnsTxtEntry
struct otDnsTxtEntry otDnsTxtEntry
Key-Value ペア(RFC 6763 - セクション 6.3)を表す TXT レコード エントリを表します。
mKey
と mValue
によってポイントされる文字列バッファは、そのような構造体のインスタンスが(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
が返されます。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otDnsAddressResponseGetHostName
otError otDnsAddressResponseGetHostName( const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize )
アドレス解決の DNS レスポンスに関連付けられている完全なホスト名を取得します。
otDnsAddressCallback
からのみ使用しなければなりません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
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
が返されます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
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 レコードが見つからない場合、aServiceInfo
のmTxtDataSize
はゼロに設定されます。- 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 using
otDnsBrowseResponseGetHostAddress()`。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otDnsBrowseResponseGetServiceInstance
otError otDnsBrowseResponseGetServiceInstance( const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize )
DNS 参照(サービス インスタンスの列挙)レスポンスに関連付けられたサービス インスタンスを取得します。
otDnsBrowseCallback
からのみ使用しなければなりません。
レスポンスには、複数のサービス インスタンス レコードが含まれる場合があります。aIndex
を使用すると、リストを反復処理できます。インデックス 0 は最初のレコードを示します。リストの最後に到達すると、OT_ERROR_NOT_FOUND
が返されます。
この関数は、
という形式の完全なサービス インスタンス名ではなく、サービス インスタンスのラベルを取得することに注意してください。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otDnsBrowseResponseGetServiceName
otError otDnsBrowseResponseGetServiceName( const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize )
DNS ブラウズ(サービス インスタンスの列挙)レスポンスに関連付けられたサービス名を取得します。
otDnsBrowseCallback
からのみ使用しなければなりません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
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
では、一部のフィールドを未指定(値ゼロ)のままにできます。未指定のフィールドは、その後、デフォルト構成の値に置き換えられます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
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
をご覧ください)。
詳細 | |||
---|---|---|---|
パラメータ |
|
||
戻り値 |
DNS クライアントで使用されている現在のデフォルト構成へのポインタ。
|
otDnsClientResolveAddress
otError otDnsClientResolveAddress( otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig )
指定されたホスト名の AAAA(IPv6)レコードに対してアドレス解決 DNS クエリを送信します。
aConfig
は NULL にできます。この場合、デフォルト構成(otDnsClientGetDefaultConfig()
から)がこのクエリの構成として使用されます。NULL 以外の aConfig
では、一部のフィールドを未指定(値ゼロ)のままにできます。未指定のフィールドは、その後、デフォルト構成の値に置き換えられます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
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
では、一部のフィールドを未指定(値ゼロ)のままにできます。未指定のフィールドは、その後、デフォルト構成の値に置き換えられます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
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 レコードのクエリを送信します。otDnsQueryConfig
の mServiceMode
フィールドでは、クエリするレコード(SRV のみ、TXT のみ、または SRV と TXT の両方)とクエリの実行方法(同じメッセージで並行して並行して個別に、またはクライアントが最初に同じメッセージを試行し、応答が得られなかった場合に個別に試行する最適化モード)のクエリの実行方法を決定します。
SRV レコードは、サービス インスタンスに関連付けられているホスト名、サービスポート、優先度、重みに関する情報を提供します。この関数は、SRV レコードから検出されたホスト名のアドレス解決を実行しません。サーバー/リゾルバは、SRV/TXT クエリのレスポンスの追加データ セクションでホスト名の AAAA/A レコードを指定できます。この情報は、otDnsServiceCallback
で otDnsServiceResponseGetServiceInfo()
を使用して取得できます。この API のユーザーは、ホストアドレスが常に otDnsServiceResponseGetServiceInfo()
から利用できると仮定してはなりません。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
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
は、すべてのクエリに対するレスポンスを受信したとき(つまり、サービスとホストのアドレス両方の解決が終了したときに呼び出されます)
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
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 サーバー アドレスとしても設定されます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
otDnsEncodeTxtData
otError otDnsEncodeTxtData( const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength )
TXT レコード エントリの指定されたリスト(Key-Value ペア)を TXT データ(RFC 6763 で規定されている形式)にエンコードします。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otDnsGetNextTxtEntry
otError otDnsGetNextTxtEntry( otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry )
イテレータから TXT データを解析して、次の TXT レコード エントリ(Key-Value ペア)を取得します。
aIterator
は、この関数を呼び出す前に otDnsInitTxtEntryIterator()
を使用して初期化しなければならず、イテレータの初期化に使用する TXT データバッファは保持され、変更されないままでなければなりません。それ以外の場合、この関数の動作は未定義です。
解析された鍵文字列の長さが OT_DNS_TXT_KEY_ITER_MAX_LENGTH
以下の場合、鍵文字列が aEntry
の mKey
で返されます。ただし、鍵が長くなる場合、mKey
は NULL に設定され、エンコードされた TXT エントリ文字列全体が mValue
と mValueLength
で返されます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
otDnsInitTxtEntryIterator
void otDnsInitTxtEntryIterator( otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength )
TXT レコード イテレータを初期化します。
バッファ ポインタ aTxtData
とその内容は、aIterator
オブジェクトが使用されている間、保持され、変更されないままでなければなりません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
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
が返されます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
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 レコードが見つからない場合、このクエリのクエリ構成で
mServiceMode
にOT_DNS_SERVICE_MODE_TXT
が使用されている場合を除き、OT_ERROR_NOT_FOUND
が返されます(つまり、リクエストが TXT レコードに対するもののみであることを意味します)。このケースでも、レスポンスの追加データ セクションの SRV レコードの解析が試みられます(サーバーから情報が提供された場合)。 aResponse
に一致する TXT レコードが見つからない場合、aServiceInfo
のmTxtDataSize
はゼロに設定されます。- 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 using
otDnsServiceResponseGetHostAddress() を使用します。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otDnsServiceResponseGetServiceName
otError otDnsServiceResponseGetServiceName( const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize )
DNS サービス インスタンス解決レスポンスに関連付けられたサービス インスタンス名を取得します。
otDnsServiceCallback
からのみ使用しなければなりません。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
otDnsSetNameCompressionEnabled
void otDnsSetNameCompressionEnabled( bool aEnabled )
「DNS 名圧縮」モードを有効または無効にします。
デフォルトでは、DNS 名圧縮は有効になっています。無効にすると、DNS 名は完全として追加され、圧縮されません。これは、OpenThread の DNS と SRP クライアント/サーバー モジュールに適用されます。
これはテスト専用で、OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
構成が有効になっている場合に利用できます。
なお、OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
を使用する場合、このモードはすべての OpenThread インスタンスに適用されます(つまり、この関数を呼び出すと、すべての OpenThread インスタンスで圧縮モードが有効または無効になります)。
詳細 | |||
---|---|---|---|
パラメータ |
|
マクロ
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 で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。