NAT64

Este módulo inclui funções e estruturas para a função NAT64 no roteador de borda.

Resumo

Essas funções só estão disponíveis quando OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE está ativado.

Enumerações

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 do descarte de pacotes.
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
de NAT64.

Typedefs

otIp4Address typedef
struct otIp4Address
Representa um endereço IPv4.
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
Representa um registro de mapeamento de endereço para NAT64.
otNat64AddressMappingIterator typedef
Usado para iterar em mapeamentos de endereços NAT64.
otNat64Counters typedef
Representa os contadores para NAT64.
otNat64DropReason typedef
Motivos do descarte de pacotes.
otNat64ErrorCounters typedef
Representa os contadores de pacotes descartados devido a erros ao processar pacotes NAT64.
otNat64ProtocolCounters typedef
Representa os contadores dos protocolos aceitos pelo NAT64.
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
O ponteiro é chamado quando um datagrama IPv4 (traduzido pelo tradutor NAT64) é recebido.

Variáveis

OT_TOOL_PACKED_END

remotas

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
Converte uma string de endereço IPv4 legível em uma representação binária.
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Converte o endereço em uma string.
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
Converte uma string CIDR IPv4 legível em uma representação binária.
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Converte o CIDR IPv4 em uma string.
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Defina aIp4Address executando a conversão de endereços NAT64 de aIp6Address, conforme especificado na RFC 6052.
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Teste se dois endereços IPv4 são iguais.
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Aloque um novo buffer de mensagem para enviar uma mensagem IPv4 ao conversor NAT64.
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
Recebe o CIDR IPv4 configurado no conversor NAT64.
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Recebe os contadores do tradutor NAT64.
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Recebe os contadores de erro do conversor NAT64.
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Recebe as próximas informações de AddressMapping (usando um iterador).
otNat64GetPrefixManagerState(otInstance *aInstance)
Recebe o estado do gerenciador de prefixos NAT64.
otNat64GetTranslatorState(otInstance *aInstance)
Recebe o estado do conversor NAT64.
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
Converte um datagrama IPv4 em um datagrama IPv6 e o envia pela interface Thread.
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
void
Ative ou desative as funções NAT64.
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
Define o CIDR usado ao definir o endereço de origem dos pacotes IPv4 traduzidos de saída.
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Registra um callback para fornecer datagramas IPv4 recebidos.
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Define o endereço IPv6 realizando a conversão de endereços NAT64 a partir do prefixo NAT64 preferido e do endereço IPv4 fornecido, conforme especificado na RFC 6052.

Estruturas

otIp4Address

Representa um endereço IPv4.

otIp4Cidr

Representa um bloco CIDR IPv4.

otNat64AddressMapping

Representa um registro de mapeamento de endereço para NAT64.

otNat64AddressMappingIterator

Usado para iterar em mapeamentos de endereços NAT64.

otNat64Counters

Representa os contadores para NAT64.

otNat64ErrorCounters

Representa os contadores de pacotes descartados devido a erros ao processar pacotes NAT64.

otNat64ProtocolCounters

Representa os contadores dos protocolos aceitos pelo NAT64.

Sindicatos

otIp4Address::OT_TOOL_PACKED_FIELD

Enumerações

otNat64DropReason

 otNat64DropReason

Motivos do descarte de pacotes.

Propriedades
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

Queda de pacote devido à falha na análise do datagrama.

OT_NAT64_DROP_REASON_NO_MAPPING

Queda de pacote devido a nenhum mapeamento encontrado ou pool de mapeamento esgotado.

OT_NAT64_DROP_REASON_UNKNOWN

Queda de pacote por motivos desconhecidos.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Queda de pacote devido a protocolo IP sem suporte.

otNat64State

 otNat64State

de NAT64.

Propriedades
OT_NAT64_STATE_ACTIVE

O BR está publicando um prefixo NAT64 e/ou traduzindo pacotes.

OT_NAT64_STATE_DISABLED

O NAT64 está desativado.

OT_NAT64_STATE_IDLE

NAT64 está ativado, mas este BR não é um NAT64 BR ativo.

OT_NAT64_STATE_NOT_RUNNING

O NAT64 está ativado, mas uma ou mais dependências do NAT64 não estão em execução.

Typedefs

otIp4Address

struct otIp4Address otIp4Address

Representa um endereço IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

Representa um registro de mapeamento de endereço para NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Usado para iterar em mapeamentos de endereços NAT64.

Os campos nesse tipo são opacos (destinados ao uso apenas pelo núcleo do OpenThread) e, portanto, não podem ser acessados nem usados pelo autor da chamada.

Antes de usar um iterador, ele PRECISA ser inicializado com otNat64AddressMappingIteratorInit().

otNat64Counters

struct otNat64Counters otNat64Counters

Representa os contadores para NAT64.

otNat64DropReason

enum otNat64DropReason otNat64DropReason

Motivos do descarte de pacotes.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Representa os contadores de pacotes descartados devido a erros ao processar pacotes NAT64.

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

Representa os contadores dos protocolos aceitos pelo NAT64.

otNat64ReceiveIp4Callback

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

O ponteiro é chamado quando um datagrama IPv4 (traduzido pelo tradutor NAT64) é recebido.

Detalhes
Parâmetros
[in] aMessage
Um ponteiro para o buffer de mensagem que contém o datagrama IPv6 recebido. Essa função transfere a propriedade do aMessage para o receptor do callback. A mensagem deve ser liberada pelo receptor do callback após o processamento.
[in] aContext
Um ponteiro para o contexto específico do aplicativo.

Variáveis

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

remotas

otIp4AddressFromString

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

Converte uma string de endereço IPv4 legível em uma representação binária.

Detalhes
Parâmetros
[in] aString
Um ponteiro para uma string terminada em NULL.
[out] aAddress
Um ponteiro para um endereço IPv4.
Valores de retorno
OT_ERROR_NONE
A string foi analisada.
OT_ERROR_INVALID_ARGS
Falha ao analisar a string.

otIp4AddressToString

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

Converte o endereço em uma string.

O formato da string usa a notação de quatro pontos de quatro bytes no endereço (por exemplo, "127.0.0.1").

Se a string resultante não couber em aBuffer (dentro dos caracteres aSize), ela será truncada, mas a gerada sempre será terminada com valor nulo.

Detalhes
Parâmetros
[in] aAddress
Um ponteiro para um endereço IPv4 (NÃO DEVE ser NULL).
[out] aBuffer
Um ponteiro para uma matriz de caracteres para produzir a string (NÃO DEVE ser nullptr).
[in] aSize
O tamanho de aBuffer (em bytes).

otIp4CidrFromString

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

Converte uma string CIDR IPv4 legível em uma representação binária.

Detalhes
Parâmetros
[in] aString
Um ponteiro para uma string terminada em NULL.
[out] aCidr
Um ponteiro para um CIDR IPv4.
Valores de retorno
OT_ERROR_NONE
A string foi analisada.
OT_ERROR_INVALID_ARGS
Falha ao analisar a string.

otIp4CidrToString

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

Converte o CIDR IPv4 em uma string.

O formato da string usa a notação de quatro pontos com quatro bytes no endereço com o comprimento do prefixo (por exemplo, "127.0.0.1/32").

Se a string resultante não couber em aBuffer (dentro dos caracteres aSize), ela será truncada, mas a gerada sempre será terminada com valor nulo.

Detalhes
Parâmetros
[in] aCidr
Um ponteiro para um CIDR IPv4 (NÃO DEVE ser NULL).
[out] aBuffer
Um ponteiro para uma matriz de caracteres para produzir a string (NÃO DEVE ser nullptr).
[in] aSize
O tamanho de aBuffer (em bytes).

otIp4ExtractFromIp6Address

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

Defina aIp4Address executando a conversão de endereços NAT64 de aIp6Address, conforme especificado na RFC 6052.

O aPrefixLength do NAT64 PRECISA ser um dos seguintes valores: 32, 40, 48, 56, 64 ou 96. Caso contrário, o comportamento desse método é indefinido.

Detalhes
Parâmetros
[in] aPrefixLength
O tamanho do prefixo a ser usado para a tradução IPv4/IPv6.
[in] aIp6Address
Um ponteiro para um endereço IPv6.
[out] aIp4Address
Um ponteiro para a saída do endereço IPv4.

otIp4IsAddressEqual

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

Teste se dois endereços IPv4 são iguais.

Detalhes
Parâmetros
[in] aFirst
Um ponteiro para o primeiro endereço IPv4 a comparar.
[in] aSecond
Um ponteiro para o segundo endereço IPv4 a ser comparado.
Valores de retorno
TRUE
Os dois endereços IPv4 são iguais.
FALSE
Os dois endereços IPv4 não são iguais.

otIp4NewMessage

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

Aloque um novo buffer de mensagem para enviar uma mensagem IPv4 ao conversor NAT64.

Os buffers de mensagem alocados por essa função terão 20 bytes reservados (diferença entre o tamanho dos cabeçalhos IPv6 e dos cabeçalhos IPv4).

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aSettings
Um ponteiro para as configurações da mensagem ou NULL para definir as configurações padrão.
Retorna
Um ponteiro para o buffer de mensagem ou NULL se nenhum buffer de mensagem estiver disponível ou se os parâmetros forem inválidos.
Consulte também:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Recebe o CIDR IPv4 configurado no conversor NAT64.

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[out] aCidr
Um ponteiro para um otIp4Cidr. Local em que o CIDR será preenchido.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Recebe os contadores do tradutor NAT64.

O contador é contado desde a inicialização da instância.

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[out] aCounters
Um ponteiro para um otNat64Counters em que os contadores do tradutor NAT64 serão colocados.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Recebe os contadores de erro do conversor NAT64.

Os contadores são inicializados com zero quando a instância do OpenThread é inicializada.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[out] aCounters
Um ponteiro para um otNat64Counters em que os contadores do tradutor NAT64 serão colocados.

otNat64GetNextAddressMapping

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

Recebe as próximas informações de AddressMapping (usando um iterador).

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in,out] aIterator
Um ponteiro para o iterador. Se for bem-sucedido, o iterador será atualizado para apontar para o próximo registro de mapeamento de endereço NAT64. Para conseguir a primeira entrada, o iterador precisa ser definido como OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Um ponteiro para um otNat64AddressMapping em que as informações do próximo registro de mapeamento de endereço NAT64 são colocadas (em caso de sucesso).
Valores de retorno
OT_ERROR_NONE
As próximas informações de mapeamento de endereço NAT64 foram encontradas (aMapping foi atualizado).
OT_ERROR_NOT_FOUND
Nenhuma informação subsequente de mapeamento de endereço NAT64 foi encontrada.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Recebe o estado do gerenciador de prefixos NAT64.

Disponível quando o OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
Valores de retorno
OT_NAT64_STATE_DISABLED
O gerenciador de prefixos NAT64 está desativado.
OT_NAT64_STATE_NOT_RUNNING
O gerenciador de prefixo NAT64 está ativado, mas não está em execução (porque o gerenciador de roteamento não está em execução).
OT_NAT64_STATE_IDLE
O gerenciador de prefixos NAT64 está ativado, mas não está publicando um prefixo NAT64. Normalmente, quando há outro roteador de borda publicando um prefixo NAT64 com prioridade mais alta.
OT_NAT64_STATE_ACTIVE
O gerenciador de prefixos NAT64 está ativado e publica o prefixo NAT64 na rede Thread.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Recebe o estado do conversor NAT64.

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
Valores de retorno
OT_NAT64_STATE_DISABLED
O tradutor NAT64 está desativado.
OT_NAT64_STATE_NOT_RUNNING
O conversor NAT64 está ativado, mas não está configurado com um prefixo NAT64 válido e um CIDR.
OT_NAT64_STATE_ACTIVE
O tradutor NAT64 está ativado e traduzindo pacotes.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Inicializa um otNat64AddressMappingIterator.

Um iterador PRECISA ser inicializado antes de ser usado.

Um iterador pode ser inicializado novamente para reiniciar desde o início das informações de mapeamento.

Detalhes
Parâmetros
[in] aInstance
A instância do OpenThread.
[out] aIterator
Um ponteiro para o iterador a ser inicializado.

otNat64Send

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Converte um datagrama IPv4 em um datagrama IPv6 e o envia pela interface Thread.

O autor da chamada transfere a propriedade de aMessage ao fazer esta chamada. O OpenThread liberará aMessage quando o processamento for concluído, inclusive quando um valor diferente de OT_ERROR_NONE for retornado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aMessage
Um ponteiro para o buffer de mensagem que contém o datagrama IPv4.
Valores de retorno
OT_ERROR_NONE
A mensagem foi processada.
OT_ERROR_DROP
A mensagem foi formada corretamente, mas não foi totalmente processada devido a regras de processamento de pacotes.
OT_ERROR_NO_BUFS
Não foi possível alocar buffers de mensagem necessários ao processar o datagrama.
OT_ERROR_NO_ROUTE
Nenhuma rota para o host.
OT_ERROR_INVALID_SOURCE_ADDRESS
O endereço de origem é inválido. Por exemplo, um endereço anycast ou multicast.
OT_ERROR_PARSE
Um cabeçalho incorreto foi encontrado ao processar a mensagem.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Ative ou desative as funções NAT64.

Observação: isso inclui o Tradutor NAT64 (quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE está ativado) e o Gerenciador de prefixo NAT64 (quando OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE está ativado).

Quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE estiver ativado, definir "Desativado" como "true" redefine a tabela de mapeamento no tradutor.

Disponível quando o OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE ou o OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE estão ativados.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aEnabled
Um booleano para ativar/desativar as funções NAT64
Consulte também:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

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

Define o CIDR usado ao definir o endereço de origem dos pacotes IPv4 traduzidos de saída.

Só está disponível quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE está ativado.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aCidr
Um ponteiro para um otIp4Cidr para o bloco CIDR IPv4 para NAT64.
Valores de retorno
OT_ERROR_INVALID_ARGS
O CIDR fornecido não é um CIDR IPv4 válido para NAT64.
OT_ERROR_NONE
O CIDR para NAT64 foi definido.
Consulte também:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

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

Registra um callback para fornecer datagramas IPv4 recebidos.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aCallback
Um ponteiro para uma função que é chamada quando um datagrama IPv4 é recebido ou NULL para desativar o callback.
[in] aContext
Um ponteiro para o contexto específico do aplicativo.

otNat64SynthesizeIp6Address

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

Define o endereço IPv6 realizando a conversão de endereços NAT64 a partir do prefixo NAT64 preferido e do endereço IPv4 fornecido, conforme especificado na RFC 6052.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aIp4Address
Um ponteiro para o endereço IPv4 a ser convertido para IPv6.
[out] aIp6Address
Um ponteiro para o endereço IPv6 sintetizado.
Retorna
OT_ERROR_NONE O endereço IPv6 foi sintetizado do prefixo NAT64 e do endereço IPv4.
Retorna
OT_ERROR_INVALID_STATE Nenhum prefixo NAT64 válido nos dados da rede.

Macros

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Tamanho de um endereço IPv4 (bytes)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Comprimento de 000.000.000.000 mais um sufixo NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Comprimento de 000.000.000.000/00 mais um sufixo NUL.

Recursos

Os tópicos de Referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para mais informações ou para contribuir com nossa documentação, consulte Recursos.