NAT64

Ce module inclut des fonctions et des structs pour la fonction NAT64 sur le routeur de bordure.

Résumé

Ces fonctions ne sont disponibles que lorsque OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE est activé.

Énumérations

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
Motifs de suppression de paquets.
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
États du NAT64.

Typedefs

otIp4Address typedef
struct otIp4Address
Représente une adresse IPv4.
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
Représente un enregistrement de mappage d'adresses pour NAT64.
otNat64AddressMappingIterator typedef
Utilisé pour itérer via les mappages d'adresses NAT64.
otNat64Counters typedef
Représente les compteurs pour NAT64.
otNat64DropReason typedef
Motifs de suppression de paquets.
otNat64ErrorCounters typedef
Représente les compteurs de paquets supprimés en raison d'erreurs lors du traitement des paquets NAT64.
otNat64ProtocolCounters typedef
Représente les compteurs pour les protocoles compatibles avec NAT64.
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
Le pointeur est appelé lors de la réception d'un datagramme IPv4 (traduit par le traducteur NAT64).

Variables

OT_TOOL_PACKED_END

distantes

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
Convertit une chaîne d'adresse IPv4 lisible en une représentation binaire.
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Convertit l'adresse en chaîne.
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
Convertit une chaîne CIDR IPv4 lisible en une représentation binaire.
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Convertit le CIDR IPv4 en chaîne.
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Définissez aIp4Address en effectuant une traduction d'adresse NAT64 à partir de aIp6Address, comme spécifié dans le document RFC 6052.
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Vérifiez si deux adresses IPv4 sont identiques.
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Allouez un nouveau tampon de messages pour envoyer un message IPv4 au traducteur NAT64.
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
Récupère le CIDR IPv4 configuré dans le traducteur NAT64.
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Récupère les compteurs de traducteur NAT64.
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Récupère les compteurs d'erreurs de traducteur NAT64.
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Récupère les informations AddressMapping suivantes (à l'aide d'un itérateur).
otNat64GetPrefixManagerState(otInstance *aInstance)
Récupère l'état du gestionnaire de préfixes NAT64.
otNat64GetTranslatorState(otInstance *aInstance)
Récupère l'état du traducteur NAT64.
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
Traduit un datagramme IPv4 en datagramme IPv6 et l’envoie via l’interface Thread.
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
void
Activez ou désactivez les fonctions NAT64.
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
Définit le CIDR utilisé lors de la définition de l'adresse source des paquets IPv4 traduits sortants.
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Enregistre un rappel pour fournir les datagrammes IPv4 reçus.
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Définit l'adresse IPv6 en effectuant une traduction d'adresse NAT64 à partir du préfixe NAT64 préféré et de l'adresse IPv4 donnée, comme spécifié dans le document RFC 6052.

Structs

otIp4Address

Représente une adresse IPv4.

otIp4Cidr

Représente un bloc CIDR IPv4.

otNat64AddressMapping

Représente un enregistrement de mappage d'adresses pour NAT64.

otNat64AddressMappingIterator

Utilisé pour itérer via les mappages d'adresses NAT64.

otNat64Counters

Représente les compteurs pour NAT64.

otNat64ErrorCounters

Représente les compteurs de paquets supprimés en raison d'erreurs lors du traitement des paquets NAT64.

otNat64ProtocolCounters

Représente les compteurs pour les protocoles compatibles avec NAT64.

Unions

otIp4Address::OT_TOOL_PACKED_FIELD

Énumérations

otNat64DropReason

 otNat64DropReason

Motifs de suppression de paquets.

Propriétés
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

Suppression de paquets due à l'échec de l'analyse du datagramme.

OT_NAT64_DROP_REASON_NO_MAPPING

Suppression de paquets en raison d'aucun mappage trouvé ou de l'épuisement du pool de mappage.

OT_NAT64_DROP_REASON_UNKNOWN

Interruption des paquets pour des raisons inconnues.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Suppression de paquets en raison d'un protocole IP non compatible.

otNat64State

 otNat64State

États du NAT64.

Propriétés
OT_NAT64_STATE_ACTIVE

Le BR publie un préfixe NAT64 et/ou traduit des paquets.

OT_NAT64_STATE_DISABLED

NAT64 est désactivé.

OT_NAT64_STATE_IDLE

Le NAT64 est activé, mais ce BR n'est pas un BR NAT64 actif.

OT_NAT64_STATE_NOT_RUNNING

NAT64 est activé, mais une ou plusieurs de ses dépendances ne s'exécutent pas.

Typedefs

otIp4Address

struct otIp4Address otIp4Address

Représente une adresse IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

Représente un enregistrement de mappage d'adresses pour NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Utilisé pour itérer via les mappages d'adresses NAT64.

Les champs de ce type sont opaques (destinés à être utilisés uniquement par le cœur OpenThread) et ne doivent donc pas être accessibles ou utilisés par l'appelant.

Avant d'utiliser un itérateur, vous DEVEZ l'initialiser à l'aide de otNat64AddressMappingIteratorInit().

otNat64Counters

struct otNat64Counters otNat64Counters

Représente les compteurs pour NAT64.

otNat64DropReason

enum otNat64DropReason otNat64DropReason

Motifs de suppression de paquets.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Représente les compteurs de paquets supprimés en raison d'erreurs lors du traitement des paquets NAT64.

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

Représente les compteurs pour les protocoles compatibles avec NAT64.

otNat64ReceiveIp4Callback

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

Le pointeur est appelé lors de la réception d'un datagramme IPv4 (traduit par le traducteur NAT64).

Détails
Paramètres
[in] aMessage
Pointeur vers le tampon du message contenant le datagramme IPv6 reçu. Cette fonction transfère la propriété de aMessage au destinataire du rappel. Le message doit être libéré par le destinataire du rappel après son traitement.
[in] aContext
Pointeur vers un contexte spécifique à l'application.

Variables

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

distantes

otIp4AddressFromString

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

Convertit une chaîne d'adresse IPv4 lisible en une représentation binaire.

Détails
Paramètres
[in] aString
Pointeur vers une chaîne se terminant par une valeur NULL.
[out] aAddress
Pointeur vers une adresse IPv4.
Valeurs de retour
OT_ERROR_NONE
La chaîne a bien été analysée.
OT_ERROR_INVALID_ARGS
Échec de l'analyse de la chaîne.

otIp4AddressToString

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

Convertit l'adresse en chaîne.

Le format de chaîne utilise une notation à quatre points de quatre octets dans l'adresse (par exemple, "127.0.0.1").

Si la chaîne obtenue ne rentre pas dans aBuffer (de ses caractères aSize), elle sera tronquée, mais la sortie sera toujours nulle et se termine toujours.

Détails
Paramètres
[in] aAddress
Un pointeur vers une adresse IPv4 (NE DOIT PAS être NULL).
[out] aBuffer
Un pointeur vers un tableau de caractères pour générer la chaîne (NE DOIT PAS être nullptr).
[in] aSize
Taille de aBuffer (en octets).

otIp4CidrFromString

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

Convertit une chaîne CIDR IPv4 lisible en une représentation binaire.

Détails
Paramètres
[in] aString
Pointeur vers une chaîne se terminant par une valeur NULL.
[out] aCidr
Pointeur vers un CIDR IPv4.
Valeurs de retour
OT_ERROR_NONE
La chaîne a bien été analysée.
OT_ERROR_INVALID_ARGS
Échec de l'analyse de la chaîne.

otIp4CidrToString

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

Convertit le CIDR IPv4 en chaîne.

Le format de chaîne utilise une notation à quatre points de quatre octets dans l'adresse, avec la longueur du préfixe (par exemple, "127.0.0.1/32").

Si la chaîne obtenue ne rentre pas dans aBuffer (de ses caractères aSize), elle sera tronquée, mais la sortie sera toujours nulle et se termine toujours.

Détails
Paramètres
[in] aCidr
Pointeur vers un CIDR IPv4 (NE DOIT PAS être NULL).
[out] aBuffer
Un pointeur vers un tableau de caractères pour générer la chaîne (NE DOIT PAS être nullptr).
[in] aSize
Taille de aBuffer (en octets).

otIp4ExtractFromIp6Address

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

Définissez aIp4Address en effectuant une traduction d'adresse NAT64 à partir de aIp6Address, comme spécifié dans le document RFC 6052.

Le aPrefixLength NAT64 DOIT être l'une des valeurs suivantes: 32, 40, 48, 56, 64 ou 96. Sinon, le comportement de cette méthode n'est pas défini.

Détails
Paramètres
[in] aPrefixLength
Longueur de préfixe à utiliser pour la traduction IPv4/IPv6.
[in] aIp6Address
Pointeur vers une adresse IPv6.
[out] aIp4Address
Pointeur permettant de générer l'adresse IPv4.

otIp4IsAddressEqual

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

Vérifiez si deux adresses IPv4 sont identiques.

Détails
Paramètres
[in] aFirst
Pointeur vers la première adresse IPv4 à comparer.
[in] aSecond
Pointeur vers la deuxième adresse IPv4 à comparer.
Valeurs de retour
TRUE
Les deux adresses IPv4 sont identiques.
FALSE
Les deux adresses IPv4 ne sont pas les mêmes.

otIp4NewMessage

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

Allouez un nouveau tampon de messages pour envoyer un message IPv4 au traducteur NAT64.

Les tampons de messages alloués par cette fonction auront 20 octets réservés (différence entre la taille des en-têtes IPv6 et celle des en-têtes IPv4).

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aSettings
Pointeur vers les paramètres du message ou NULL pour définir les paramètres par défaut.
Renvoie
Pointeur vers le tampon du message ou NULL si aucun tampon de message n'est disponible ou si les paramètres ne sont pas valides.
Voir aussi:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Récupère le CIDR IPv4 configuré dans le traducteur NAT64.

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[out] aCidr
Un pointeur vers un otIp4Cidr. Où le CIDR sera rempli.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Récupère les compteurs de traducteur NAT64.

Le compteur est comptabilisé depuis l'initialisation de l'instance.

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[out] aCounters
Pointeur vers un otNat64Counters où seront placés les compteurs du traducteur NAT64.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Récupère les compteurs d'erreurs de traducteur NAT64.

Les compteurs sont initialisés à zéro lorsque l'instance OpenThread est initialisée.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[out] aCounters
Pointeur vers un otNat64Counters où seront placés les compteurs du traducteur NAT64.

otNat64GetNextAddressMapping

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

Récupère les informations AddressMapping suivantes (à l'aide d'un itérateur).

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in,out] aIterator
Pointeur vers l'itérateur. En cas de réussite, l'itérateur est mis à jour pour pointer vers le prochain enregistrement de mappage d'adresses NAT64. Pour obtenir la première entrée, l'itérateur doit être défini sur OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Pointeur vers un otNat64AddressMapping où les informations du prochain enregistrement de mappage d'adresses NAT64 sont placées (en cas de réussite).
Valeurs de retour
OT_ERROR_NONE
Les informations de mappage d'adresses NAT64 suivantes ont bien été trouvées (aMapping a bien été mis à jour).
OT_ERROR_NOT_FOUND
Aucune information de mappage d'adresses NAT64 ultérieure n'a été trouvée.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Récupère l'état du gestionnaire de préfixes NAT64.

Disponible lorsque OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
Valeurs de retour
OT_NAT64_STATE_DISABLED
Le gestionnaire de préfixes NAT64 est désactivé.
OT_NAT64_STATE_NOT_RUNNING
Le gestionnaire de préfixes NAT64 est activé, mais n'est pas en cours d'exécution (car le gestionnaire de routage n'est pas en cours d'exécution).
OT_NAT64_STATE_IDLE
Le gestionnaire de préfixes NAT64 est activé, mais il ne publie pas de préfixe NAT64. Généralement, lorsqu'un autre routeur de bordure publie un préfixe NAT64 avec une priorité plus élevée.
OT_NAT64_STATE_ACTIVE
Le gestionnaire de préfixes NAT64 est activé et publie le préfixe NAT64 sur le réseau Thread.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Récupère l'état du traducteur NAT64.

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
Valeurs de retour
OT_NAT64_STATE_DISABLED
Le traducteur NAT64 est désactivé.
OT_NAT64_STATE_NOT_RUNNING
Le traducteur NAT64 est activé, mais il n'est pas configuré avec un préfixe NAT64 valide et un CIDR.
OT_NAT64_STATE_ACTIVE
Le traducteur NAT64 est activé et traduit les paquets.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Initialise un otNat64AddressMappingIterator.

Un itérateur DOIT être initialisé avant d'être utilisé.

Un itérateur peut être initialisé à nouveau pour redémarrer à partir du début des informations de mappage.

Détails
Paramètres
[in] aInstance
L'instance OpenThread.
[out] aIterator
Pointeur vers l'itérateur à initialiser.

otNat64Send

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Traduit un datagramme IPv4 en datagramme IPv6 et l’envoie via l’interface Thread.

L'appelant transfère la propriété de aMessage lors de cet appel. OpenThread libère aMessage une fois le traitement terminé, y compris lorsqu'une valeur autre que OT_ERROR_NONE est renvoyée.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aMessage
Pointeur vers le tampon du message contenant le datagramme IPv4.
Valeurs de retour
OT_ERROR_NONE
Le message a bien été traité.
OT_ERROR_DROP
Le message était bien formé, mais n'a pas été entièrement traité en raison des règles de traitement des paquets.
OT_ERROR_NO_BUFS
Impossible d'allouer les tampons de message nécessaires lors du traitement du datagramme.
OT_ERROR_NO_ROUTE
Aucune route vers l'hôte.
OT_ERROR_INVALID_SOURCE_ADDRESS
L'adresse source n'est pas valide (par exemple, une adresse Anycast ou une adresse de multidiffusion).
OT_ERROR_PARSE
Un en-tête incorrect est survenu lors du traitement du message.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Activez ou désactivez les fonctions NAT64.

Remarque: Cela inclut le traducteur NAT64 (lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé) et le gestionnaire de préfixes NAT64 (lorsque OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE est activé).

Lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé, le paramètre désactivé sur "true" réinitialise la table de mappage dans le traducteur.

Disponible lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE ou OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aEnabled
Une valeur booléenne pour activer/désactiver les fonctions NAT64
Voir aussi:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

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

Définit le CIDR utilisé lors de la définition de l'adresse source des paquets IPv4 traduits sortants.

N'est disponible que lorsque OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE est activé.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aCidr
Pointeur vers un otIp4Cidr pour le bloc CIDR IPv4 pour NAT64.
Valeurs de retour
OT_ERROR_INVALID_ARGS
Le CIDR indiqué n'est pas un CIDR IPv4 valide pour NAT64.
OT_ERROR_NONE
Le CIDR pour NAT64 a bien été défini.
Voir aussi:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

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

Enregistre un rappel pour fournir les datagrammes IPv4 reçus.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aCallback
Pointeur vers une fonction appelée lors de la réception d'un datagramme IPv4 ou valeur NULL pour désactiver le rappel.
[in] aContext
Pointeur vers un contexte spécifique à l'application.

otNat64SynthesizeIp6Address

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

Définit l'adresse IPv6 en effectuant une traduction d'adresse NAT64 à partir du préfixe NAT64 préféré et de l'adresse IPv4 donnée, comme spécifié dans le document RFC 6052.

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aIp4Address
Pointeur vers l'adresse IPv4 à traduire en IPv6.
[out] aIp6Address
Pointeur vers l'adresse IPv6 synthétisée.
Renvoie
OT_ERROR_NONE L'adresse IPv6 a bien été synthétisée à partir du préfixe NAT64 et de l'adresse IPv4.
Renvoie
OT_ERROR_INVALID_STATE Aucun préfixe NAT64 valide dans les données du réseau.

Macros

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Taille d'une adresse IPv4 (octets)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Longueur de 000.000.000.000 plus un suffixe NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Longueur de 000.000.000.000/00 plus un suffixe NUL.

Ressources

Les sujets de référence de l'API OpenThread proviennent du code source, disponible sur GitHub. Pour en savoir plus ou pour contribuer à notre documentation, consultez la section Ressources.