Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

NAT64

Questo modulo include funzioni e strutture per la funzione NAT64 sul router di confine.

Riepilogo

Queste funzioni sono disponibili solo quando OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE è attivato.

Enumerazioni

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
Motivi del calo dei pacchetti.
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
Stati di NAT64.

Defin

otIp4Address Typedef
struct otIp4Address
Questa struttura rappresenta un indirizzo IPv4.
otIp4Cidr Typedef
struct otIp4Cidr
otNat64AddressMapping Typedef
Rappresenta un record di mappatura degli indirizzi per NAT64.
otNat64AddressMappingIterator Typedef
Utilizzato per eseguire l'iterazione tramite mappature di indirizzi NAT64.
otNat64Counters Typedef
Rappresenta i contatori per NAT64.
otNat64DropReason Typedef
Motivi del calo dei pacchetti.
otNat64ErrorCounters Typedef
Rappresenta i contatori dei pacchetti persi a causa di errori durante la gestione dei pacchetti NAT64.
otNat64ProtocolCounters Typedef
Rappresenta i contatori per i protocolli supportati da NAT64.
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) Typedef
void(*
Il suggerimento di questa funzione viene richiamato quando si riceve un datagram IPv4 (tradotto da Traduttore NAT64).

Variabili

OT_TOOL_PACKED_END

Functions

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
Converte una stringa di indirizzo IPv4 leggibile in una rappresentazione binaria.
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Converte l'indirizzo in una stringa.
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Converte il CIDR IPv4 in una stringa.
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Imposta aIp4Address eseguendo la traduzione dell'indirizzo NAT64 da aIp6Address come specificato in RFC 6052.
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Verifica se due indirizzi IPv4 sono uguali.
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Alloca un nuovo buffer di messaggi per l'invio di un messaggio IPv4 al traduttore NAT64.
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
Recupera il CIDR IPv4 configurato nel traduttore NAT64.
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Recupera i contatori di traduttore NAT64.
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Visualizza i contatori degli errori di traduzione NAT64.
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Visualizza le prossime informazioni MapMaping (utilizzando un iteratore).
otNat64GetPrefixManagerState(otInstance *aInstance)
Visualizza lo stato del prefisso prefisso NAT64.
otNat64GetTranslatorState(otInstance *aInstance)
Visualizza lo stato del traduttore NAT64.
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
Traduce un datagram IPv4 in un datagram IPv6 e invia tramite l'interfaccia Thread.
otNat64SetEnabled(otInstance *aInstance, bool aEnable)
void
Abilita o disabilita le funzioni NAT64.
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
Imposta il CIDR utilizzato durante l'impostazione dell'indirizzo di origine dei pacchetti IPv4 tradotti in uscita.
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Registra un callback per fornire i datagrammi IPv4 ricevuti.
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Imposta l'indirizzo IPv6 eseguendo la traduzione dell'indirizzo NAT64 dal prefisso NAT64 preferito e dall'indirizzo IPv4 specificato come specificato in RFC 6052.

Struttura

otIp4Address

Questa struttura rappresenta un indirizzo IPv4.

OtIp4Cidr

Questa struttura rappresenta un blocco CIDR IPv4.

otNat64AddressMapping

Rappresenta un record di mappatura degli indirizzi per NAT64.

otNat64AddressMappingIterator

Utilizzato per eseguire l'iterazione tramite mappature di indirizzi NAT64.

otNat64Counters

Rappresenta i contatori per NAT64.

otNat64ErrorCounters

Rappresenta i contatori dei pacchetti persi a causa di errori durante la gestione dei pacchetti NAT64.

otNat64ProtocolCounters

Rappresenta i contatori per i protocolli supportati da NAT64.

Unioni

otIp4Address::OT_TOOL_PACKED_FIELD

Enumerazioni

OtNat64MotivoMotivo

 otNat64DropReason

Motivi del calo dei pacchetti.

Proprietà
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

Riduzione del pacchetto a causa di un errore nell'analisi del diagramma di dati.

OT_NAT64_DROP_REASON_NO_MAPPING

Riduzione del pacchetto dovuta all'assenza di mappature o all'esaurimento del pool di mappatura.

OT_NAT64_DROP_REASON_UNKNOWN

Riduzione del pacchetto per motivi sconosciuti.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Eliminazione del pacchetto dovuta a un protocollo IP non supportato.

stato otNat64

 otNat64State

Stati di NAT64.

Proprietà
OT_NAT64_STATE_ACTIVE

Il BR sta pubblicando un prefisso NAT64 e/o converte i pacchetti.

OT_NAT64_STATE_DISABLED

NAT64 è disabilitato.

OT_NAT64_STATE_IDLE

NAT64 BR è abilitato, ma questo BR non è un NAT64 BR attivo.

OT_NAT64_STATE_NOT_RUNNING

NAT64 è abilitato, ma una o più dipendenze di NAT64 non sono in esecuzione.

Defin

Indirizzo otIp4

struct otIp4Address otIp4Address

Questa struttura rappresenta un indirizzo IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

Rappresenta un record di mappatura degli indirizzi per NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Utilizzato per eseguire l'iterazione tramite mappature di indirizzi NAT64.

I campi in questo tipo sono opachi (previsti per l'uso esclusivo da parte di OpenThread) e pertanto non devono essere accessibili o utilizzati dal chiamante.

Prima di utilizzare un iteratore, DEVE essere inizializzato utilizzando otNat64AddressMappingIteratorInit().

otNat64Contatori

struct otNat64Counters otNat64Counters

Rappresenta i contatori per NAT64.

OtNat64MotivoMotivo

enum otNat64DropReason otNat64DropReason

Motivi del calo dei pacchetti.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Rappresenta i contatori dei pacchetti persi a causa di errori durante la gestione dei pacchetti NAT64.

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

Rappresenta i contatori per i protocolli supportati da NAT64.

otNat64RiceviIp4Richiama

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

Il suggerimento di questa funzione viene richiamato quando si riceve un datagram IPv4 (tradotto da Traduttore NAT64).

Dettagli
Parametri
[in] aMessage
Un puntatore al buffer dei messaggi contenente il datagram IPv6 ricevuto. Questa funzione trasferisce la proprietà di aMessage al destinatario del callback. Il messaggio dovrebbe essere liberato dal destinatario del callback dopo l'elaborazione.
[in] aContext
Un puntatore al contesto specifico dell'applicazione.

Variabili

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

Functions

otIp4AddressFromString

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

Converte una stringa di indirizzo IPv4 leggibile in una rappresentazione binaria.

Dettagli
Parametri
[in] aString
Un puntatore a una stringa terminata con NULL.
[out] aAddress
Un puntatore a un indirizzo IPv4.
Valori restituiti
OT_ERROR_NONE
Stringa analizzata correttamente.
OT_ERROR_INVALID_ARGS
Impossibile analizzare la stringa.

otIp4AddressToString

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

Converte l'indirizzo in una stringa.

Il formato stringa utilizza una notazione quadrata di quattro byte nell'indirizzo (ad es. "127.0.0.1".

Se la stringa risultante non rientra in aBuffer (nei suoi aSize caratteri), la stringa verrà troncata ma la stringa restituita è sempre null-terminata.

Dettagli
Parametri
[in] aAddress
Un puntatore a un indirizzo IPv4 (NON DEVE essere NULL).
[out] aBuffer
Un puntatore a un array di caratteri per restituire la stringa (NON deve essere nullptr).
[in] aSize
Le dimensioni di aBuffer (in byte).

otIp4CidrToString

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

Converte il CIDR IPv4 in una stringa.

Il formato stringa utilizza la notazione quadrupla di quattro byte nell'indirizzo con la lunghezza del prefisso (ad esempio "127.0.0.1/32".

Se la stringa risultante non rientra in aBuffer (nei suoi aSize caratteri), la stringa verrà troncata ma la stringa restituita è sempre null-terminata.

Dettagli
Parametri
[in] aCidr
Un puntatore a un CIDR IPv4 (NON DEVE essere NULL).
[out] aBuffer
Un puntatore a un array di caratteri per restituire la stringa (NON deve essere nullptr).
[in] aSize
Le dimensioni di aBuffer (in byte).

otIp4ExtractFromIp6Address

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

Imposta aIp4Address eseguendo la traduzione dell'indirizzo NAT64 da aIp6Address come specificato in RFC 6052.

NAT64 aPrefixLength DEVE essere uno dei seguenti valori: 32, 40, 48, 56, 64 o 96, altrimenti il comportamento di questo metodo non è definito.

Dettagli
Parametri
[in] aPrefixLength
La lunghezza del prefisso da utilizzare per la traduzione IPv4/IPv6.
[in] aIp6Address
Un puntatore a un indirizzo IPv6.
[out] aIp4Address
Un puntatore per emettere l'indirizzo IPv4.

otIp4IsAddressEqual

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

Verifica se due indirizzi IPv4 sono uguali.

Dettagli
Parametri
[in] aFirst
Un puntatore al primo indirizzo IPv4 da confrontare.
[in] aSecond
Un puntatore al secondo indirizzo IPv4 da confrontare.
Valori restituiti
TRUE
I due indirizzi IPv4 sono gli stessi.
FALSE
I due indirizzi IPv4 non sono uguali.

otIp4NuovoMessaggio

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

Alloca un nuovo buffer di messaggi per l'invio di un messaggio IPv4 al traduttore NAT64.

I buffer di messaggi assegnati da questa funzione avranno 20 byte (differenza tra le dimensioni delle intestazioni IPv6 e delle dimensioni dell'intestazione IPv4).

Disponibile quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aSettings
Un puntatore alle impostazioni del messaggio o NULL per configurare le impostazioni predefinite.
Restituisce
Un puntatore al buffer dei messaggi o a NULL se non sono disponibili buffer di messaggio o parametri non validi.
Vedi anche:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Recupera il CIDR IPv4 configurato nel traduttore NAT64.

Disponibile quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[out] aCidr
Un puntatore a otIp4Cidr. Dove verrà compilato il CIDR.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Recupera i contatori di traduttore NAT64.

Il contatore viene conteggiato dal momento dell'inizializzazione dell'istanza.

Disponibile quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[out] aCounters
Un puntatore a un otNat64Counters in cui verranno inseriti i contatori del traduttore NAT64.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Visualizza i contatori degli errori di traduzione NAT64.

I contatori vengono inizializzati su zero quando l'istanza OpenThread viene inizializzata.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[out] aCounters
Un puntatore a un otNat64Counters in cui verranno inseriti i contatori del traduttore NAT64.

otNat64GetNextAddressMapping

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

Visualizza le prossime informazioni MapMaping (utilizzando un iteratore).

Disponibile quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in,out] aIterator
Un puntatore all'iteratore. In caso di esito positivo, l'iteratore verrà aggiornato in modo che punti al successivo record di mappatura degli indirizzi NAT64. Per ottenere la prima voce, l'iteratore deve essere impostato su OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Un puntatore a un otNat64AddressMapping in cui vengono inserite le informazioni del successivo record di mappatura degli indirizzi NAT64 (in caso di esito positivo).
Valori restituiti
OT_ERROR_NONE
Impossibile trovare le informazioni successive sulla mappatura degli indirizzi NAT64 (aMapping è stata aggiornata).
OT_ERROR_NOT_FOUND
Non sono state trovate informazioni successive sulla mappatura degli indirizzi NAT64.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Visualizza lo stato del prefisso prefisso NAT64.

Disponibile quando OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Valori restituiti
OT_NAT64_STATE_DISABLED
Gestore prefissi NAT64 disabilitato.
OT_NAT64_STATE_NOT_RUNNING
Il gestore di prefissi NAT64 è attivo, ma non è in esecuzione (perché il gestore di routing non è in esecuzione).
OT_NAT64_STATE_IDLE
Il gestore prefisso NAT64 è abilitato, ma non sta pubblicando un prefisso NAT64. Di solito quando c'è un altro router di confine che pubblica un prefisso NAT64 con priorità più alta.
OT_NAT64_STATE_ACTIVE
Il gestore di prefissi NAT64 è attivo e pubblica il prefisso NAT64 sulla rete Thread.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Visualizza lo stato del traduttore NAT64.

Disponibile quando OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE è attivato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Valori restituiti
OT_NAT64_STATE_DISABLED
Il traduttore NAT64 è disabilitato.
OT_NAT64_STATE_NOT_RUNNING
Il traduttore NAT64 è abilitato, ma il traduttore non è configurato con un prefisso NAT64 valido e un CIDR.
OT_NAT64_STATE_ACTIVE
Il traduttore NAT64 è attivo e traduce i pacchetti.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Inizializza un otNat64AddressMappingIterator.

Un iteratore DEVE essere inizializzato prima di essere utilizzato.

Un iteratore può essere inizializzato di nuovo per riavviare dall'inizio delle informazioni di mappatura.

Dettagli
Parametri
[in] aInstance
L'istanza OpenThread.
[out] aIterator
Un puntatore all'iteratore per inizializzare.

otNat64Invia

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Traduce un datagram IPv4 in un datagram IPv6 e invia tramite l'interfaccia Thread.

Quando effettua la chiamata, il chiamante trasferisce la proprietà di aMessage. OpenThread libera aMessage quando l'elaborazione viene completata, incluso quando viene restituito un valore diverso da OT_ERROR_NONE.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aMessage
Un puntatore al buffer dei messaggi contenente il datagram IPv4.
Valori restituiti
OT_ERROR_NONE
Il messaggio è stato elaborato.
OT_ERROR_DROP
Il messaggio è stato formattato correttamente, ma non è stato elaborato completamente a causa delle regole di elaborazione del pacchetto.
OT_ERROR_NO_BUFS
Impossibile allocare i buffer di messaggi necessari durante l'elaborazione del datagram.
OT_ERROR_NO_ROUTE
Nessun percorso per l'host.
OT_ERROR_INVALID_SOURCE_ADDRESS
L'indirizzo di origine non è valido, ad esempio un indirizzo anycast o un indirizzo multicast.
OT_ERROR_PARSE
È stata rilevata un'intestazione non valida durante l'elaborazione del messaggio.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnable
)

Abilita o disabilita le funzioni NAT64.

Nota: sono inclusi il NAT64 Translator (quando è abilitato OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE) e NAT64 Prefix Manager (quando OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE è attivato).

Se il criterio OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE viene attivato, l'impostazione disattivata su true reimposta la tabella di mappatura nel traduttore.

Disponibile quando è attivata la modalità OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE o OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aEnabled
Un valore booleano per abilitare/disabilitare le funzioni NAT64
Vedi anche:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

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

Imposta il CIDR utilizzato durante l'impostazione dell'indirizzo di origine dei pacchetti IPv4 tradotti in uscita.

Questa funzione è disponibile solo quando OPENThread_CONFIG_NAT64_TRANSLATOR_ENABLE è abilitato.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aCidr
Un puntatore a otIp4Cidr per il blocco CIDR IPv4 per NAT64.
Valori restituiti
OT_ERROR_INVALID_ARGS
Il CIDR specificato non è un CIDR IPv4 valido per NAT64.
OT_ERROR_NONE
CIDR impostato per NAT64.
Vedi anche:
otBorderRouterSend
otBorderRouterSetReceivedCallback

otNat64SetReceivedIp4Callback

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

Registra un callback per fornire i datagrammi IPv4 ricevuti.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aCallback
Un puntatore a una funzione chiamata quando si riceve un datagram IPv4 o NULL per disabilitare il callback.
[in] aCallbackContext
Un puntatore al contesto specifico dell'applicazione.

otNat64SynthesizeIp6Address

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

Imposta l'indirizzo IPv6 eseguendo la traduzione dell'indirizzo NAT64 dal prefisso NAT64 preferito e dall'indirizzo IPv4 specificato come specificato in RFC 6052.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aIp4Address
Un puntatore all'indirizzo IPv4 da tradurre in IPv6.
[out] aIp6Address
Un puntatore all'indirizzo IPv6 sintetizzato.
Restituisce
OT_ERROR_NONE Sintetizzato correttamente l'indirizzo IPv6 dal prefisso NAT64 e dall'indirizzo IPv4.
Restituisce
OT_ERROR_INVALID_STATE Nessun prefisso NAT64 valido nei dati di rete.

Macro

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Dimensioni di un indirizzo IPv4 (byte)

OT_IP4_INDIRIZZO_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Lunghezza di 000.000.000.000 più un suffisso NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Lunghezza di 000.000.000.000/00 più un suffisso NUL.

Risorse

Gli argomenti di riferimento dell'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per scoprire di più o per contribuire alla nostra documentazione, consulta le Risorse.