nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

la dirección de protocolo de Internet.

Resumen

La capa 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 de palabras opaco para contener direcciones IP (independiente de la versión del protocolo)

Atributos públicos estáticos

Any
El objeto de dirección IP distinguida no especificada.

Funciones públicas

GlobalId(void) const
uint64_t
Extrae el identificador de red global de 16 bits de una dirección ULA IPv6.
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 de 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 IPv6 de unidifusión global.
IsIPv6LinkLocal(void) const
bool
Prueba si la dirección es de vínculo local (LL) IPv6.
IsIPv6Multicast(void) const
bool
Prueba si la dirección es de multidifusión IPv6.
IsIPv6ULA(void) const
bool
Prueba si la dirección es IPv6 de dirección local única (ULA).
IsMulticast(void) const
bool
Prueba si la dirección es de multidifusión IPv4 o IPv6.
Subnet(void) const
uint16_t
Extrae el identificador de subred de 16 bits de una dirección ULA IPv6.
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 una 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 formato de presentación de texto convencional.
Type(void) const
IPAddressType
Extrae el tipo de la 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 comprobar la inequivalencia.
operator=(const IPAddress & other)
Operador de asignación convencional.
operator==(const IPAddress & other) const
bool
Compara esta dirección IP con otra de 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 la plataforma.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Incorpora la dirección IPv6 desde la estructura de datos de la plataforma.
FromSockAddr(const struct sockaddr & sockaddr)
Incorpora la dirección IPv6 desde un struct sockaddr& de POSIX
FromString(const char *str, IPAddress & output)
bool
Busca la dirección IP a partir de su texto de presentación convencional.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Busca la dirección IP a partir de su texto de presentación convencional.
MakeIPv4Broadcast(void)
Crea 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 IPv6 multidifusión a partir de sus partes.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construye una dirección IPv6 multidifusión a partir de sus partes.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Construye una dirección 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 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)
Construye 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 única local (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

Dirección

uint32_t Addr[4]

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

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

Atributos públicos estáticos

Cualquiera

IPAddress Any

El objeto de dirección IP distinguida no especificada.

Este objeto se utiliza como una constante para comparaciones de equivalencia. No debe ser modificado por los usuarios de la capa Nest Inet.

Funciones públicas

GlobalId

uint64_t GlobalId(
  void
) const 

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

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

Detalles
Qué muestra
Identificador de red global de 40 bits o cero si la dirección IP no es una dirección local única IPv6.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extrae el IID de una dirección ULA IPv6.

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

Detalles
Qué muestra
Identificador de la interfaz de 64 bits, o cero si la dirección IP no es una dirección local única IPv6.

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. Nota: La dirección sin especificar no es una dirección IPv4.

Detalles
Valores que se muestran
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 comprobar si la dirección es la dirección de transmisión IPv4 con un propósito especial.

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

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

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

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

Detalles
Valores que se muestran
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. Nota: La dirección sin especificar no es una dirección IPv6.

Detalles
Valores que se muestran
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 IPv6 de unidifusión global.

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

Detalles
Valores que se muestran
true
La dirección es unidifusión IPv6 global
false
De lo contrario

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Prueba si la dirección es 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 que se muestran
true
La dirección es de vínculo IPv6 local
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 tiene el prefijo de dirección de multidifusión IPv6 reservado.

Detalles
Valores que se muestran
true
La dirección es de multidifusión IPv6
false
De lo contrario

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

Prueba si la dirección es IPv6 de dirección local única (ULA).

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

Detalles
Valores que se muestran
true
La dirección es IPv6 única y local
false
De lo contrario

IsMulticast

bool IsMulticast(
  void
) const 

Prueba si la dirección es de multidifusión IPv4 o 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 de dirección de multidifusión IPv4 o IPv6 reservado.

Detalles
Valores que se muestran
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 ULA IPv6.

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

Detalles
Qué muestra
Identificador de subred de 16 bits, o cero si la dirección IP no es una dirección local única 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
Qué muestra
La dirección IPv4 encapsulada o 0.0.0.0 si 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 una 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
Qué 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 formato de presentación de texto convencional.

Usa ToString(char *buf, uint32_t bufSize) const para escribir la forma de presentación de texto convencional de la dirección IP en la memoria ubicada en buf, que se extiende hasta bufSize bytes, incluido su carácter de finalización NUL.

Detalles
Parámetros
[out] buf
Es la dirección del texto emitido.
[in] bufSize
Es 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, no se puede aplicar compresión cero según la sección 4.2.

Detalles
Qué muestra
El argumento buf si no hay ningún error de formato o cero de lo contrario.

Tipo

IPAddressType Type(
  void
) const 

Extrae el tipo de la dirección IP.

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

Detalles
Valores que se muestran
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) a fin de codificar la dirección IP en el formato binario definido por RFC 4291 para direcciones IPv6. Las direcciones IPv4 se codifican según la sección 2.5.5.1 “Dirección IPv6 compatible con IPv4” (V4COMPAT).

Detalles
Parámetros
[in,out] p
Referencia al cursor que se usa para escribir.

operador!=

bool operator!=(
  const IPAddress & other
) const 

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

Detalles
Parámetros
[in] other
La dirección que se va a comparar
Valores que se muestran
true
Si equivale a other
false
De lo contrario

operador=

IPAddress & operator=(
  const IPAddress & other
)

Operador de asignación convencional.

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

operador==

bool operator==(
  const IPAddress & other
) const 

Compara esta dirección IP con otra de equivalencia.

Detalles
Parámetros
[in] other
La dirección que se va a comparar
Valores que se muestran
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 y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

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

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

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

Detalles
Qué muestra
La dirección IP construida.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

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

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

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

Detalles
Qué muestra
La dirección IP construida.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Incorpora 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
Qué muestra
La dirección IP construida.

FromString

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

Busca la dirección IP a partir de su texto de presentación convencional.

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

Detalles
Parámetros
[in] str
Es la dirección del texto emitido.
[out] output
El objeto que se va a establecer en la dirección analizada.

Detalles
Valores que se muestran
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
)

Busca la dirección IP a partir de su texto de presentación convencional.

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

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

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

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Crea una dirección de transmisión IPv4.

Detalles
Qué 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 IPv6 multidifusión a partir de sus partes.

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

Detalles
Qué muestra
La dirección IP construida.

MakeIPv6Multicast

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

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

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

Detalles
Qué 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 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) a fin de construir una dirección multidifusión IPv6 de prefijo transitorio con scope para el alcance de enrutamiento y octetos de identificador de grupo groupId, calificada por el prefijo prefix de longitud prefixlen bits.

Detalles
Qué 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 multidifusión IPv6 transitoria a partir de sus partes.

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

Detalles
Qué 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) a fin de construir una dirección de multidifusión IPv6 para el permiso de enrutamiento scope y el identificador de grupo groupId.

Detalles
Qué muestra
La dirección IP construida.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Construye 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
Qué muestra
La dirección IP construida.

MakeULA

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

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

Usa MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) para crear 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
Qué 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 al objeto output.

Detalles
Parámetros
[in,out] p
Referencia al cursor que se usa para leer.
[out] output
Objeto para recibir la dirección IP decodificada.