НАТ64
Этот модуль включает функции и структуры для функции NAT64 на пограничном маршрутизаторе.
Краткое содержание
Эти функции доступны только в том случае, если включен OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
.
Перечисления | |
---|---|
otNat64DropReason { | перечисление Причины потери пакетов. |
otNat64State { | перечисление Состояния NAT64. |
Определения типов | |
---|---|
otIp4Address | определение типаstruct otIp4Address Представляет адрес IPv4. |
otIp4Cidr | определение типаstruct otIp4Cidr |
otNat64AddressMapping | определение типаstruct otNat64AddressMapping Представляет запись сопоставления адресов для NAT64. |
otNat64AddressMappingIterator | определение типа Используется для перебора сопоставлений адресов NAT64. |
otNat64Counters | определение типаstruct otNat64Counters Представляет счетчики для NAT64. |
otNat64DropReason | определение типаenum otNat64DropReason Причины потери пакетов. |
otNat64ErrorCounters | определение типаstruct otNat64ErrorCounters Представляет счетчики отброшенных пакетов из-за ошибок при обработке пакетов NAT64. |
otNat64ProtocolCounters | определение типаstruct otNat64ProtocolCounters Представляет счетчики протоколов, поддерживаемых NAT64. |
otNat64ReceiveIp4Callback )(otMessage *aMessage, void *aContext) | определение типаvoid(* Указатель вызывается при получении датаграммы IPv4 (переведенной транслятором NAT64). |
Переменные | |
---|---|
OT_TOOL_PACKED_END | OT_TOOL_PACKED_BEGIN struct otIp4Address |
Функции | |
---|---|
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
Причины потери пакетов.
otNat64State
otNat64State
Состояния NAT64.
Определения типов
otIp4Cidr
struct otIp4Cidr otIp4Cidr
otNat64Сопоставление адресов
struct otNat64AddressMapping otNat64AddressMapping
Представляет запись сопоставления адресов для NAT64.
otNat64AddressMappingIterator
struct otNat64AddressMappingIterator otNat64AddressMappingIterator
Используется для перебора сопоставлений адресов NAT64.
Поля этого типа непрозрачны (предназначены для использования только ядром OpenThread) и поэтому не должны быть доступны или использованы вызывающей стороной.
Прежде чем использовать итератор, его НЕОБХОДИМО инициализировать с помощью otNat64AddressMappingIteratorInit()
.
otNat64ErrorCounters
struct otNat64ErrorCounters otNat64ErrorCounters
Представляет счетчики отброшенных пакетов из-за ошибок при обработке пакетов NAT64.
otNat64ПротоколСчетчики
struct otNat64ProtocolCounters otNat64ProtocolCounters
Представляет счетчики протоколов, поддерживаемых NAT64.
otNat64ReceiveIp4Callback
void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
Указатель вызывается при получении датаграммы IPv4 (переведенной транслятором NAT64).
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Переменные
OT_TOOL_PACKED_END
OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END
Функции
otIp4AddressFromString
otError otIp4AddressFromString( const char *aString, otIp4Address *aAddress )
Преобразует удобочитаемую строку адреса IPv4 в двоичное представление.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
отIp4AddressToString
void otIp4AddressToString( const otIp4Address *aAddress, char *aBuffer, uint16_t aSize )
Преобразует адрес в строку.
В строковом формате используется четырехточечная запись адреса из четырех байтов (например, «127.0.0.1»).
Если результирующая строка не помещается в aBuffer
(в пределах символов aSize
), строка будет усечена, но выводимая строка всегда заканчивается нулем.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
otIp4CidrFromString
otError otIp4CidrFromString( const char *aString, otIp4Cidr *aCidr )
Преобразует удобочитаемую строку CIDR IPv4 в двоичное представление.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otIp4CidrToString
void otIp4CidrToString( const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize )
Преобразует CIDR IPv4 в строку.
В строковом формате используется четырехточечная запись адреса с длиной префикса (например, «127.0.0.1/32»).
Если результирующая строка не помещается в aBuffer
(в пределах символов aSize
), строка будет усечена, но выводимая строка всегда заканчивается нулем.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
otIp4ExtractFromIp6Address
void otIp4ExtractFromIp6Address( uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address )
Установите aIp4Address
, выполнив преобразование адреса NAT64 из aIp6Address
, как указано в RFC 6052.
NAT64 aPrefixLength
ДОЛЖЕН быть одним из следующих значений: 32, 40, 48, 56, 64 или 96, в противном случае поведение этого метода не определено.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
отIp4IsAddressEqual
bool otIp4IsAddressEqual( const otIp4Address *aFirst, const otIp4Address *aSecond )
Проверьте, совпадают ли два адреса IPv4.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otIp4NewMessage
otMessage * otIp4NewMessage( otInstance *aInstance, const otMessageSettings *aSettings )
Выделите новый буфер сообщений для отправки сообщения IPv4 транслятору NAT64.
Буферы сообщений, выделенные этой функцией, будут иметь зарезервированные 20 байтов (разница между размером заголовков IPv6 и размером заголовков IPv4).
Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возврат | Указатель на буфер сообщений или NULL, если буферы сообщений недоступны или параметры недопустимы. |
otNat64Отправить
otNat64GetCidr
otError otNat64GetCidr( otInstance *aInstance, otIp4Cidr *aCidr )
Получает CIDR IPv4, настроенный в трансляторе NAT64.
Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otNat64GetCounters
void otNat64GetCounters( otInstance *aInstance, otNat64ProtocolCounters *aCounters )
Получает счетчики транслятора NAT64.
Счетчик отсчитывается с момента инициализации экземпляра.
Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otNat64GetErrorCounters
void otNat64GetErrorCounters( otInstance *aInstance, otNat64ErrorCounters *aCounters )
Получает счетчики ошибок транслятора NAT64.
Счетчики инициализируются нулем при инициализации экземпляра OpenThread.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otNat64GetNextAddressMapping
otError otNat64GetNextAddressMapping( otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping )
Получает следующую информацию AddressMapping (с помощью итератора).
Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otNat64GetPrefixManagerState
otNat64State otNat64GetPrefixManagerState( otInstance *aInstance )
Получает состояние диспетчера префиксов NAT64.
Доступно, если включен OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
otNat64GetTranslatorState
otNat64State otNat64GetTranslatorState( otInstance *aInstance )
Получает состояние транслятора NAT64.
Доступно, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otNat64InitAddressMappingIterator
void otNat64InitAddressMappingIterator( otInstance *aInstance, otNat64AddressMappingIterator *aIterator )
Инициализирует otNat64AddressMappingIterator
.
Итератор ДОЛЖЕН быть инициализирован перед его использованием.
Итератор можно инициализировать снова, чтобы перезапустить его с начала информации о сопоставлении.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otNat64Отправить
otError otNat64Send( otInstance *aInstance, otMessage *aMessage )
Преобразует дейтаграмму IPv4 в дейтаграмму IPv6 и отправляет через интерфейс Thread.
Вызывающая сторона передает право собственности на aMessage
при совершении этого вызова. OpenThread освободит aMessage
после завершения обработки, в том числе когда возвращается значение, отличное от OT_ERROR_NONE
.
Подробности | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||
Возвращаемые значения |
|
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
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otNat64GetTranslatorState
otNat64GetPrefixManagerState
otNat64SetIp4Cidr
otError otNat64SetIp4Cidr( otInstance *aInstance, const otIp4Cidr *aCidr )
Устанавливает CIDR, используемый при настройке исходного адреса исходящих преобразованных пакетов IPv4.
Доступно только в том случае, если включен OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRouterSend
otBorderRouterSetReceiveCallback
otNat64SetReceiveIp4Callback
void otNat64SetReceiveIp4Callback( otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext )
Регистрирует обратный вызов для предоставления полученных датаграмм IPv4.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
otNat64SynthesizeIp6Адрес
otError otNat64SynthesizeIp6Address( otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address )
Устанавливает адрес IPv6, выполняя преобразование адреса NAT64 из предпочтительного префикса NAT64 и заданного адреса IPv4, как указано в RFC 6052.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возврат | 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 . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .