nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

son adresse IP.

Résumé

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

Attributs publics

Addr[4]
uint32_t
Tableau de mots opaques contenant 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 IPv6 ULA.
InterfaceId(void) const
uint64_t
Extrayez l'IID d'une adresse IPv6 ULA.
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 une adresse de diffusion IPv4.
IsIPv4Multicast(void) const
bool
Vérifier si l'adresse est une multidiffusion 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 unicast globale IPv6.
IsIPv6LinkLocal(void) const
bool
Vérifiez si l'adresse est une adresse de liaison locale (LL) IPv6.
IsIPv6Multicast(void) const
bool
Vérifier si l'adresse est une multidiffusion IPv6
IsIPv6ULA(void) const
bool
Vérifiez si l'adresse est une adresse IPv6 unique-local (ULA).
IsMulticast(void) const
bool
Vérifiez si l'adresse est de type IPv4 ou IPv6 multicast.
Subnet(void) const
uint16_t
Extrayez l'identifiant de sous-réseau 16 bits d'une adresse ULA IPv6.
ToIPv4(void) const
Extraire l'adresse IPv4 en tant que structure de données de plate-forme
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Extraire l'adresse IPv6 en tant que structure de données de 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 texte conventionnel
Type(void) const
IPAddressType
Extrayez le type de l'adresse IP.
WriteAddress(uint8_t *& p) const
void
Émission de l'adresse IP dans la représentation standard du réseau
operator!=(const IPAddress & other) const
bool
Comparez cette adresse IP à une autre pour vérifier l'inéquivalence.
operator=(const IPAddress & other)
Opérateur d'affectation traditionnel.
operator==(const IPAddress & other) const
bool
Comparez cette adresse IP à une autre pour vérifier son équivalence.

Fonctions statiques publiques

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Injecter 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)
Injecter 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
Analysez l'adresse IP à partir du texte de présentation conventionnel.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Analysez l'adresse IP à partir du texte de présentation conventionnel.
MakeIPv4Broadcast(void)
Construire une adresse de diffusion IPv4
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construire une adresse de multidiffusion IPv6 à partir de ses parties.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construire une adresse de multidiffusion IPv6 à partir de ses parties.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Construire une adresse de multidiffusion IPv6 temporaire à partir de ses parties.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construire une adresse multicast IPv6 temporaire à partir de ses parties.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Construire une adresse de multidiffusion IPv6 bien connue à partir de ses composants.
MakeLLA(uint64_t interfaceId)
Construire une adresse de liaison locale (LL) IPv6 à partir de son IID
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Construire une adresse IPv6 unique (ULA) à partir de ses différentes parties.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Émission de l'adresse IP dans la représentation standard du réseau

Attributs publics

Addr

uint32_t Addr[4]

Tableau de mots opaques contenant des adresses IP (indépendamment de la version du protocole)

L’adresse IPv6 utilise la totalité des 128 bits divisés en quatre entiers non signés ordonnés aux octets sur le réseau de 32 bits. Les adresses IPv4 sont V4COMPAT, c'est-à-dire que les trois premiers mots sont zéro et 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'équivalence. 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 IPv6 ULA.

Utilisez cette méthode avec une adresse IPv6 unique (ULA) pour extraire l'identifiant du réseau global, qui correspond aux 40 bits qui suivent immédiatement le préfixe de réseau ULA distinct, c'est-à-dire fd00::/8. En d'autres termes, l'identifiant de réseau global est situé dans les cinq octets de l'adresse, allant du 2e 2e au 6e octet.

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

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extrayez l'IID d'une adresse IPv6 ULA.

Utilisez cette méthode avec une adresse IPv6 unique (ULA) 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 unique-local.

IsIPv4

bool IsIPv4(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv4. Remarque: l'adresse non spécifiée n'est pas une adresse IPv4.

Détails
Valeurs renvoyées
true
L'adresse est de type IPv4, et non l'adresse non spécifiée.
false
L'adresse est IPv6 ou une adresse non spécifiée.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse correspond à l'adresse de diffusion IPv4 à usage spécifique.

Détails
Valeurs renvoyées
true
L'adresse est la diffusion IPv4
false
Sinon, procédez comme suit :

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Vérifier si l'adresse est une multidiffusion IPv4

Utilisez cette méthode pour vérifier si l'adresse est une adresse de multidiffusion IPv4.

Détails
Valeurs renvoyées
true
L'adresse est le multicast IPv4
false
Sinon, procédez comme suit :

IsIPv6

bool IsIPv6(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv6. Remarque: l'adresse non spécifiée n'est pas une adresse IPv6.

Détails
Valeurs renvoyées
true
L'adresse est de type IPv6, et non l'adresse non spécifiée.
false
L'adresse est une adresse IPv4 ou non spécifiée.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

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

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

Détails
Valeurs renvoyées
true
L'adresse est unicast globale IPv6
false
Sinon, procédez comme suit :

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv6 et possède le préfixe d'adresse de liaison locale IPv6 réservé.

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

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Vérifier si l'adresse est une multidiffusion IPv6

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv6 et possède le préfixe d'adresse de multidiffusion IPv6 réservé.

Détails
Valeurs renvoyées
true
L'adresse est une multidiffusion IPv6
false
Sinon, procédez comme suit :

EstIPv6ULA

bool IsIPv6ULA(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv6 et possède le préfixe d'adresse IPv6 unique réservé.

Détails
Valeurs renvoyées
true
L'adresse est IPv6 unique-local
false
Sinon, procédez comme suit :

IsMulticast

bool IsMulticast(
  void
) const 

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

Utilisez cette méthode pour vérifier si l'adresse appartient à la famille d'adresses IPv4 ou IPv6 et possède le préfixe d'adresse multicast IPv4 ou IPv6 réservé.

Détails
Valeurs renvoyées
true
L'adresse est IPv4 ou IPv6 multicast
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 IPv6 unique (ULA) 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 est situé dans les 7e et 8e octets d'une adresse de 16 octets.

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

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Extraire l'adresse IPv4 en tant que structure de données de plate-forme

Si possible, utilisez ToIPv4() const pour extraire le contenu sous la forme d'une adresse IPv4. 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 

Extraire l'adresse IPv6 en tant que structure de données de plate-forme

Si possible, utilisez ToIPv6() const pour extraire le contenu sous la forme d'une 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
L'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 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 en étendant jusqu'à bufSize octets, y compris son caractère de fin NUL.

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

Remarque: la norme 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 de l'adresse IP.

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

Détails
Valeurs renvoyées
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 

Émission de l'adresse IP dans la représentation standard du réseau

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

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

operator!=

bool operator!=(
  const IPAddress & other
) const 

Comparez cette adresse IP à une autre pour vérifier l'inéquivalence.

Détails
Paramètres
[in] other
Adresse à comparer.
Valeurs renvoyées
true
S'il équivaut à other
false
Sinon, procédez comme suit :

operator=

IPAddress & operator=(
  const IPAddress & other
)

Opérateur d'affectation traditionnel.

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 vérifier son équivalence.

Détails
Paramètres
[in] other
Adresse à comparer.
Valeurs renvoyées
true
S'il équivaut à 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 des fonctions ci-dessus que par le ou les arguments qu'elle accepte.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Injecter 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 des fonctions ci-dessus que par le ou les arguments qu'elle accepte.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Injecter 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
)

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

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

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

Détails
Valeurs renvoyées
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
)

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

Utilisez FromString(const char *str, size_t strLen, IPAddress& output) pour écraser une adresse IP en analysant la présentation texte conventionnelle située à l'adresse 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 renvoyées
true
Le format de présentation est valide
false
Sinon, procédez comme suit :

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Construire 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]
)

Construire une adresse de multidiffusion IPv6 à partir de ses 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
)

Construire une adresse de multidiffusion IPv6 à partir de ses parties.

Utilisez MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) pour construire 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
)

Construire une adresse de multidiffusion IPv6 temporaire à partir de ses parties.

Utilisez MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) pour construire une adresse de multidiffusion IPv6 temporaire avec 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 de longueur.

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]
)

Construire une adresse multicast IPv6 temporaire à partir de ses parties.

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
)

Construire une adresse de multidiffusion IPv6 bien connue à partir de ses composants.

Utilisez MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) pour construire 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
)

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

Utilisez MakeLLA(uint64_t interfaceId) pour construire 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
)

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

Utilisez MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) pour construire une adresse ULA (unique-local address) 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
)

Émission de l'adresse IP dans la représentation standard du réseau

Utilisez ReadAddress(uint8_t *&p, IPAddress &output) pour décoder l'adresse IP à p dans l'objet output.

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