nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

dirección de protocolo de Internet.

Resumen

La capa de Nest Inet utiliza objetos de esta clase para representar direcciones de protocolo de Internet (independientemente de la versión del protocolo).

Atributos públicos

Addr[4]
uint32_t
Array opaco de palabras para contener direcciones IP (independientemente de la versión del protocolo)

Atributos estáticos públicos

Any
El objeto de dirección IP no especificado distinguido.

Funciones públicas

GlobalId(void) const
uint64_t
Extrae el identificador de red global de 16 bits de una dirección IPv6 ULA.
InterfaceId(void) const
uint64_t
Extrae el IID de una dirección ULA IPv6.
IsIPv4(void) const
bool
Prueba si la dirección es compatible con IPv4.
IsIPv4Broadcast(void) const
bool
Prueba si la dirección es de transmisión IPv4.
IsIPv4Multicast(void) const
bool
Prueba si la dirección es multidifusión IPv4.
IsIPv6(void) const
bool
Prueba si la dirección es compatible con IPv6.
IsIPv6GlobalUnicast(void) const
bool
Prueba si la dirección es una dirección de unidifusión global IPv6.
IsIPv6LinkLocal(void) const
bool
Comprueba si la dirección es una dirección de vínculo local (LL) IPv6.
IsIPv6Multicast(void) const
bool
Prueba si la dirección es de multidifusión IPv6.
IsIPv6ULA(void) const
bool
Comprueba si la dirección es una dirección IPv6 local única (ULA).
IsMulticast(void) const
bool
Prueba si la dirección es IPv4 o multidifusión IPv6.
Subnet(void) const
uint16_t
Extrae el identificador de subred de 16 bits de una dirección IPv6 ULA.
ToIPv4(void) const
Extrae la dirección IPv4 como una estructura de datos de la plataforma.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Extrae la dirección IPv6 como estructura de datos de la plataforma.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Emite la dirección IP en un formato de presentación de texto convencional.
Type(void) const
IPAddressType
Extrae el tipo de dirección IP.
WriteAddress(uint8_t *& p) const
void
Emite la dirección IP en la representación de red estándar.
operator!=(const IPAddress & other) const
bool
Compara esta dirección IP con otra para detectar la inequivalencia.
operator=(const IPAddress & other)
Operador de asignación convencional.
operator==(const IPAddress & other) const
bool
Compara esta dirección IP con otra para la equivalencia.

Funciones estáticas públicas

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Incorpora la dirección IPv4 desde la estructura de datos de una plataforma.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Incorpora la dirección IPv6 desde la estructura de datos de una plataforma.
FromSockAddr(const struct sockaddr & sockaddr)
Inserta la dirección IPv6 desde un struct sockaddr& de POSIX
FromString(const char *str, IPAddress & output)
bool
Escanea la dirección IP a partir del texto de presentación convencional.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Escanea la dirección IP a partir del texto de presentación convencional.
MakeIPv4Broadcast(void)
Construye una dirección de transmisión IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construye una dirección de multidifusión IPv6 a partir de sus partes.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construye una dirección de multidifusión IPv6 a partir de sus partes.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Construye una dirección de multidifusión IPv6 con prefijo transitorio a partir de sus partes.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construye una dirección de multidifusión IPv6 transitoria a partir de sus partes.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Construye una dirección de multidifusión IPv6 conocida a partir de sus partes.
MakeLLA(uint64_t interfaceId)
Crea una dirección de vínculo local (LL) IPv6 a partir de su IID.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Construye una dirección IPv6 local única (ULA) a partir de sus partes.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Emite la dirección IP en la representación de red estándar.

Atributos públicos

Addr

uint32_t Addr[4]

Array opaco de palabras para contener direcciones IP (independientemente de la versión del protocolo)

La dirección IPv6 usa todos los de 128 bits divididos en cuatro números enteros sin firma ordenados por bytes de red de 32 bits. Las direcciones IPv4 son V4COMPAT, es decir, las tres primeras palabras son cero y la cuarta palabra contiene la dirección IPv4 en orden de bytes de red.

Atributos estáticos públicos

Cualquiera

IPAddress Any

El objeto de dirección IP no especificado distinguido.

Este objeto se usa como una constante para las comparaciones de equivalencia. Los usuarios de la capa de Nest Inet no deben modificarla.

Funciones públicas

GlobalId

uint64_t GlobalId(
  void
) const 

Extrae el identificador de red global de 16 bits de una dirección IPv6 ULA.

Usa este método con una dirección IPv6 local única (ULA) para extraer el identificador de red global, que corresponde a los 40 bits que siguen al prefijo de red ULA distinguido, es decir, fd00::/8. En otras palabras, el identificador de red global se encuentra en los cinco bytes desde el segundo segundo hasta el sexto bytes en la dirección.

Detalles
Resultado que se muestra
identificador de red global de 40 bits, o cero si la dirección IP no es una dirección IPv6 local única.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extrae el IID de una dirección ULA IPv6.

Usa este método con una dirección IPv6 local única (ULA) para extraer el identificador de identificador (IID), que es los 64 bits menos significativos de la dirección.

Detalles
Resultado que se muestra
identificador de interfaz de 64 bits, o cero si la dirección IP no es una dirección IPv6 local única.

IsIPv4

bool IsIPv4(
  void
) const 

Prueba si la dirección es compatible con IPv4.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv4. Ten en cuenta que la dirección sin especificar no es una dirección IPv4.

Detalles
Valores de retorno
true
La dirección es IPv4 y no la dirección no especificada.
false
La dirección es IPv6 o la dirección no especificada.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Prueba si la dirección es de transmisión IPv4.

Usa este método para verificar si la dirección es la dirección de transmisión IPv4 de propósito especial.

Detalles
Valores de retorno
true
La dirección es la transmisión IPv4
false
De lo contrario

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Prueba si la dirección es multidifusión IPv4.

Usa este método para verificar si la dirección es una dirección de multidifusión IPv4.

Detalles
Valores de retorno
true
La dirección es la multidifusión IPv4
false
De lo contrario

IsIPv6

bool IsIPv6(
  void
) const 

Prueba si la dirección es compatible con IPv6.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv6. Ten en cuenta que la dirección sin especificar no es una dirección IPv6.

Detalles
Valores de retorno
true
La dirección es IPv6 y no la dirección no especificada.
false
La dirección es IPv4 o la dirección no especificada.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Prueba si la dirección es una dirección de unidifusión global IPv6.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv6 y si tiene el prefijo de dirección de unidifusión global.

Detalles
Valores de retorno
true
La dirección es de unidifusión global IPv6
false
De lo contrario

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Comprueba si la dirección es una dirección de vínculo local (LL) IPv6.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv6 y tiene el prefijo de dirección de vínculo local IPv6 reservado.

Detalles
Valores de retorno
true
La dirección es de vínculo local IPv6
false
De lo contrario

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Prueba si la dirección es de multidifusión IPv6.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv6 y si tiene el prefijo de dirección multicast IPv6 reservado.

Detalles
Valores de retorno
true
La dirección es de multidifusión IPv6
false
De lo contrario

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

Comprueba si la dirección es una dirección IPv6 local única (ULA).

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv6 y si tiene el prefijo de dirección local único de IPv6 reservado.

Detalles
Valores de retorno
true
La dirección es IPv6 única-local
false
De lo contrario

IsMulticast

bool IsMulticast(
  void
) const 

Prueba si la dirección es IPv4 o multidifusión IPv6.

Usa este método para comprobar si la dirección pertenece a la familia de direcciones IPv4 o IPv6 y si tiene el prefijo reservado de dirección multidifusión IPv4 o IPv6.

Detalles
Valores de retorno
true
La dirección es IPv4 o IPv6 multidifusión
false
De lo contrario

Subred

uint16_t Subnet(
  void
) const 

Extrae el identificador de subred de 16 bits de una dirección IPv6 ULA.

Usa este método con una dirección IPv6 local única (ULA) para extraer el identificador de subred, que son los 16 bits menos significativos del prefijo de red. El prefijo de red corresponde a los 64 bits más significativos de la dirección. En otras palabras, el identificador de subred se encuentra en los bytes 7o y 8o de una dirección de 16 bytes.

Detalles
Resultado que se muestra
Identificador de subred de 16 bits, o cero si la dirección IP no es una dirección local único de IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Extrae la dirección IPv4 como una estructura de datos de la plataforma.

Si es posible, usa ToIPv4() const para extraer el contenido como una dirección IPv4. Las direcciones IPv6 y la dirección no especificada se extraen como 0.0.0.0.

El resultado es del tipo struct in_addr (en POSIX) o ip4_addr_t (en LwIP).

Detalles
Resultado que se muestra
La dirección IPv4 encapsulada, o 0.0.0.0 si la dirección no se especifica o no es una dirección IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Extrae la dirección IPv6 como estructura de datos de la plataforma.

Si es posible, usa ToIPv6() const para extraer el contenido como una dirección IPv6. Las direcciones IPv4 y la dirección no especificada se extraen como [::].

El resultado es del tipo struct in6_addr (en POSIX) o ip6_addr_t (en LwIP).

Detalles
Resultado que se muestra
La dirección IPv4 encapsulada, o [::] 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 

Emite la dirección IP en un formato de presentación de texto convencional.

Usa ToString(char *buf, uint32_t bufSize) const para escribir el formato de presentación de texto convencional de la dirección IP en la memoria ubicada en buf y extendiendo hasta bufSize bytes, incluido su carácter de terminación NUL.

Detalles
Parámetros
[out] buf
La dirección del texto emitido.
[in] bufSize
El tamaño del búfer para el texto emitido.

Ten en cuenta que no cumple con el estándar RFC 5952 en algunas plataformas. Específicamente, la compresión cero no se puede aplicar según la sección 4.2.

Detalles
Resultado que se muestra
El argumento buf si no hay error de formato, o cero en caso contrario.

Tipo

IPAddressType Type(
  void
) const 

Extrae el tipo de dirección IP.

Usa este método para mostrar un valor del tipo enumerado IPAddressType para indicar el tipo de dirección IP.

Detalles
Valores de retorno
kIPAddressType_IPv4
La dirección es IPv4.
kIPAddressType_IPv6
La dirección es IPv6.
kIPAddressType_Any
La dirección es la dirección no especificada.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Emite la dirección IP en la representación de red estándar.

Usa WriteAddress(uint8_t *&p) para codificar la dirección IP en el formato binario definido por RFC 4291 para las direcciones IPv6. Las direcciones IPv4 se codifican según la sección 2.5.5.1 “Compatible con IPv4 Dirección IPv6" (V4COMPAT).

Detalles
Parámetros
[in,out] p
Referencia al cursor para usar en escritura.

operator!=

bool operator!=(
  const IPAddress & other
) const 

Compara esta dirección IP con otra para detectar la inequivalencia.

Detalles
Parámetros
[in] other
Es la dirección que se comparará.
Valores de retorno
true
Si equivale a other
false
De lo contrario

operator=

IPAddress & operator=(
  const IPAddress & other
)

Operador de asignación convencional.

Detalles
Parámetros
[in] other
La dirección que se copiará.
Resultado que se muestra
Es una referencia a este objeto.

operador==

bool operator==(
  const IPAddress & other
) const 

Compara esta dirección IP con otra para la equivalencia.

Detalles
Parámetros
[in] other
Es la dirección que se comparará.
Valores de retorno
true
Si equivale a other
false
De lo contrario

Funciones estáticas públicas

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Esta es una función de miembro sobrecargada, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Incorpora la dirección IPv4 desde la estructura de datos de una plataforma.

Usa FromIPv4(const ip4_addr_t &addr) para insertar addr como una dirección IPv4.

El argumento addr es del tipo const struct in_addr& (en POSIX) o const ip4_addr_t& (en LwIP).

Detalles
Resultado que se muestra
La dirección IP construida.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Esta es una función de miembro sobrecargada, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Incorpora la dirección IPv6 desde la estructura de datos de una plataforma.

Usa FromIPv6(const ip6_addr_t &addr) para insertar addr como una dirección IPv6.

El argumento addr es del tipo const struct in6_addr& (en POSIX) o const ip6_addr_t& (en LwIP).

Detalles
Resultado que se muestra
La dirección IP construida.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Inserta la dirección IPv6 desde un struct sockaddr& de POSIX

Usa FromSockAddr(const struct sockaddr& sockaddr) para insertar sockaddr.sa_addr como una dirección IPv6.

Detalles
Resultado que se muestra
La dirección IP construida.

FromString

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

Escanea la dirección IP a partir del texto de presentación convencional.

Usa FromString(const char *str, IPAddress& output) para reemplazar una dirección IP mediante el análisis de la presentación de texto convencional ubicada en str.

Detalles
Parámetros
[in] str
La dirección del texto emitido.
[out] output
El objeto que se configurará como la dirección analizada.

Detalles
Valores de retorno
true
El formato de la presentación es válido
false
De lo contrario

FromString

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

Escanea la dirección IP a partir del texto de presentación convencional.

Usa FromString(const char *str, size_t strLen, IPAddress& output) para reemplazar una dirección IP mediante el análisis de la presentación de texto convencional ubicada en str.

Detalles
Parámetros
[in] str
Un puntero al texto que se va a analizar.
[in] strLen
Es la longitud del texto que se va a escanear.
[out] output
El objeto que se configurará como la dirección analizada.

Detalles
Valores de retorno
true
El formato de la presentación es válido
false
De lo contrario

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Construye una dirección de transmisión IPv4.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeIPv6Multicast

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

Construye una dirección de multidifusión IPv6 a partir de sus partes.

Usa MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) para construir una dirección de multidifusión IPv6 con flags para el permiso de enrutamiento scope y los octetos de identificadores de grupo groupId.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeIPv6Multicast

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

Construye una dirección de multidifusión IPv6 a partir de sus partes.

Usa MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) para construir una dirección de multidifusión IPv6 con flags para el permiso de enrutamiento scope y el identificador de grupo groupId.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeIPv6PrefixMulticast

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

Construye una dirección de multidifusión IPv6 con prefijo transitorio a partir de sus partes.

Usa MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) para construir una dirección de multidifusión IPv6 con prefijo transitorio para el alcance de enrutamiento scope y los octetos de identificador de grupo groupId, calificada por el prefijo prefix de prefixlen bits de longitud.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeIPv6TransientMulticast

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

Construye una dirección de multidifusión IPv6 transitoria a partir de sus partes.

Usa MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) para construir una dirección de multidifusión IPv6 transitoria con flags para el permiso de enrutamiento scope y los octetos de identificadores de grupo groupId.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Construye una dirección de multidifusión IPv6 conocida a partir de sus partes.

Usa MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) para construir una dirección de multidifusión IPv6 para el permiso de enrutamiento scope y el identificador de grupo groupId.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Crea una dirección de vínculo local (LL) IPv6 a partir de su IID.

Usa MakeLLA(uint64_t interfaceId) para construir una dirección de vínculo local (LL) IPv6 con el identificador de interfaz interfaceId.

Detalles
Resultado que se muestra
La dirección IP construida.

MakeULA

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

Construye una dirección IPv6 local única (ULA) a partir de sus partes.

Usa MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) para construir una dirección local única (ULA) con el identificador de red global globalId, el identificador de subred subnet y el identificador de interfaz (IID) interfaceId.

Detalles
Resultado que se muestra
La dirección IP construida.

ReadAddress

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

Emite la dirección IP en la representación de red estándar.

Usa ReadAddress(uint8_t *&p, IPAddress &output) para decodificar la dirección IP en p en el objeto output.

Detalles
Parámetros
[in,out] p
Referencia al cursor para usar en la lectura.
[out] output
Objeto para recibir direcciones IP decodificadas.