DNS

Этот модуль включает в себя функции, управляющие связью DNS.

Краткое содержание

Функции этого модуля доступны только в том случае, если включена функция OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE .

Перечисления

otDnsNat64Mode {
OT_DNS_NAT64_UNSPECIFIED = 0,
OT_DNS_NAT64_ALLOW = 1,
OT_DNS_NAT64_DISALLOW = 2
}
перечисление
Тип представляет режим NAT64 в otDnsQueryConfig .
otDnsRecursionFlag {
OT_DNS_FLAG_UNSPECIFIED = 0,
OT_DNS_FLAG_RECURSION_DESIRED = 1,
OT_DNS_FLAG_NO_RECURSION = 2
}
перечисление
Тип представляет флаг «Желательная рекурсия» (RD) в otDnsQueryConfig .
otDnsServiceMode {
OT_DNS_SERVICE_MODE_UNSPECIFIED = 0,
OT_DNS_SERVICE_MODE_SRV = 1,
OT_DNS_SERVICE_MODE_TXT = 2,
OT_DNS_SERVICE_MODE_SRV_TXT = 3,
OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE = 4,
OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE = 5
}
перечисление
Тип представляет режим разрешения службы в otDnsQueryConfig .
otDnsTransportProto {
OT_DNS_TRANSPORT_UDP = 1,
OT_DNS_TRANSPORT_TCP = 2
}
перечисление
Тип представляет транспортный протокол DNS в otDnsQueryConfig .

Определения типов

otDnsAddressCallback )(otError aError, const otDnsAddressResponse *aResponse, void *aContext) определение типа
void(*
Указатель вызывается, когда получен ответ DNS на запрос разрешения адреса.
otDnsAddressResponse определение типа
Непрозрачное представление ответа на DNS-запрос разрешения адреса.
otDnsBrowseCallback )(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) определение типа
void(*
Указатель вызывается, когда получен ответ DNS на запрос просмотра (перечисления экземпляров службы).
otDnsBrowseResponse определение типа
Непрозрачное представление ответа на DNS-запрос просмотра (перечисления экземпляров службы).
otDnsQueryConfig определение типа
Представляет конфигурацию DNS-запроса.
otDnsServiceCallback )(otError aError, const otDnsServiceResponse *aResponse, void *aContext) определение типа
void(*
Указатель вызывается, когда получен ответ DNS на запрос разрешения экземпляра службы.
otDnsServiceInfo определение типа
Предоставляет информацию для экземпляра службы DNS.
otDnsServiceResponse определение типа
Непрозрачное представление ответа на DNS-запрос разрешения экземпляра службы.
otDnsTxtEntry определение типа
Представляет запись TXT, представляющую пару ключ-значение (RFC 6763 — раздел 6.3).
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)
Получает текущую конфигурацию запроса по умолчанию, используемую 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 .

Характеристики
OT_DNS_NAT64_ALLOW

Разрешить преобразование адресов NAT64 во время разрешения адресов DNS-клиентов.

OT_DNS_NAT64_DISALLOW

Не разрешайте преобразование адресов NAT64 во время разрешения адресов DNS-клиентов.

OT_DNS_NAT64_UNSPECIFIED

Режим NAT64 не указан. Используйте режим NAT64 по умолчанию.

otDnsRecursionFlag

 otDnsRecursionFlag

Тип представляет флаг «Желательная рекурсия» (RD) в otDnsQueryConfig .

Характеристики
OT_DNS_FLAG_NO_RECURSION

Указывает, что DNS-сервер имен не может рекурсивно разрешить запрос.

OT_DNS_FLAG_RECURSION_DESIRED

Указывает, что DNS-сервер имен может рекурсивно разрешить запрос.

OT_DNS_FLAG_UNSPECIFIED

Указывает, что флаг не указан.

отДнссервицемоде

 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

Тип представляет транспортный протокол 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 может иметь следующее:

Подробности
Параметры
[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 не поддерживает тип запроса (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() .

Подробности
Параметры
[in] aError
Результат DNS-транзакции.
[in] aResponse
Указатель на ответ (он всегда не NULL).
[in] aContext
Указатель на контекст конкретного приложения.

отднсбраузереспонс

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() .

Подробности
Параметры
[in] aError
Результат DNS-транзакции.
[in] aResponse
Указатель на ответ (он всегда не NULL).
[in] aContext
Указатель на контекст конкретного приложения.

отДнссервицеинфо

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 .

Подробности
Параметры
[in] aResponse
Указатель на ответ.
[in] aIndex
Индекс записи адреса, который требуется получить.
[out] aAddress
Указатель на адрес IPv6 для вывода адреса (НЕ ДОЛЖЕН быть NULL).
[out] aTtl
Указатель на uint32_t для вывода TTL для адреса. Оно может быть NULL, если вызывающая сторона не хочет получать TTL.
Возвращаемые значения
OT_ERROR_NONE
Адрес был успешно прочитан.
OT_ERROR_NOT_FOUND
Нет записи адреса в aResponse at aIndex .
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .
OT_ERROR_INVALID_STATE
Нет префикса NAT64 (применимо только в том случае, если разрешен NAT64).

отднсадресреспонсенджетхостнаме

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
)

Получает IPv6-адрес узла из ответа DNS-обзора (перечисления экземпляров службы).

ДОЛЖЕН использоваться только из otDnsBrowseCallback .

Ответ может включать ноль или более записей адресов IPv6. aIndex можно использовать для перебора списка адресов. Индекс ноль получает первый адрес и так далее. Когда мы достигаем конца списка, возвращается OT_ERROR_NOT_FOUND .

Подробности
Параметры
[in] aResponse
Указатель на ответ.
[in] aHostName
Имя хоста для получения адреса (НЕ ДОЛЖНО быть NULL).
[in] aIndex
Индекс записи адреса, который требуется получить.
[out] aAddress
Указатель на адрес IPv6 для вывода адреса (НЕ ДОЛЖЕН быть NULL).
[out] aTtl
Указатель на uint32_t для вывода TTL для адреса. Оно может быть NULL, если вызывающая сторона не хочет получать TTL.
Возвращаемые значения
OT_ERROR_NONE
Адрес был успешно прочитан.
OT_ERROR_NOT_FOUND
Нет записи адреса для aHostname в aResponse at aIndex .
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .

отднсбраузереспонсжетсервицеинфо

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, mHostAddress is set to the first one. The other addresses can be retrieved using otDnsBrowseResponseGetHostAddress() `.

Подробности
Параметры
[in] aResponse
Указатель на ответ.
[in] aInstanceLabel
Метка экземпляра службы (НЕ ДОЛЖНА быть NULL).
[out] aServiceInfo
ServiceInfo для вывода информации об экземпляре службы (НЕ ДОЛЖНО быть NULL).
Возвращаемые значения
OT_ERROR_NONE
Информация об экземпляре службы была прочитана. aServiceInfo обновляется.
OT_ERROR_NOT_FOUND
Не удалось найти соответствующую запись SRV для aInstanceLabel .
OT_ERROR_NO_BUFS
Имя хоста и/или данные TXT не поместились в указанные буферы.
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .

отднсбраузереспонсжетсервицеинстанце

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

Получает экземпляр службы, связанный с ответом DNS-обзора (перечисления экземпляров службы).

ДОЛЖЕН использоваться только из otDnsBrowseCallback .

Ответ может включать несколько записей экземпляра службы. aIndex можно использовать для перебора списка. Индекс ноль дает первую запись. Когда мы достигаем конца списка, возвращается 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
В aResponse at aIndex нет записи экземпляра службы.
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .

отднсбраузереспонсенжеметсервиценаме

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() ) будет использоваться в качестве конфигурации для этого запроса. В aConfig , отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aServiceName
Имя службы для запроса (НЕ ДОЛЖНО быть NULL).
[in] aCallback
Указатель функции, который должен вызываться при получении ответа или по истечении времени ожидания.
[in] aContext
Указатель на произвольную контекстную информацию.
[in] aConfig
Указатель на конфигурацию, которая будет использоваться для этого запроса.
Возвращаемые значения
OT_ERROR_NONE
Запрос отправлен успешно. aCallback будет вызван для сообщения о статусе.
OT_ERROR_NO_BUFS
Недостаточно буфера для подготовки и отправки запроса.

отднсклиентжетдефаултконфиг

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 ).

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
Возврат
Указатель на текущую конфигурацию по умолчанию, используемую DNS-клиентом.

отднсклиентресолвалдресс

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

Отправляет DNS-запрос разрешения адреса для записей AAAA (IPv6) для заданного имени хоста.

aConfig может иметь значение NULL. В этом случае конфигурация по умолчанию (из otDnsClientGetDefaultConfig() ) будет использоваться в качестве конфигурации для этого запроса. В aConfig , отличном от NULL, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.

Подробности
Параметры
[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 не работает.

отднсклиентресолвоип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, некоторые поля можно оставить неуказанными (нулевое значение). Неуказанные поля затем заменяются значениями из конфигурации по умолчанию.

Подробности
Параметры
[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 не работает.

отднсклиентрезольверсервице

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() .

Подробности
Параметры
[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.

отднсклиентрезольверсервицеандхостаддресс

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 вызывается, когда получены ответы на все запросы (т. е. завершено разрешение как адреса службы, так и адреса хоста).

Подробности
Параметры
[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 недействителен.

отднсклиентсетдефолтконфиг

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-сервера в конфигурации по умолчанию.

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aConfig
Указатель на новую конфигурацию запроса, которая будет использоваться по умолчанию.

отДнсенкодеткстдата

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

Кодирует заданный список записей TXT (пары ключ/значение) в данные TXT (следующий формат, указанный в RFC 6763).

Подробности
Параметры
[in] aTxtEntries
Указатель на массив otDnsTxtEntry .
[in] aNumTxtEntries
Количество записей в массиве aTxtEntries .
[out] aTxtData
Указатель на буфер для вывода закодированных данных TXT.
[in,out] aTxtDataLength
На входе размер буфера aTxtData . На выходе длина закодированных данных TXT.
Возвращаемые значения
OT_ERROR_NONE
Данные TXT закодированы успешно, aTxtData и aTxtDataLength обновлены.
OT_ERROR_INVALID_ARGS
aTxtEntries недействителен.
OT_ERROR_NO_BUS
Не удалось поместить закодированные данные в буфер aTxtData с его aTxtDataLength .

отднсжетнекстткстэнтри

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 .

Подробности
Параметры
[in] aIterator
Указатель на итератор (НЕ ДОЛЖЕН быть NULL).
[out] aEntry
Указатель на структуру otDnsTxtEntry для вывода проанализированной/прочитанной записи (НЕ ДОЛЖЕН быть NULL).
Возвращаемые значения
OT_ERROR_NONE
Следующая запись была успешно проанализирована. aEntry обновлена.
OT_ERROR_NOT_FOUND
В данных TXT больше нет записей.
OT_ERROR_PARSE
Данные TXT от aIterator имеют неправильный формат.

отднсинитткстэнтриитератор

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

Инициализирует итератор записи TXT.

Указатель буфера aTxtData и его содержимое ДОЛЖНЫ сохраняться и оставаться неизменными, пока используется объект aIterator .

Подробности
Параметры
[in] aIterator
Указатель на инициализируемый итератор (НЕ ДОЛЖЕН быть NULL).
[in] aTxtData
Указатель на буфер, содержащий закодированные данные TXT.
[in] aTxtDataLength
Длина (количество байтов) aTxtData .

отднсиснамекомпрессионенаблед

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 .

Подробности
Параметры
[in] aResponse
Указатель на ответ.
[in] aHostName
Имя хоста для получения адреса (НЕ ДОЛЖНО быть NULL).
[in] aIndex
Индекс записи адреса, который требуется получить.
[out] aAddress
Указатель на адрес IPv6 для вывода адреса (НЕ ДОЛЖЕН быть NULL).
[out] aTtl
Указатель на uint32_t для вывода TTL для адреса. Оно может быть NULL, если вызывающая сторона не хочет получать TTL.
Возвращаемые значения
OT_ERROR_NONE
Адрес был успешно прочитан.
OT_ERROR_NOT_FOUND
Нет записи адреса для aHostname в aResponse at aIndex .
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .

отднссервицереспонсжетсервицеинфо

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, mHostAddress is set to the first one. The other addresses can be retrieved using otDnsServiceResponseGetHostAddress() `.

Подробности
Параметры
[in] aResponse
Указатель на ответ.
[out] aServiceInfo
ServiceInfo для вывода информации об экземпляре службы (НЕ ДОЛЖНО быть NULL).
Возвращаемые значения
OT_ERROR_NONE
Информация об экземпляре службы была прочитана. aServiceInfo обновляется.
OT_ERROR_NOT_FOUND
Не удалось найти необходимую запись в aResponse .
OT_ERROR_NO_BUFS
Имя хоста и/или данные TXT не поместились в указанные буферы.
OT_ERROR_PARSE
Не удалось проанализировать записи в aResponse .

отднссервицереспонсенжеметсервиценаме

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
Массив символов из буфера для вывода остальной части имени службы (может быть NULL, если пользователь не заинтересован в получении имени.
[in] aNameBufferSize
Размер aNameBuffer .
Возвращаемые значения
OT_ERROR_NONE
Имя службы было успешно прочитано.
OT_ERROR_NO_BUFS
Либо метка, либо имя не помещаются в заданные буферы.

отднссетнамекомпрессионенаблед

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

Включает/отключает режим «Сжатие DNS-имен».

По умолчанию сжатие DNS-имен включено. Если этот параметр отключен, DNS-имена добавляются как полные и никогда не сжимаются. Это применимо к модулям клиент/сервер OpenThread DNS и SRP.

Это предназначено только для тестирования и доступно, если включена конфигурация OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE .

Обратите внимание, что в случае использования OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE этот режим применяется ко всем экземплярам OpenThread (т. е. вызов этой функции включает/отключает режим сжатия на всех экземплярах OpenThread).

Подробности
Параметры
[in] aEnabled
TRUE, чтобы включить режим «Сжатия DNS-имен», FALSE, чтобы отключить.

Макросы

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 . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .