NAT64

Este módulo incluye funciones y structs para la función NAT64 en el router de borde.

Resumen

Estas funciones solo están disponibles cuando se habilita OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE.

Enumeraciones

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
}
enum
Motivos por los que se descarta el paquete.
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
Estados de NAT64.

Typedefs

otIp4Address typedef
struct otIp4Address
Representa una dirección IPv4.
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
Representa un registro de asignación de direcciones para NAT64.
otNat64AddressMappingIterator typedef
Se usa para iterar a través de las asignaciones de direcciones NAT64.
otNat64Counters typedef
Representa los contadores de NAT64.
otNat64DropReason typedef
Motivos por los que se descarta el paquete.
otNat64ErrorCounters typedef
Representa los contadores de los paquetes descartados debido a errores cuando se manejan paquetes NAT64.
otNat64ProtocolCounters typedef
Representa los contadores para los protocolos compatibles con NAT64.
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
Se llama al puntero cuando se recibe un datagrama IPv4 (traducido por un traductor NAT64).

Variables

OT_TOOL_PACKED_END

remotas

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
Convierte una string de dirección IPv4 legible en una representación binaria.
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Convierte la dirección en una cadena.
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
Convierte una string CIDR IPv4 legible en una representación binaria.
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Convierte el CIDR de IPv4 en una string.
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Configura aIp4Address mediante la traducción de direcciones NAT64 desde aIp6Address, como se especifica en RFC 6052.
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Prueba si dos direcciones IPv4 son iguales.
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Asigna un búfer de mensaje nuevo para enviar un mensaje IPv4 al traductor de NAT64.
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
Obtiene el CIDR de IPv4 configurado en el traductor de NAT64.
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Obtiene contadores de traductor de NAT64.
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Obtiene los contadores de errores del traductor de NAT64.
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Obtiene la siguiente información de AddressMapping (mediante un iterador).
otNat64GetPrefixManagerState(otInstance *aInstance)
Obtiene el estado del administrador de prefijos NAT64.
otNat64GetTranslatorState(otInstance *aInstance)
Obtiene el estado del traductor de NAT64.
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
Traduce un datagrama IPv4 a un datagrama IPv6 y lo envía a través de la interfaz Thread.
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
void
Habilita o inhabilita las funciones NAT64.
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
Establece el CIDR que se usa cuando se configura la dirección de origen de los paquetes IPv4 traducidos de salida.
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Registra una devolución de llamada para proporcionar datagramas IPv4 recibidos.
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Configura la dirección IPv6 mediante la traducción de direcciones NAT64 desde el prefijo NAT64 preferido y la dirección IPv4 determinada, como se especifica en RFC 6052.

Structs

otIp4Address

Representa una dirección IPv4.

otIp4Cidr

Representa un bloque CIDR IPv4.

otNat64AddressMapping

Representa un registro de asignación de direcciones para NAT64.

otNat64AddressMappingIterator

Se usa para iterar a través de las asignaciones de direcciones NAT64.

otNat64Counters

Representa los contadores de NAT64.

otNat64ErrorCounters

Representa los contadores de los paquetes descartados debido a errores cuando se manejan paquetes NAT64.

otNat64ProtocolCounters

Representa los contadores para los protocolos compatibles con NAT64.

Unión

otIp4Address::OT_TOOL_PACKED_FIELD

Enumeraciones

otNat64DropReason

 otNat64DropReason

Motivos por los que se descarta el paquete.

Propiedades
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

Se descartó el paquete debido a que no se pudo analizar el datagrama.

OT_NAT64_DROP_REASON_NO_MAPPING

Se descartó el paquete debido a que no se encontraron asignaciones o se agotó el grupo de asignaciones.

OT_NAT64_DROP_REASON_UNKNOWN

Se descartó paquetes por motivos desconocidos.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Se descartó el paquete debido a un protocolo de IP no compatible.

otNat64State

 otNat64State

Estados de NAT64.

Propiedades
OT_NAT64_STATE_ACTIVE

En Brasil, se publica un prefijo NAT64 o se traducen paquetes.

OT_NAT64_STATE_DISABLED

NAT64 está inhabilitado.

OT_NAT64_STATE_IDLE

NAT64 está habilitado, pero esta BR no es una NAT64 activa.

OT_NAT64_STATE_NOT_RUNNING

NAT64 está habilitado, pero una o más dependencias de NAT64 no se están ejecutando.

Typedefs

otIp4Address

struct otIp4Address otIp4Address

Representa una dirección IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

Representa un registro de asignación de direcciones para NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Se usa para iterar a través de las asignaciones de direcciones NAT64.

Los campos de este tipo son opacos (diseñados solo para el núcleo de OpenThread) y, por lo tanto, el llamador no debe usarlos ni acceder a ellos.

Antes de usar un iterador, DEBE inicializarse con otNat64AddressMappingIteratorInit().

otNat64Counters

struct otNat64Counters otNat64Counters

Representa los contadores de NAT64.

otNat64DropReason

enum otNat64DropReason otNat64DropReason

Motivos por los que se descarta el paquete.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Representa los contadores de los paquetes descartados debido a errores cuando se manejan paquetes NAT64.

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

Representa los contadores para los protocolos compatibles con NAT64.

otNat64ReceiveIp4Callback

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

Se llama al puntero cuando se recibe un datagrama IPv4 (traducido por un traductor NAT64).

Detalles
Parámetros
[in] aMessage
Un puntero para el búfer de mensaje que contiene el datagrama IPv6 recibido. Esta función transfiere la propiedad de aMessage al receptor de la devolución de llamada. El receptor de la devolución de llamada debe liberar el mensaje después de que se procese.
[in] aContext
Un puntero para el contexto específico de la aplicación.

Variables

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

remotas

otIp4AddressFromString

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

Convierte una string de dirección IPv4 legible en una representación binaria.

Detalles
Parámetros
[in] aString
Un puntero para una string terminada en NULL.
[out] aAddress
Un puntero a una dirección IPv4.
Valores que se muestran
OT_ERROR_NONE
Se analizó correctamente la string.
OT_ERROR_INVALID_ARGS
No se pudo analizar la cadena.

otIp4AddressToString

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

Convierte la dirección en una cadena.

El formato de string usa una notación con cuatro puntos de cuatro bytes en la dirección (p.ej., “127.0.0.1”).

Si la string resultante no cabe en aBuffer (dentro de sus caracteres aSize), la string se truncará, pero la string resultante siempre tendrá terminación nula.

Detalles
Parámetros
[in] aAddress
Un puntero a una dirección IPv4 (NO DEBE ser NULO).
[out] aBuffer
Un puntero a un array de caracteres para generar la string (NO DEBE ser nullptr).
[in] aSize
El tamaño de aBuffer (en bytes).

otIp4CidrFromString

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

Convierte una string CIDR IPv4 legible en una representación binaria.

Detalles
Parámetros
[in] aString
Un puntero para una string terminada en NULL.
[out] aCidr
Un puntero para un CIDR de IPv4.
Valores que se muestran
OT_ERROR_NONE
Se analizó correctamente la string.
OT_ERROR_INVALID_ARGS
No se pudo analizar la cadena.

otIp4CidrToString

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

Convierte el CIDR de IPv4 en una string.

El formato de string usa la notación con cuatro puntos de cuatro bytes en la dirección con la longitud del prefijo (p.ej., “127.0.0.1/32”).

Si la string resultante no cabe en aBuffer (dentro de sus caracteres aSize), la string se truncará, pero la string resultante siempre tendrá terminación nula.

Detalles
Parámetros
[in] aCidr
Un puntero a un CIDR de IPv4 (NO DEBE ser NULO).
[out] aBuffer
Un puntero a un array de caracteres para generar la string (NO DEBE ser nullptr).
[in] aSize
El tamaño de aBuffer (en bytes).

otIp4ExtractFromIp6Address

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

Configura aIp4Address mediante la traducción de direcciones NAT64 desde aIp6Address, como se especifica en RFC 6052.

El objeto aPrefixLength de NAT64 DEBE ser uno de los siguientes valores: 32, 40, 48, 56, 64 o 96. De lo contrario, el comportamiento de este método no está definido.

Detalles
Parámetros
[in] aPrefixLength
La longitud de prefijo que se usará para la traducción de IPv4/IPv6.
[in] aIp6Address
Un puntero a una dirección IPv6.
[out] aIp4Address
Un puntero para generar la dirección IPv4.

otIp4IsAddressEqual

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

Prueba si dos direcciones IPv4 son iguales.

Detalles
Parámetros
[in] aFirst
Un puntero a la primera dirección IPv4 para comparar.
[in] aSecond
Un puntero a la segunda dirección IPv4 para comparar.
Valores que se muestran
TRUE
Las dos direcciones IPv4 son iguales.
FALSE
Las dos direcciones IPv4 no son iguales.

otIp4NewMessage

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

Asigna un búfer de mensaje nuevo para enviar un mensaje IPv4 al traductor de NAT64.

Los búferes de mensajes asignados por esta función tendrán 20 bytes (diferencia entre el tamaño de los encabezados IPv6 y los tamaños de los encabezados IPv4) reservados.

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aSettings
Un puntero a la configuración del mensaje o NULL para establecer la configuración predeterminada.
Qué muestra
Un puntero al búfer de mensajes o NULL si no hay búferes de mensajes disponibles o los parámetros no son válidos.
Consulta también:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Obtiene el CIDR de IPv4 configurado en el traductor de NAT64.

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[out] aCidr
Un puntero para un otIp4Cidr. El lugar en el que se completará el CIDR.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Obtiene contadores de traductor de NAT64.

El contador se cuenta desde que se inicializó la instancia.

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[out] aCounters
Un puntero para un elemento otNat64Counters en el que se ubicarán los contadores del traductor de NAT64.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Obtiene los contadores de errores del traductor de NAT64.

Los contadores se inicializan en cero cuando se inicializa la instancia de OpenThread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[out] aCounters
Un puntero para un elemento otNat64Counters en el que se ubicarán los contadores del traductor de NAT64.

otNat64GetNextAddressMapping

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

Obtiene la siguiente información de AddressMapping (mediante un iterador).

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in,out] aIterator
Un puntero al iterador. Si se ejecuta de forma correcta, el iterador se actualizará para que apunte al siguiente registro de asignación de direcciones NAT64. Para obtener la primera entrada, el iterador debe configurarse como OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Un puntero para un otNat64AddressMapping en el que se coloca la información del siguiente registro de asignación de direcciones NAT64 (cuando se realiza de forma correcta).
Valores que se muestran
OT_ERROR_NONE
Se encontró correctamente la siguiente información de asignación de direcciones NAT64 (se actualizó aMapping de forma correcta).
OT_ERROR_NOT_FOUND
No se encontró información posterior de asignación de direcciones NAT64.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Obtiene el estado del administrador de prefijos NAT64.

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Valores que se muestran
OT_NAT64_STATE_DISABLED
El administrador de prefijos de NAT64 está inhabilitado.
OT_NAT64_STATE_NOT_RUNNING
El administrador de prefijo NAT64 está habilitado, pero no se está ejecutando (porque el administrador de enrutamiento no está en ejecución).
OT_NAT64_STATE_IDLE
El administrador de prefijos NAT64 está habilitado, pero no publica un prefijo NAT64. Por lo general, cuando hay otro router de borde que publica un prefijo NAT64 con mayor prioridad.
OT_NAT64_STATE_ACTIVE
El administrador de prefijos NAT64 está habilitado y publica el prefijo NAT64 en la red Thread.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Obtiene el estado del traductor de NAT64.

Disponible cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Valores que se muestran
OT_NAT64_STATE_DISABLED
El traductor de NAT64 está inhabilitado.
OT_NAT64_STATE_NOT_RUNNING
El traductor de NAT64 está habilitado, pero no está configurado con un prefijo NAT64 válido ni un CIDR.
OT_NAT64_STATE_ACTIVE
El traductor de NAT64 está habilitado y traduce paquetes.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Inicializa un otNat64AddressMappingIterator.

Un iterador DEBE inicializarse antes de usarse.

Se puede volver a inicializar un iterador para reiniciarse desde el principio de la información de asignación.

Detalles
Parámetros
[in] aInstance
La instancia de OpenThread.
[out] aIterator
Un puntero al iterador para inicializar.

otNat64Send

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Traduce un datagrama IPv4 a un datagrama IPv6 y lo envía a través de la interfaz Thread.

El emisor transfiere la propiedad de aMessage cuando realiza esta llamada. OpenThread liberará aMessage cuando se complete el procesamiento, incluso cuando se muestre un valor distinto de OT_ERROR_NONE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Un puntero para el búfer de mensaje que contiene el datagrama IPv4.
Valores que se muestran
OT_ERROR_NONE
El mensaje se procesó correctamente.
OT_ERROR_DROP
El mensaje tenía un formato correcto, pero no se procesó por completo debido a las reglas de procesamiento de paquetes.
OT_ERROR_NO_BUFS
No se pudieron asignar los búferes de mensajes necesarios cuando se procesa el datagrama.
OT_ERROR_NO_ROUTE
No hay ruta para el host.
OT_ERROR_INVALID_SOURCE_ADDRESS
La dirección de origen no es válida, p.ej., una dirección Anycast o una dirección multidifusión.
OT_ERROR_PARSE
Se encontró un encabezado con errores de formato cuando se procesaba el mensaje.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Habilita o inhabilita las funciones NAT64.

Nota: Esto incluye el traductor NAT64 (cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE) y el Administrador de prefijos de NAT64 (cuando se habilita OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE).

Cuando se habilita OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE, la configuración inhabilitada como verdadero restablece la tabla de asignación en el traductor.

Disponible cuando se habilitan OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE o OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aEnabled
Un valor booleano para habilitar o inhabilitar las funciones NAT64
Consulta también:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

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

Establece el CIDR que se usa cuando se configura la dirección de origen de los paquetes IPv4 traducidos de salida.

Solo está disponible cuando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE está habilitado.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aCidr
Un puntero a un otIp4Cidr para el bloque CIDR de IPv4 para NAT64.
Valores que se muestran
OT_ERROR_INVALID_ARGS
El CIDR especificado no es un CIDR de IPv4 válido para NAT64.
OT_ERROR_NONE
Se configuró correctamente el CIDR para NAT64.
Consulta también:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

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

Registra una devolución de llamada para proporcionar datagramas IPv4 recibidos.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aCallback
Un puntero a una función a la que se llama cuando se recibe un datagrama IPv4 o NULL para inhabilitar la devolución de llamada.
[in] aContext
Un puntero para el contexto específico de la aplicación.

otNat64SynthesizeIp6Address

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

Configura la dirección IPv6 mediante la traducción de direcciones NAT64 desde el prefijo NAT64 preferido y la dirección IPv4 determinada, como se especifica en RFC 6052.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aIp4Address
Un puntero a la dirección IPv4 para traducir a IPv6.
[out] aIp6Address
Un puntero a la dirección IPv6 sintetizada.
Qué muestra
OT_ERROR_NONE Se sintetizó correctamente la dirección IPv6 a partir del prefijo NAT64 y la dirección IPv4.
Qué muestra
OT_ERROR_INVALID_STATE No hay un prefijo NAT64 válido en los datos de la red.

Macros

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Tamaño de una dirección IPv4 (bytes)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Longitud de 000.000.000.000 más un sufijo NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Longitud de 000.000.000.000/00 más un sufijo NUL.

Recursos

Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.