DNS
Этот модуль включает в себя функции, управляющие связью DNS.
Краткое содержание
Функции этого модуля доступны только в том случае, если включена функция OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE
.
Перечисления | |
---|---|
otDnsNat64Mode { | перечисление Тип представляет режим NAT64 в otDnsQueryConfig . |
otDnsRecursionFlag { | перечисление Тип представляет флаг «Желательная рекурсия» (RD) в otDnsQueryConfig . |
otDnsServiceMode { | перечисление Тип представляет режим разрешения службы в otDnsQueryConfig . |
otDnsTransportProto { | перечисление Тип представляет транспортный протокол DNS в otDnsQueryConfig . |
Определения типов | |
---|---|
otDnsAddressCallback )(otError aError, const otDnsAddressResponse *aResponse, void *aContext) | определение типаvoid(* Указатель вызывается, когда получен ответ DNS на запрос разрешения адреса. |
otDnsAddressResponse | определение типаstruct otDnsAddressResponse Непрозрачное представление ответа на DNS-запрос разрешения адреса. |
otDnsBrowseCallback )(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) | определение типаvoid(* Указатель вызывается, когда получен ответ DNS на запрос просмотра (перечисления экземпляров службы). |
otDnsBrowseResponse | определение типаstruct otDnsBrowseResponse Непрозрачное представление ответа на DNS-запрос просмотра (перечисления экземпляров службы). |
otDnsQueryConfig | определение типаstruct otDnsQueryConfig Представляет конфигурацию DNS-запроса. |
otDnsServiceCallback )(otError aError, const otDnsServiceResponse *aResponse, void *aContext) | определение типаvoid(* Указатель вызывается, когда получен ответ DNS на запрос разрешения экземпляра службы. |
otDnsServiceInfo | определение типаstruct otDnsServiceInfo Предоставляет информацию для экземпляра службы DNS. |
otDnsServiceResponse | определение типаstruct otDnsServiceResponse Непрозрачное представление ответа на DNS-запрос разрешения экземпляра службы. |
otDnsTxtEntry | определение типаstruct otDnsTxtEntry Представляет запись TXT, представляющую пару ключ-значение (RFC 6763 — раздел 6.3). |
otDnsTxtEntryIterator | определение типаstruct otDnsTxtEntryIterator Представляет итератор для записей TXT (пары «ключ-значение»). |
Функции | |
---|---|
otDnsAddressResponseGetAddress (const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl) | Получает адрес IPv6, связанный с ответом DNS разрешения адресов. |
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) | Получает IPv6-адрес узла из ответа DNS-обзора (перечисления экземпляров службы). |
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) | Отправляет DNS-запрос разрешения адреса для записей AAAA (IPv6) для заданного имени хоста. |
otDnsClientResolveIp4Address ( otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig) | Отправляет DNS-запрос разрешения адреса для записей A (IPv4) для заданного имени хоста. |
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 (пары ключ/значение) в данные TXT (следующий формат, указанный в RFC 6763). |
otDnsGetNextTxtEntry ( otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry) | Анализирует данные TXT из итератора и получает следующую запись TXT (пару ключ/значение). |
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) | Получает IPv6-адрес узла из ответа на разрешение экземпляра службы DNS. |
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-имен». |
Структуры | |
---|---|
отднскуерконфиг | Представляет конфигурацию DNS-запроса. |
отДнссервицеинфо | Предоставляет информацию для экземпляра службы DNS. |
отднсткстэнтри | Представляет запись TXT, представляющую пару ключ-значение (RFC 6763 — раздел 6.3). |
отднскстэнтриитератор | Представляет итератор для записей TXT (пары «ключ-значение»). |
Перечисления
otDnsNat64Mode
otDnsNat64Mode
Тип представляет режим NAT64 в otDnsQueryConfig
.
Режим NAT64 указывает, разрешить или запретить преобразование адресов NAT64 во время разрешения адресов DNS-клиента. Этот режим используется только тогда, когда включен OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE
.
otDnsRecursionFlag
otDnsRecursionFlag
Тип представляет флаг «Желательная рекурсия» (RD) в otDnsQueryConfig
.
отДнссервицемоде
otDnsServiceMode
Тип представляет режим разрешения службы в otDnsQueryConfig
.
Это используется только во время разрешения службы DNS-клиента otDnsClientResolveService()
. Он определяет, какие типы записей запрашивать.
отДнсТранспортПрото
otDnsTransportProto
Тип представляет транспортный протокол DNS в otDnsQueryConfig
.
Этот OT_DNS_TRANSPORT_TCP
поддерживается только в том случае, если включен OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE
.
Характеристики | |
---|---|
OT_DNS_TRANSPORT_TCP | DNS-запрос должен быть отправлен через UDP. |
OT_DNS_TRANSPORT_UDP | Транспорт DNS не указан. |
Определения типов
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 не поддерживает тип запроса (OpCode) -> OT_ERROR_NOT_IMPLEMENTED
- (5) ОТКАЗАН Сервер отклонен по соображениям политики/безопасности -> 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
отднсадресреспонс
struct otDnsAddressResponse otDnsAddressResponse
Непрозрачное представление ответа на DNS-запрос разрешения адреса.
Указатели на экземпляр этого типа предоставляются из обратного вызова otDnsAddressCallback
.
otDnsBrowseCallback
void(* otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)
Указатель вызывается, когда получен ответ DNS на запрос просмотра (перечисления экземпляров службы).
В этом обратном вызове пользователь может использовать функции otDnsBrowseResponseGet{Item}()
вместе с указателем aResponse
, чтобы получить дополнительную информацию об ответе.
Указатель aResponse
можно использовать только внутри этого обратного вызова, и после возврата из этой функции он не останется действительным, поэтому пользователь НЕ ДОЛЖЕН сохранять указатель aResponse
для дальнейшего использования.
Полный список возможных значений aError
см. в разделе otDnsAddressCallback()
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
отднсбраузереспонс
struct otDnsBrowseResponse otDnsBrowseResponse
Непрозрачное представление ответа на DNS-запрос просмотра (перечисления экземпляров службы).
Указатели на экземпляр этого типа предоставляются из обратного вызова otDnsBrowseCallback
.
отднскуерконфиг
struct otDnsQueryConfig otDnsQueryConfig
Представляет конфигурацию DNS-запроса.
Любое из полей в этой структуре может быть установлено в ноль, чтобы указать, что оно не указано. То, как обрабатываются неуказанные поля, определяется функцией, которая использует экземпляр otDnsQueryConfig
.
отДнссервицеколлбэк
void(* otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)
Указатель вызывается, когда получен ответ DNS на запрос разрешения экземпляра службы.
В этом обратном вызове пользователь может использовать функции otDnsServiceResponseGet{Item}()
вместе с указателем aResponse
, чтобы получить дополнительную информацию об ответе.
Указатель aResponse
можно использовать только внутри этого обратного вызова, и после возврата из этой функции он не останется действительным, поэтому пользователь НЕ ДОЛЖЕН сохранять указатель aResponse
для дальнейшего использования.
Полный список возможных значений aError
см. в разделе otDnsAddressCallback()
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
отДнссервицеинфо
struct otDnsServiceInfo otDnsServiceInfo
Предоставляет информацию для экземпляра службы DNS.
отднссервицеответ
struct otDnsServiceResponse otDnsServiceResponse
Непрозрачное представление ответа на DNS-запрос разрешения экземпляра службы.
Указатели на экземпляр этого типа предоставляются из обратного вызова otDnsAddressCallback
.
отднсткстэнтри
struct otDnsTxtEntry otDnsTxtEntry
Представляет запись TXT, представляющую пару ключ-значение (RFC 6763 — раздел 6.3).
Строковые буферы, на которые указывают mKey
и mValue
, ДОЛЖНЫ сохраняться и оставаться неизменными после передачи экземпляра такой структуры в OpenThread (как часть экземпляра otSrpClientService
).
Массив записей otDnsTxtEntry
используется в otSrpClientService
для указания полной записи TXT (списка записей).
отднскстэнтриитератор
struct otDnsTxtEntryIterator otDnsTxtEntryIterator
Представляет итератор для записей TXT (пары «ключ-значение»).
Поля данных в этой структуре предназначены для использования ядром OpenThread, и вызывающая сторона не должна их читать или изменять.
Функции
отднсадресреспонсжетаддресс
otError otDnsAddressResponseGetAddress( const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl )
Получает адрес IPv6, связанный с ответом DNS разрешения адресов.
ДОЛЖЕН использоваться только из otDnsAddressCallback
.
Ответ может включать несколько записей адресов IPv6. aIndex
можно использовать для перебора списка адресов. Индекс ноль получает первый адрес и так далее. Когда мы достигаем конца списка, возвращается OT_ERROR_NOT_FOUND
.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
отднсадресреспонсенджетхостнаме
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 )
Получает IPv6-адрес узла из ответа DNS-обзора (перечисления экземпляров службы).
ДОЛЖЕН использоваться только из otDnsBrowseCallback
.
Ответ может включать ноль или более записей адресов IPv6. aIndex
можно использовать для перебора списка адресов. Индекс ноль получает первый адрес и так далее. Когда мы достигаем конца списка, возвращается OT_ERROR_NOT_FOUND
.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднсбраузереспонсжетсервицеинфо
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,mTxtDataSize
вaServiceInfo
устанавливается в ноль. - Если длина данных 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() `.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
отднсбраузереспонсжетсервицеинстанце
otError otDnsBrowseResponseGetServiceInstance( const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize )
Получает экземпляр службы, связанный с ответом DNS-обзора (перечисления экземпляров службы).
ДОЛЖЕН использоваться только из otDnsBrowseCallback
.
Ответ может включать несколько записей экземпляра службы. aIndex
можно использовать для перебора списка. Индекс ноль дает первую запись. Когда мы достигаем конца списка, возвращается OT_ERROR_NOT_FOUND
.
Обратите внимание, что эта функция получает метку экземпляра службы, а не полное имя экземпляра службы, которое имеет вид. .
. .
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
отднсбраузереспонсенжеметсервиценаме
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()
) будет использоваться в качестве конфигурации для этого запроса. В aConfig
, отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднсклиентжетдефаултконфиг
const otDnsQueryConfig * otDnsClientGetDefaultConfig( otInstance *aInstance )
Получает текущую конфигурацию запроса по умолчанию, используемую DNS-клиентом.
При запуске стека OpenThread конфигурация DNS-запроса по умолчанию определяется из набора параметров конфигурации OT, таких как OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS
, _DEFAULT_SERVER_PORT
, _DEFAULT_RESPONSE_TIMEOUT
и т. д. (все связанные параметры конфигурации см. config/dns_client.h
).
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Указатель на текущую конфигурацию по умолчанию, используемую DNS-клиентом. |
отднсклиентресолвалдресс
otError otDnsClientResolveAddress( otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig )
Отправляет DNS-запрос разрешения адреса для записей AAAA (IPv6) для заданного имени хоста.
aConfig
может иметь значение NULL. В этом случае конфигурация по умолчанию (из otDnsClientGetDefaultConfig()
) будет использоваться в качестве конфигурации для этого запроса. В aConfig
, отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднсклиентресолвоип4адрес
otError otDnsClientResolveIp4Address( otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig )
Отправляет DNS-запрос разрешения адреса для записей A (IPv4) для заданного имени хоста.
Требуется и доступен, если включен OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE
.
При получении успешного ответа адреса возвращаются из aCallback
как преобразованные NAT64 IPv6 версии адресов IPv4 из ответа на запрос.
aConfig
может иметь значение NULL. В этом случае конфигурация по умолчанию (из otDnsClientGetDefaultConfig()
) будет использоваться в качестве конфигурации для этого запроса. В aConfig
, отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднсклиентрезольверсервице
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()
) будет использоваться в качестве конфигурации для этого запроса. В aConfig
, отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.
Функция отправляет запросы на записи SRV и/или TXT для данного экземпляра службы. Поле mServiceMode
в otDnsQueryConfig
определяет, какие записи запрашивать (только SRV, только TXT или и SRV, и TXT) и как выполнять запрос (вместе в одном сообщении, отдельно параллельно или в оптимизированном режиме, когда клиент будет пытаться в сначала одно и то же сообщение, а затем отдельно, если на него не получен ответ).
Запись SRV предоставляет информацию о порте службы, приоритете и весе, а также имя хоста, связанное с экземпляром службы. Эта функция НЕ выполняет разрешение адресов для имени хоста, обнаруженного из записи SRV. Сервер/сопоставитель может предоставить записи AAAA/A для имени хоста в разделе «Дополнительные данные» ответа на запрос SRV/TXT, и эту информацию можно получить с помощью otDnsServiceResponseGetServiceInfo()
в otDnsServiceCallback
. Пользователи этого API НЕ ДОЛЖНЫ предполагать, что адрес хоста всегда будет доступен из otDnsServiceResponseGetServiceInfo()
.
Подробности | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||
Возвращаемые значения |
|
отднсклиентрезольверсервицеандхостаддресс
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()
) будет использоваться в качестве конфигурации для этого запроса. В aConfig
, отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию. Эту функцию нельзя использовать с mServiceMode
в конфигурации DNS, для которого установлено значение OT_DNS_SERVICE_MODE_TXT
(т. е. запрос только записи TXT), и она вернет OT_ERROR_INVALID_ARGS
.
Действует аналогично otDnsClientResolveService()
, отправляя запросы на записи SRV и TXT. Однако если сервер/сопоставитель не предоставляет записи AAAA/A для имени хоста в ответе на запрос SRV (в разделе «Дополнительные данные»), он выполнит разрешение имени хоста (отправив запрос AAAA) для обнаруженного имени хоста из запись СРВ. Обратный вызов aCallback
вызывается, когда получены ответы на все запросы (т. е. завершено разрешение как адреса службы, так и адреса хоста).
Подробности | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||
Возвращаемые значения |
|
отднсклиентсетдефолтконфиг
void otDnsClientSetDefaultConfig( otInstance *aInstance, const otDnsQueryConfig *aConfig )
Устанавливает конфигурацию запроса по умолчанию для DNS-клиента.
aConfig
может иметь значение NULL. В этом случае для конфигурации по умолчанию будут установлены значения по умолчанию из параметров конфигурации OT OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}
. Это сбрасывает конфигурацию запроса по умолчанию обратно в конфигурацию при запуске стека OpenThread.
В aConfig
, отличном от NULL, вызывающая сторона может оставить некоторые поля в экземпляре otDnsQueryConfig
неуказанными (значение нулевое). Неуказанные поля заменяются соответствующими определениями параметров конфигурации 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-сервера в конфигурации по умолчанию.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
отДнсенкодеткстдата
otError otDnsEncodeTxtData( const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength )
Кодирует заданный список записей TXT (пары ключ/значение) в данные TXT (следующий формат, указанный в RFC 6763).
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
отднсжетнекстткстэнтри
otError otDnsGetNextTxtEntry( otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry )
Анализирует данные TXT из итератора и получает следующую запись TXT (пару ключ/значение).
aIterator
ДОЛЖЕН быть инициализирован с помощью otDnsInitTxtEntryIterator()
перед вызовом этой функции, а буфер данных TXT, используемый для инициализации итератора, ДОЛЖЕН сохраняться и оставаться неизменным. В противном случае поведение этой функции не определено.
Если длина проанализированной строки ключа меньше или равна OT_DNS_TXT_KEY_ITER_MAX_LENGTH
, строка ключа возвращается в mKey
в aEntry
. Но если ключ длиннее, то mKey
устанавливается значение NULL, и вся закодированная строка записи TXT возвращается в mValue
и mValueLength
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
отднсинитткстэнтриитератор
void otDnsInitTxtEntryIterator( otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength )
Инициализирует итератор записи TXT.
Указатель буфера aTxtData
и его содержимое ДОЛЖНЫ сохраняться и оставаться неизменными, пока используется объект aIterator
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
отднсиснамекомпрессионенаблед
bool otDnsIsNameCompressionEnabled( void )
Указывает, включен или нет режим «Сжатие DNS-имен».
Это предназначено только для тестирования и доступно, если включена конфигурация OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
.
Подробности | |
---|---|
Возврат | TRUE, если включен режим «Сжатие DNS-имен», в противном случае FALSE. |
otDnsServiceResponseGetHostAddress
otError otDnsServiceResponseGetHostAddress( const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl )
Получает IPv6-адрес узла из ответа на разрешение экземпляра службы DNS.
ДОЛЖЕН использоваться только из otDnsServiceCallback
.
Ответ может включать ноль или более записей адресов IPv6. aIndex
можно использовать для перебора списка адресов. Индекс ноль получает первый адрес и так далее. Когда мы достигаем конца списка, возвращается OT_ERROR_NOT_FOUND
.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднссервицереспонсжетсервицеинфо
otError otDnsServiceResponseGetServiceInfo( const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo )
Получает информацию об экземпляре службы из ответа на разрешение экземпляра службы DNS.
ДОЛЖЕН использоваться только из otDnsServiceCallback
, вызванного из otDnsClientResolveService()
или otDnsClientResolveServiceAndHostAddress()
.
Когда это используется из обратного вызова otDnsClientResolveService()
, ответ DNS от сервера/сопоставителя может включать записи AAAA в разделе «Дополнительные данные» для имени хоста, связанного с разрешаемым экземпляром службы. Это ОБЯЗАТЕЛЬНОЕ, а не ОБЯЗАТЕЛЬНОЕ требование, поэтому серверы/резольверы не обязаны обеспечивать это. Эта функция пытается проанализировать записи AAAA, если они включены в ответ. Если он не включен, mHostAddress
имеет все нули (неуказанный адрес). Чтобы также разрешить адрес хоста, пользователь может использовать функцию API DNS-клиента otDnsClientResolveServiceAndHostAddress()
, которая будет выполнять разрешение службы, за которым следует запрос на разрешение адреса имени хоста (когда записи AAAA не предоставляются сервером/сопоставителем в ответе на запрос SRV).
- Если соответствующая запись SRV найдена в
aResponse
,aServiceInfo
обновляется. - Если соответствующая запись SRV не найдена, возвращается
OT_ERROR_NOT_FOUND
, если только в конфигурации запроса для этого запроса не использовалосьOT_DNS_SERVICE_MODE_TXT
дляmServiceMode
(это означает, что запрос был только для записи TXT). В этом случае мы все равно пытаемся проанализировать запись SRV из раздела дополнительных данных ответа (в случае, если сервер предоставил информацию). - Если в
aResponse
не найдена соответствующая запись TXT,mTxtDataSize
вaServiceInfo
устанавливается в ноль. - Если длина данных 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() `.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
отднссервицереспонсенжеметсервиценаме
otError otDnsServiceResponseGetServiceName( const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize )
Получает имя экземпляра службы, связанное с ответом на разрешение экземпляра службы DNS.
ДОЛЖЕН использоваться только из otDnsServiceCallback
.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
отднссетнамекомпрессионенаблед
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
Максимальный размер строки метки (включая нулевой символ в конце строки).
OT_DNS_MAX_NAME_SIZE
OT_DNS_MAX_NAME_SIZE 255
Максимальный размер строки имени (включая нулевой символ в конце строки).
OT_DNS_TXT_KEY_ITER_MAX_LENGTH
OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64
Максимальная длина строки ключа TXT, поддерживаемая otDnsTxtEntryIterator
.
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).
Ресурсы
Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .