НАТ64

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

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

Эти функции доступны только в том случае, если включен OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE .

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

otNat64DropReason {
OT_NAT64_DROP_REASON_UNKNOWN = 0,
OT_NAT64_DROP_REASON_ILLEGAL_PACKET ,
OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO ,
OT_NAT64_DROP_REASON_NO_MAPPING
}
перечисление
Причины потери пакетов.
otNat64State {
OT_NAT64_STATE_DISABLED = 0,
OT_NAT64_STATE_NOT_RUNNING ,
OT_NAT64_STATE_IDLE ,
OT_NAT64_STATE_ACTIVE
}
перечисление
Состояния NAT64.

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

otIp4Address определение типа
struct otIp4Address
Представляет адрес IPv4.
otIp4Cidr определение типа
struct otIp4Cidr
otNat64AddressMapping определение типа
Представляет запись сопоставления адресов для NAT64.
otNat64AddressMappingIterator определение типа
Используется для перебора сопоставлений адресов NAT64.
otNat64Counters определение типа
Представляет счетчики для NAT64.
otNat64DropReason определение типа
Причины потери пакетов.
otNat64ErrorCounters определение типа
Представляет счетчики отброшенных пакетов из-за ошибок при обработке пакетов NAT64.
otNat64ProtocolCounters определение типа
Представляет счетчики протоколов, поддерживаемых NAT64.
otNat64ReceiveIp4Callback )(otMessage *aMessage, void *aContext) определение типа
void(*
Указатель вызывается при получении датаграммы IPv4 (переведенной транслятором NAT64).

Переменные

OT_TOOL_PACKED_END

Функции

otIp4AddressFromString (const char *aString, otIp4Address *aAddress)
Преобразует удобочитаемую строку адреса IPv4 в двоичное представление.
otIp4AddressToString (const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Преобразует адрес в строку.
otIp4CidrFromString (const char *aString, otIp4Cidr *aCidr)
Преобразует удобочитаемую строку CIDR IPv4 в двоичное представление.
otIp4CidrToString (const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Преобразует CIDR IPv4 в строку.
otIp4ExtractFromIp6Address (uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Установите aIp4Address , выполнив преобразование адреса NAT64 из aIp6Address , как указано в RFC 6052.
otIp4IsAddressEqual (const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Проверьте, совпадают ли два адреса IPv4.
otIp4NewMessage ( otInstance *aInstance, const otMessageSettings *aSettings)
Выделите новый буфер сообщений для отправки сообщения IPv4 транслятору NAT64.
otNat64GetCidr ( otInstance *aInstance, otIp4Cidr *aCidr)
Получает CIDR IPv4, настроенный в трансляторе NAT64.
otNat64GetCounters ( otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Получает счетчики транслятора NAT64.
otNat64GetErrorCounters ( otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Получает счетчики ошибок транслятора NAT64.
otNat64GetNextAddressMapping ( otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Получает следующую информацию AddressMapping (с помощью итератора).
otNat64GetPrefixManagerState ( otInstance *aInstance)
Получает состояние диспетчера префиксов NAT64.
otNat64GetTranslatorState ( otInstance *aInstance)
Получает состояние транслятора NAT64.
otNat64InitAddressMappingIterator ( otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
Инициализирует otNat64AddressMappingIterator .
otNat64Send ( otInstance *aInstance, otMessage *aMessage)
Преобразует дейтаграмму IPv4 в дейтаграмму IPv6 и отправляет через интерфейс Thread.
otNat64SetEnabled ( otInstance *aInstance, bool aEnabled)
void
Включите или отключите функции NAT64.
otNat64SetIp4Cidr ( otInstance *aInstance, const otIp4Cidr *aCidr)
Устанавливает CIDR, используемый при настройке исходного адреса исходящих преобразованных пакетов IPv4.
otNat64SetReceiveIp4Callback ( otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Регистрирует обратный вызов для предоставления полученных датаграмм IPv4.
otNat64SynthesizeIp6Address ( otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Устанавливает адрес IPv6, выполняя преобразование адреса NAT64 из предпочтительного префикса NAT64 и заданного адреса IPv4, как указано в RFC 6052.

Структуры

отIp4Адрес

Представляет адрес IPv4.

otIp4Cidr

Представляет блок CIDR IPv4.

otNat64Сопоставление адресов

Представляет запись сопоставления адресов для NAT64.

otNat64AddressMappingIterator

Используется для перебора сопоставлений адресов NAT64.

otNat64Счетчики

Представляет счетчики для NAT64.

otNat64ErrorCounters

Представляет счетчики отброшенных пакетов из-за ошибок при обработке пакетов NAT64.

otNat64ПротоколСчетчики

Представляет счетчики протоколов, поддерживаемых NAT64.

Союзы

otIp4Address::OT_TOOL_PACKED_FIELD

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

otNat64DropReason

 otNat64DropReason

Причины потери пакетов.

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

Падение пакета из-за того, что не удалось проанализировать датаграмму.

OT_NAT64_DROP_REASON_NO_MAPPING

Падение пакета из-за того, что сопоставления не найдены или пул сопоставлений исчерпан.

OT_NAT64_DROP_REASON_UNKNOWN

Падение пакета по неизвестным причинам.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Падение пакета из-за неподдерживаемого протокола IP.

otNat64State

 otNat64State

Состояния NAT64.

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

BR публикует префикс NAT64 и/или транслирует пакеты.

OT_NAT64_STATE_DISABLED

NAT64 отключен.

OT_NAT64_STATE_IDLE

NAT64 включен, но этот BR не является активным BR NAT64.

OT_NAT64_STATE_NOT_RUNNING

NAT64 включен, но одна или несколько зависимостей NAT64 не выполняются.

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

отIp4Адрес

struct otIp4Address otIp4Address

Представляет адрес IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64Сопоставление адресов

struct otNat64AddressMapping otNat64AddressMapping

Представляет запись сопоставления адресов для NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Используется для перебора сопоставлений адресов NAT64.

Поля этого типа непрозрачны (предназначены для использования только ядром OpenThread) и поэтому не должны быть доступны или использованы вызывающей стороной.

Прежде чем использовать итератор, его НЕОБХОДИМО инициализировать с помощью otNat64AddressMappingIteratorInit() .

otNat64Счетчики

struct otNat64Counters otNat64Counters

Представляет счетчики для NAT64.

otNat64DropReason

enum otNat64DropReason otNat64DropReason

Причины потери пакетов.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Представляет счетчики отброшенных пакетов из-за ошибок при обработке пакетов NAT64.

otNat64ПротоколСчетчики

struct otNat64ProtocolCounters otNat64ProtocolCounters

Представляет счетчики протоколов, поддерживаемых NAT64.

otNat64ReceiveIp4Callback

void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)

Указатель вызывается при получении датаграммы IPv4 (переведенной транслятором NAT64).

Подробности
Параметры
[in] aMessage
Указатель на буфер сообщений, содержащий полученную датаграмму IPv6. Эта функция передает право собственности на aMessage получателю обратного вызова. Сообщение должно быть освобождено получателем обратного вызова после его обработки.
[in] aContext
Указатель на контекст конкретного приложения.

Переменные

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

Функции

otIp4AddressFromString

otError otIp4AddressFromString(
  const char *aString,
  otIp4Address *aAddress
)

Преобразует удобочитаемую строку адреса IPv4 в двоичное представление.

Подробности
Параметры
[in] aString
Указатель на строку, завершающуюся NULL.
[out] aAddress
Указатель на адрес IPv4.
Возвращаемые значения
OT_ERROR_NONE
Строка успешно проанализирована.
OT_ERROR_INVALID_ARGS
Не удалось проанализировать строку.

отIp4AddressToString

void otIp4AddressToString(
  const otIp4Address *aAddress,
  char *aBuffer,
  uint16_t aSize
)

Преобразует адрес в строку.

В строковом формате используется четырехточечная запись адреса из четырех байтов (например, «127.0.0.1»).

Если результирующая строка не помещается в aBuffer (в пределах символов aSize ), строка будет усечена, но выводимая строка всегда заканчивается нулем.

Подробности
Параметры
[in] aAddress
Указатель на адрес IPv4 (НЕ ДОЛЖЕН быть NULL).
[out] aBuffer
Указатель на массив символов для вывода строки (НЕ ДОЛЖЕН быть nullptr ).
[in] aSize
Размер aBuffer (в байтах).

otIp4CidrFromString

otError otIp4CidrFromString(
  const char *aString,
  otIp4Cidr *aCidr
)

Преобразует удобочитаемую строку CIDR IPv4 в двоичное представление.

Подробности
Параметры
[in] aString
Указатель на строку, завершающуюся NULL.
[out] aCidr
Указатель на CIDR IPv4.
Возвращаемые значения
OT_ERROR_NONE
Строка успешно проанализирована.
OT_ERROR_INVALID_ARGS
Не удалось проанализировать строку.

otIp4CidrToString

void otIp4CidrToString(
  const otIp4Cidr *aCidr,
  char *aBuffer,
  uint16_t aSize
)

Преобразует CIDR IPv4 в строку.

В строковом формате используется четырехточечная запись адреса с длиной префикса (например, «127.0.0.1/32»).

Если результирующая строка не помещается в aBuffer (в пределах символов aSize ), строка будет усечена, но выводимая строка всегда заканчивается нулем.

Подробности
Параметры
[in] aCidr
Указатель на CIDR IPv4 (НЕ ДОЛЖЕН быть NULL).
[out] aBuffer
Указатель на массив символов для вывода строки (НЕ ДОЛЖЕН быть nullptr ).
[in] aSize
Размер aBuffer (в байтах).

otIp4ExtractFromIp6Address

void otIp4ExtractFromIp6Address(
  uint8_t aPrefixLength,
  const otIp6Address *aIp6Address,
  otIp4Address *aIp4Address
)

Установите aIp4Address , выполнив преобразование адреса NAT64 из aIp6Address , как указано в RFC 6052.

NAT64 aPrefixLength ДОЛЖЕН быть одним из следующих значений: 32, 40, 48, 56, 64 или 96, в противном случае поведение этого метода не определено.

Подробности
Параметры
[in] aPrefixLength
Длина префикса, используемая для трансляции IPv4/IPv6.
[in] aIp6Address
Указатель на IPv6-адрес.
[out] aIp4Address
Указатель для вывода IPv4-адреса.

отIp4IsAddressEqual

bool otIp4IsAddressEqual(
  const otIp4Address *aFirst,
  const otIp4Address *aSecond
)

Проверьте, совпадают ли два адреса IPv4.

Подробности
Параметры
[in] aFirst
Указатель на первый IPv4-адрес для сравнения.
[in] aSecond
Указатель на второй IPv4-адрес для сравнения.
Возвращаемые значения
TRUE
Два адреса IPv4 одинаковы.
FALSE
Два адреса IPv4 не совпадают.

otIp4NewMessage

otMessage * otIp4NewMessage(
  otInstance *aInstance,
  const otMessageSettings *aSettings
)

Выделите новый буфер сообщений для отправки сообщения IPv4 транслятору NAT64.

Буферы сообщений, выделенные этой функцией, будут иметь зарезервированные 20 байтов (разница между размером заголовков IPv6 и размером заголовков IPv4).

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aSettings
Указатель на настройки сообщения или NULL, чтобы установить настройки по умолчанию.
Возврат
Указатель на буфер сообщений или NULL, если буферы сообщений недоступны или параметры недопустимы.
Смотрите также:
otNat64Отправить

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Получает CIDR IPv4, настроенный в трансляторе NAT64.

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[out] aCidr
Указатель на otIp4Cidr . Где будет заполняться CIDR.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Получает счетчики транслятора NAT64.

Счетчик отсчитывается с момента инициализации экземпляра.

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[out] aCounters
Указатель на otNat64Counters , где будут размещены счетчики транслятора NAT64.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Получает счетчики ошибок транслятора NAT64.

Счетчики инициализируются нулем при инициализации экземпляра OpenThread.

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[out] aCounters
Указатель на otNat64Counters , где будут размещены счетчики транслятора NAT64.

otNat64GetNextAddressMapping

otError otNat64GetNextAddressMapping(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator,
  otNat64AddressMapping *aMapping
)

Получает следующую информацию AddressMapping (с помощью итератора).

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in,out] aIterator
Указатель на итератор. В случае успеха итератор будет обновлен и укажет на следующую запись сопоставления адреса NAT64. Чтобы получить первую запись, итератор должен быть установлен на OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Указатель на otNat64AddressMapping , куда помещается информация о следующей записи сопоставления адресов NAT64 (в случае успеха).
Возвращаемые значения
OT_ERROR_NONE
Успешно найдена следующая информация о сопоставлении адресов NAT64 ( aMapping успешно обновлена).
OT_ERROR_NOT_FOUND
Никакой последующей информации о сопоставлении адресов NAT64 не обнаружено.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Получает состояние диспетчера префиксов NAT64.

Доступно, если включен OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
Возвращаемые значения
OT_NAT64_STATE_DISABLED
Менеджер префиксов NAT64 отключен.
OT_NAT64_STATE_NOT_RUNNING
Менеджер префиксов NAT64 включен, но не запущен (поскольку не запущен диспетчер маршрутизации).
OT_NAT64_STATE_IDLE
Менеджер префиксов NAT64 включен, но не публикует префикс NAT64. Обычно, когда есть другой пограничный маршрутизатор, публикующий префикс NAT64 с более высоким приоритетом.
OT_NAT64_STATE_ACTIVE
Диспетчер префиксов NAT64 включен и публикует префикс NAT64 в сети потоков.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Получает состояние транслятора NAT64.

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
Возвращаемые значения
OT_NAT64_STATE_DISABLED
Транслятор NAT64 отключен.
OT_NAT64_STATE_NOT_RUNNING
Транслятор NAT64 включен, но для транслятора не настроен действительный префикс NAT64 и CIDR.
OT_NAT64_STATE_ACTIVE
Транслятор NAT64 включен и транслирует пакеты.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Инициализирует otNat64AddressMappingIterator .

Итератор ДОЛЖЕН быть инициализирован перед его использованием.

Итератор можно инициализировать снова, чтобы перезапустить его с начала информации о сопоставлении.

Подробности
Параметры
[in] aInstance
Экземпляр OpenThread.
[out] aIterator
Указатель на итератор для инициализации.

otNat64Отправить

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Преобразует дейтаграмму IPv4 в дейтаграмму IPv6 и отправляет через интерфейс Thread.

Вызывающая сторона передает право собственности на aMessage при совершении этого вызова. OpenThread освободит aMessage после завершения обработки, в том числе когда возвращается значение, отличное от OT_ERROR_NONE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aMessage
Указатель на буфер сообщений, содержащий датаграмму IPv4.
Возвращаемые значения
OT_ERROR_NONE
Сообщение успешно обработано.
OT_ERROR_DROP
Сообщение было правильно сформировано, но не было полностью обработано из-за правил обработки пакетов.
OT_ERROR_NO_BUFS
Не удалось выделить необходимые буферы сообщений при обработке дейтаграммы.
OT_ERROR_NO_ROUTE
Нет маршрута к хосту.
OT_ERROR_INVALID_SOURCE_ADDRESS
Адрес источника недействителен, например адрес произвольной рассылки или адрес многоадресной рассылки.
OT_ERROR_PARSE
При обработке сообщения обнаружен неверный заголовок.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Включите или отключите функции NAT64.

Примечание. Сюда входят переводчик NAT64 (когда включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE ) и диспетчер префиксов NAT64 (когда включен OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE ).

Если OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE включен, установка значения «disable» в true сбрасывает таблицу сопоставления в трансляторе.

Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE или OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aEnabled
Логическое значение для включения/выключения функций NAT64.
Смотрите также:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

otError otNat64SetIp4Cidr(
  otInstance *aInstance,
  const otIp4Cidr *aCidr
)

Устанавливает CIDR, используемый при настройке исходного адреса исходящих преобразованных пакетов IPv4.

Доступно только в том случае, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aCidr
Указатель на otIp4Cidr для блока CIDR IPv4 для NAT64.
Возвращаемые значения
OT_ERROR_INVALID_ARGS
Данный CIDR не является допустимым CIDR IPv4 для NAT64.
OT_ERROR_NONE
Успешно установили CIDR для NAT64.
Смотрите также:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

void otNat64SetReceiveIp4Callback(
  otInstance *aInstance,
  otNat64ReceiveIp4Callback aCallback,
  void *aContext
)

Регистрирует обратный вызов для предоставления полученных датаграмм IPv4.

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

otNat64SynthesizeIp6Адрес

otError otNat64SynthesizeIp6Address(
  otInstance *aInstance,
  const otIp4Address *aIp4Address,
  otIp6Address *aIp6Address
)

Устанавливает адрес IPv6, выполняя преобразование адреса NAT64 из предпочтительного префикса NAT64 и заданного адреса IPv4, как указано в RFC 6052.

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aIp4Address
Указатель на адрес IPv4 для преобразования в IPv6.
[out] aIp6Address
Указатель на синтезированный IPv6-адрес.
Возврат
OT_ERROR_NONE Адрес IPv6 успешно синтезирован из префикса NAT64 и адреса IPv4.
Возврат
OT_ERROR_INVALID_STATE В сетевых данных нет допустимого префикса NAT64.

Макросы

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Размер IPv4-адреса (байты)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Длина 000.000.000.000 плюс суффикс NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Длина 000.000.000.000/00 плюс суффикс NUL.

Ресурсы

Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .