nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

l'adresse IP de l'utilisateur.

Résumé

La couche Nest Inet utilise des objets de cette classe pour représenter des adresses de protocole Internet (indépendamment de la version du protocole).

Attributs publics

Addr[4]
uint32_t
Tableau de mots opaque destiné à contenir des adresses IP (indépendamment de la version du protocole)

Attributs statiques publics

Any
Objet d'adresse IP distinctif non spécifié.

Fonctions publiques

GlobalId(void) const
uint64_t
Extrayez l'identifiant réseau global 16 bits d'une adresse ULA IPv6.
InterfaceId(void) const
uint64_t
Extrayez l'IID d'une adresse ULA IPv6.
IsIPv4(void) const
bool
Vérifiez si l'adresse est compatible avec le protocole IPv4.
IsIPv4Broadcast(void) const
bool
Vérifiez si l'adresse est de diffusion IPv4.
IsIPv4Multicast(void) const
bool
Vérifiez si l'adresse est bien multicast IPv4.
IsIPv6(void) const
bool
Vérifiez si l'adresse est compatible avec le protocole IPv6.
IsIPv6GlobalUnicast(void) const
bool
Vérifiez si l'adresse est une adresse de monodiffusion IPv6 globale.
IsIPv6LinkLocal(void) const
bool
Vérifiez si l'adresse est une adresse de liaison locale (LL) IPv6.
IsIPv6Multicast(void) const
bool
Vérifiez si l'adresse est bien multicast IPv6.
IsIPv6ULA(void) const
bool
Vérifiez si l'adresse correspond à une adresse ULA (unique-local address) IPv6.
IsMulticast(void) const
bool
Vérifiez si l'adresse est IPv4 ou IPv6.
Subnet(void) const
uint16_t
Extrayez l'identifiant de sous-réseau 16 bits d'une adresse ULA IPv6.
ToIPv4(void) const
Extrayez l'adresse IPv4 en tant que structure de données de la plate-forme.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Extrayez l'adresse IPv6 en tant que structure de données de la plate-forme.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Émettre l'adresse IP dans un format de présentation de texte conventionnel
Type(void) const
IPAddressType
Extrayez le type d'adresse IP.
WriteAddress(uint8_t *& p) const
void
Émet l'adresse IP dans la représentation réseau standard.
operator!=(const IPAddress & other) const
bool
Comparez cette adresse IP à une autre pour déterminer l'équivalence.
operator=(const IPAddress & other)
Opérateur d'affectation classique.
operator==(const IPAddress & other) const
bool
Comparez cette adresse IP à une autre pour déterminer l'équivalence.

Fonctions statiques publiques

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Injectez l'adresse IPv4 à partir d'une structure de données de plate-forme.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Injectez l'adresse IPv6 à partir d'une structure de données de plate-forme.
FromSockAddr(const struct sockaddr & sockaddr)
Injecter l'adresse IPv6 à partir d'un struct sockaddr& POSIX
FromString(const char *str, IPAddress & output)
bool
Scannez l'adresse IP à partir du texte de présentation conventionnel.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Scannez l'adresse IP à partir du texte de présentation conventionnel.
MakeIPv4Broadcast(void)
Créez une adresse de diffusion IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construit une adresse de multidiffusion IPv6 à partir de ses différentes parties.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construit une adresse de multidiffusion IPv6 à partir de ses différentes parties.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Créez une adresse de multidiffusion IPv6 temporaire avec un préfixe à partir des éléments de cette adresse.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construit une adresse de multidiffusion IPv6 temporaire à partir des éléments de cette adresse.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Construit une adresse de multidiffusion IPv6 bien connue à partir de ses différentes parties.
MakeLLA(uint64_t interfaceId)
Construit une adresse de liaison locale (LL) IPv6 à partir de son IID.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Construit une adresse locale unique (ULA) IPv6 à partir de ses différentes parties.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Émet l'adresse IP dans la représentation réseau standard.

Attributs publics

Addr

uint32_t Addr[4]

Tableau de mots opaque destiné à contenir des adresses IP (indépendamment de la version du protocole)

L'adresse IPv6 utilise l'ensemble des 128 bits divisés en quatre entiers non signés ordonnés sur les octets de réseau de 32 bits. Les adresses IPv4 sont V4COMPAT, c'est-à-dire que les trois premiers mots sont zéro et que le quatrième mot contient l'adresse IPv4 dans l'ordre des octets sur le réseau.

Attributs statiques publics

Tous

IPAddress Any

Objet d'adresse IP distinctif non spécifié.

Cet objet est utilisé comme constante pour les comparaisons d'équivalences. Elle ne doit pas être modifiée par les utilisateurs de la couche Nest Inet.

Fonctions publiques

GlobalId

uint64_t GlobalId(
  void
) const 

Extrayez l'identifiant réseau global 16 bits d'une adresse ULA IPv6.

Utilisez cette méthode avec une adresse ULA (adresse unique locale) IPv6 pour extraire l'identifiant de réseau global, qui correspond aux 40 bits qui suivent immédiatement le préfixe réseau ULA distinctif, par exemple fd00::/8. En d'autres termes, l'identifiant de réseau global se trouve dans les cinq octets compris entre le 2e et le 6e octets de l'adresse.

Détails
Renvoie
Identifiant réseau global de 40 bits, ou zéro si l'adresse IP n'est pas une adresse IPv6 locale unique.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extrayez l'IID d'une adresse ULA IPv6.

Utilisez cette méthode avec une adresse ULA (adresse unique locale) IPv6 pour extraire l'identifiant (IID), qui correspond aux 64 bits les moins significatifs de l'adresse.

Détails
Renvoie
Identifiant d'interface 64 bits, ou zéro si l'adresse IP n'est pas une adresse IPv6 locale unique.

IsIPv4

bool IsIPv4(
  void
) const 

Vérifiez si l'adresse est compatible avec le protocole IPv4.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv4. Notez bien que l'adresse non spécifiée n'est pas une adresse IPv4.

Détails
Valeurs de retour
true
L'adresse est IPv4 et non une adresse non spécifiée.
false
Il s'agit d'une adresse IPv6 ou non spécifiée.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Vérifiez si l'adresse est de diffusion IPv4.

Utilisez cette méthode pour vérifier s'il s'agit de l'adresse de diffusion IPv4 à usage spécifique.

Détails
Valeurs de retour
true
L'adresse correspond à la diffusion IPv4
false
Sinon, procédez comme suit :

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Vérifiez si l'adresse est bien multicast IPv4.

Cette méthode vous permet de vérifier si l'adresse est une adresse de multidiffusion IPv4.

Détails
Valeurs de retour
true
L'adresse est la multidiffusion IPv4
false
Sinon, procédez comme suit :

IsIPv6

bool IsIPv6(
  void
) const 

Vérifiez si l'adresse est compatible avec le protocole IPv6.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv6. Notez bien que l'adresse non spécifiée n'est pas une adresse IPv6.

Détails
Valeurs de retour
true
Il s'agit d'une adresse IPv6, et non d'une adresse non spécifiée.
false
Il s'agit d'une adresse IPv4 ou non spécifiée.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Vérifiez si l'adresse est une adresse de monodiffusion IPv6 globale.

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv6 et qu'elle comporte le préfixe d'adresse unicast global.

Détails
Valeurs de retour
true
L'adresse est une monodiffusion IPv6 globale
false
Sinon, procédez comme suit :

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Vérifiez si l'adresse est une adresse de liaison locale (LL) IPv6.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv6 et qu'elle comporte le préfixe d'adresse de liaison locale IPv6 réservé.

Détails
Valeurs de retour
true
L'adresse est une adresse IPv6 de liaison locale
false
Sinon, procédez comme suit :

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Vérifiez si l'adresse est bien multicast IPv6.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv6 et qu'elle comporte le préfixe d'adresse de multidiffusion IPv6 réservé.

Détails
Valeurs de retour
true
L'adresse est multicast IPv6
false
Sinon, procédez comme suit :

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

Vérifiez si l'adresse correspond à une adresse ULA (unique-local address) IPv6.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv6 et qu'elle comporte le préfixe d'adresse IPv6 unique et locale réservée.

Détails
Valeurs de retour
true
L'adresse est IPv6 locale unique
false
Sinon, procédez comme suit :

IsMulticast

bool IsMulticast(
  void
) const 

Vérifiez si l'adresse est IPv4 ou IPv6.

Cette méthode vous permet de vérifier si l'adresse appartient à la famille d'adresses IPv4 ou IPv6 et si elle comporte le préfixe d'adresse de multidiffusion IPv4 ou IPv6 réservé.

Détails
Valeurs de retour
true
L'adresse est multicast IPv4 ou IPv6
false
Sinon, procédez comme suit :

Sous-réseau

uint16_t Subnet(
  void
) const 

Extrayez l'identifiant de sous-réseau 16 bits d'une adresse ULA IPv6.

Utilisez cette méthode avec une adresse ULA (adresse unique locale) IPv6 pour extraire l'identifiant de sous-réseau, qui correspond aux 16 bits les moins significatifs du préfixe réseau. Le préfixe réseau correspond aux 64 bits les plus significatifs de l'adresse. En d'autres termes, l'identifiant de sous-réseau se trouve dans les 7e et 8e octets d'une adresse de 16 octets.

Détails
Renvoie
Identifiant de sous-réseau 16 bits, ou zéro si l'adresse IP n'est pas une adresse IPv6 locale unique.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Extrayez l'adresse IPv4 en tant que structure de données de la plate-forme.

Utilisez ToIPv4() const pour extraire le contenu sous forme d'adresse IPv4, si possible. Les adresses IPv6 et l'adresse non spécifiée sont extraites en tant que 0.0.0.0.

Le résultat est de type struct in_addr (sur POSIX) ou ip4_addr_t (sur LwIP).

Détails
Renvoie
Adresse IPv4 encapsulée, ou 0.0.0.0 si l'adresse n'est pas spécifiée ou n'est pas une adresse IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Extrayez l'adresse IPv6 en tant que structure de données de la plate-forme.

Si possible, utilisez ToIPv6() const pour extraire le contenu sous forme d'adresse IPv6. Les adresses IPv4 et l'adresse non spécifiée sont extraites en tant que [::].

Le résultat est de type struct in6_addr (sur POSIX) ou ip6_addr_t (sur LwIP).

Détails
Renvoie
Adresse IPv4 encapsulée, ou [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

ToString

char * ToString(
  char *buf,
  uint32_t bufSize
) const 

Émettre l'adresse IP dans un format de présentation de texte conventionnel

Utilisez ToString(char *buf, uint32_t bufSize) const pour écrire la forme de présentation de texte conventionnelle de l'adresse IP dans la mémoire située dans buf et étendre jusqu'à bufSize octets, y compris son caractère de terminaison NUL.

Détails
Paramètres
[out] buf
Adresse du texte émis.
[in] bufSize
Taille du tampon pour le texte émis.

Remarque: cette méthode n'est pas conforme à la norme RFC 5952 sur certaines plates-formes. Plus précisément, l'utilisation de zéro compression ne peut pas être appliquée conformément à la section 4.2.

Détails
Renvoie
L'argument buf en l'absence d'erreur de mise en forme, ou zéro dans le cas contraire.

Type

IPAddressType Type(
  void
) const 

Extrayez le type d'adresse IP.

Utilisez cette méthode pour renvoyer une valeur de type énuméré IPAddressType afin d'indiquer le type de l'adresse IP.

Détails
Valeurs de retour
kIPAddressType_IPv4
L'adresse est IPv4.
kIPAddressType_IPv6
L'adresse est IPv6.
kIPAddressType_Any
L'adresse est l'adresse non spécifiée.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Émet l'adresse IP dans la représentation réseau standard.

Utilisez WriteAddress(uint8_t *&p) pour encoder l'adresse IP au format binaire défini par la RFC 4291 pour les adresses IPv6. Les adresses IPv4 sont encodées conformément à la section 2.5.5.1 "Adresse IPv4 compatible avec IPv4" (V4COMPAT).

Détails
Paramètres
[in,out] p
Référence au curseur à utiliser pour l'écriture.

opérateur!=

bool operator!=(
  const IPAddress & other
) const 

Comparez cette adresse IP à une autre pour déterminer l'équivalence.

Détails
Paramètres
[in] other
Adresse à comparer.
Valeurs de retour
true
Si équivalent à other
false
Sinon, procédez comme suit :

opérateur=

IPAddress & operator=(
  const IPAddress & other
)

Opérateur d'affectation classique.

Détails
Paramètres
[in] other
Adresse à copier.
Renvoie
Référence à cet objet.

opérateur==

bool operator==(
  const IPAddress & other
) const 

Comparez cette adresse IP à une autre pour déterminer l'équivalence.

Détails
Paramètres
[in] other
Adresse à comparer.
Valeurs de retour
true
Si équivalent à other
false
Sinon, procédez comme suit :

Fonctions statiques publiques

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère de la fonction ci-dessus que par le ou les arguments qu'elle accepte.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Injectez l'adresse IPv4 à partir d'une structure de données de plate-forme.

Utilisez FromIPv4(const ip4_addr_t &addr) pour injecter addr en tant qu'adresse IPv4.

L'argument addr est de type const struct in_addr& (sur POSIX) ou const ip4_addr_t& (sur LwIP).

Détails
Renvoie
Adresse IP construite.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère de la fonction ci-dessus que par le ou les arguments qu'elle accepte.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Injectez l'adresse IPv6 à partir d'une structure de données de plate-forme.

Utilisez FromIPv6(const ip6_addr_t &addr) pour injecter addr en tant qu'adresse IPv6.

L'argument addr est de type const struct in6_addr& (sur POSIX) ou const ip6_addr_t& (sur LwIP).

Détails
Renvoie
Adresse IP construite.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Injecter l'adresse IPv6 à partir d'un struct sockaddr& POSIX

Utilisez FromSockAddr(const struct sockaddr& sockaddr) pour injecter sockaddr.sa_addr en tant qu'adresse IPv6.

Détails
Renvoie
Adresse IP construite.

FromString

bool FromString(
  const char *str,
  IPAddress & output
)

Scannez l'adresse IP à partir du texte de présentation conventionnel.

Utilisez FromString(const char *str, IPAddress& output) pour remplacer une adresse IP en analysant la présentation de texte conventionnelle située à l'emplacement str.

Détails
Paramètres
[in] str
Adresse du texte émis.
[out] output
Objet à définir sur l'adresse analysée.

Détails
Valeurs de retour
true
Le format de présentation est valide
false
Sinon, procédez comme suit :

FromString

bool FromString(
  const char *str,
  size_t strLen,
  IPAddress & output
)

Scannez l'adresse IP à partir du texte de présentation conventionnel.

Utilisez FromString(const char *str, size_t strLen, IPAddress& output) pour remplacer une adresse IP en analysant la présentation de texte conventionnelle située à l'emplacement str.

Détails
Paramètres
[in] str
Pointeur vers le texte à analyser.
[in] strLen
Longueur du texte à analyser.
[out] output
Objet à définir sur l'adresse analysée.

Détails
Valeurs de retour
true
Le format de présentation est valide
false
Sinon, procédez comme suit :

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Créez une adresse de diffusion IPv4.

Détails
Renvoie
Adresse IP construite.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

Construit une adresse de multidiffusion IPv6 à partir de ses différentes parties.

Utilisez MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) pour construire une adresse de multidiffusion IPv6 avec flags pour le champ d'application de routage scope et les octets d'identifiant de groupe groupId.

Détails
Renvoie
Adresse IP construite.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  uint32_t aGroupId
)

Construit une adresse de multidiffusion IPv6 à partir de ses différentes parties.

Utilisez MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) pour créer une adresse de multidiffusion IPv6 avec flags pour le champ d'application de routage scope et l'identifiant de groupe groupId.

Détails
Renvoie
Adresse IP construite.

MakeIPv6PrefixMulticast

IPAddress MakeIPv6PrefixMulticast(
  uint8_t aScope,
  uint8_t aPrefixLength,
  const uint64_t & aPrefix,
  uint32_t aGroupId
)

Créez une adresse de multidiffusion IPv6 temporaire avec un préfixe à partir des éléments de cette adresse.

Utilisez MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) pour construire une adresse de multidiffusion IPv6 temporaire avec un préfixe d'adresse IPv6 pour le champ d'application de routage scope et les octets d'identifiant de groupe groupId, qualifiés par le préfixe prefix de prefixlen bits.

Détails
Renvoie
Adresse IP construite.

MakeIPv6TransientMulticast

IPAddress MakeIPv6TransientMulticast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

Construit une adresse de multidiffusion IPv6 temporaire à partir des éléments de cette adresse.

Utilisez MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) pour construire une adresse de multidiffusion IPv6 temporaire avec flags pour le champ d'application de routage scope et les octets d'identifiant de groupe groupId.

Détails
Renvoie
Adresse IP construite.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Construit une adresse de multidiffusion IPv6 bien connue à partir de ses différentes parties.

Utilisez MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) afin de créer une adresse de multidiffusion IPv6 pour le champ d'application de routage scope et l'identifiant de groupe groupId.

Détails
Renvoie
Adresse IP construite.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Construit une adresse de liaison locale (LL) IPv6 à partir de son IID.

Utilisez MakeLLA(uint64_t interfaceId) pour créer une adresse de liaison locale (LL) IPv6 avec l'identifiant d'interface interfaceId.

Détails
Renvoie
Adresse IP construite.

MakeULA

IPAddress MakeULA(
  uint64_t globalId,
  uint16_t subnet,
  uint64_t interfaceId
)

Construit une adresse locale unique (ULA) IPv6 à partir de ses différentes parties.

Utilisez MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) pour créer une adresse locale unique (ULA) avec l'identifiant de réseau global globalId, l'identifiant de sous-réseau subnet et l'identifiant d'interface (IID) interfaceId.

Détails
Renvoie
Adresse IP construite.

ReadAddress

void ReadAddress(
  const uint8_t *& p,
  IPAddress & output
)

Émet l'adresse IP dans la représentation réseau standard.

Utilisez ReadAddress(uint8_t *&p, IPAddress &output) pour décoder l'adresse IP au niveau de p vers l'objet output.

Détails
Paramètres
[in,out] p
Référence au curseur à utiliser pour la lecture.
[out] output
Objet recevant une adresse IP décodée.