Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

nl :: Inet :: Dirección IP

#include <src/inet/IPAddress.h>

Dirección del 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
Matriz de palabras opacas para contener direcciones IP (independientemente de la versión del protocolo)

Atributos estáticos públicos

Any
Objeto de dirección IP no especificado distinguido.

Funciones publicas

GlobalId (void) const
uint64_t
Extraiga el identificador de red global de 16 bits de una dirección ULA IPv6.
InterfaceId (void) const
uint64_t
Extraiga el IID de una dirección ULA IPv6.
IsIPv4 (void) const
bool
Pruebe si la dirección es compatible con IPv4.
IsIPv4Broadcast (void) const
bool
Pruebe si la dirección es una transmisión IPv4.
IsIPv4Multicast (void) const
bool
Pruebe si la dirección es multidifusión IPv4.
IsIPv6 (void) const
bool
Pruebe si la dirección es compatible con IPv6.
IsIPv6GlobalUnicast (void) const
bool
Pruebe si la dirección es una dirección de unidifusión global IPv6.
IsIPv6LinkLocal (void) const
bool
Pruebe si la dirección es una dirección local de enlace (LL) IPv6.
IsIPv6Multicast (void) const
bool
Pruebe si la dirección es de multidifusión IPv6.
IsIPv6ULA (void) const
bool
Pruebe si la dirección es una dirección local única (ULA) IPv6.
IsMulticast (void) const
bool
Pruebe si la dirección es de multidifusión IPv4 o IPv6.
Subnet (void) const
uint16_t
Extraiga el identificador de subred de 16 bits de una dirección ULA IPv6.
ToIPv4 (void) const
Extraiga la dirección IPv4 como una estructura de datos de plataforma.
ToIPv4 (void) const
struct in_addr
ToIPv6 (void) const
ip6_addr_t
Extraiga la dirección IPv6 como una estructura de datos de 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 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
Compare esta dirección IP con otra para determinar la desigualdad.
operator= (const IPAddress & other)
Operador de asignación convencional.
operator== (const IPAddress & other) const
bool
Compare esta dirección IP con otra para verificar la equivalencia.

Funciones estáticas públicas

FromIPv4 (const ip4_addr_t & addr)
FromIPv4 (const struct in_addr & addr)
Inyecte la dirección IPv4 de una estructura de datos de plataforma.
FromIPv6 (const ip6_addr_t & addr)
FromIPv6 (const struct in6_addr & addr)
Inyecte la dirección IPv6 de una estructura de datos de plataforma.
FromSockAddr (const struct sockaddr & sockaddr)
Inyectar la dirección IPv6 de un POSIX struct sockaddr&
FromString (const char *str, IPAddress & output)
bool
Escanee la dirección IP de su texto de presentación convencional.
FromString (const char *str, size_t strLen, IPAddress & output)
bool
Escanee la dirección IP de su texto de presentación convencional.
MakeIPv4Broadcast (void)
Construya 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])
Construya una dirección de multidifusión IPv6 a partir de sus partes.
MakeIPv6Multicast (uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construya 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)
Construya 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])
Construya una dirección de multidifusión IPv6 transitoria a partir de sus partes.
MakeIPv6WellKnownMulticast (uint8_t aScope, uint32_t aGroupId)
Construya una dirección de multidifusión IPv6 conocida a partir de sus partes.
MakeLLA (uint64_t interfaceId)
Construya una dirección local de enlace (LL) IPv6 a partir de su IID.
MakeULA (uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Construya una dirección local única (ULA) IPv6 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]

Matriz de palabras opacas para contener direcciones IP (independientemente de la versión del protocolo)

La dirección IPv6 utiliza todos los 128 bits divididos en cuatro enteros sin signo 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

Alguna

IPAddress Any

Objeto de dirección IP no especificado distinguido.

Este objeto se utiliza como constante para las comparaciones de equivalencia. Los usuarios de la capa Nest Inet no deben modificarlo.

Funciones publicas

GlobalId

uint64_t GlobalId(
  void
) const 

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

Utilice este método con una dirección local única (ULA) IPv6 para extraer el identificador de red global, que son los 40 bits que siguen inmediatamente 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 al sexto bytes de la dirección.

Detalles
Devoluciones
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 

Extraiga el IID de una dirección ULA IPv6.

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

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

IsIPv4

bool IsIPv4(
  void
) const 

Pruebe si la dirección es compatible con IPv4.

Utilice este método para verificar si la dirección pertenece a la familia de direcciones IPv4. Tenga en cuenta bien: la dirección no especificada no es una dirección IPv4.

Detalles
Valores devueltos
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 

Pruebe si la dirección es una transmisión IPv4.

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

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

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

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

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

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

IsIPv6

bool IsIPv6(
  void
) const 

Pruebe si la dirección es compatible con IPv6.

Utilice este método para verificar si la dirección pertenece a la familia de direcciones IPv6. Tenga en cuenta que la dirección no especificada no es una dirección IPv6.

Detalles
Valores devueltos
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 

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

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

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

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Pruebe si la dirección es una dirección local de enlace (LL) IPv6.

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

Detalles
Valores devueltos
true
La dirección es IPv6 link-local
false
De lo contrario

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Pruebe si la dirección es multidifusión IPv6.

Utilice este método para verificar 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 devueltos
true
La dirección es multidifusión IPv6
false
De lo contrario

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

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

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

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

IsMulticast

bool IsMulticast(
  void
) const 

Pruebe si la dirección es de multidifusión IPv4 o IPv6.

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

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

Subred

uint16_t Subnet(
  void
) const 

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

Utilice este método con una dirección local única (ULA) de IPv6 para extraer el identificador de subred, que son los 16 bits menos significativos del prefijo de red. El prefijo de red es el 64 bits más significativo 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
Devoluciones
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 

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

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

El resultado es o bien de tipo struct in_addr (en POSIX) o ip4_addr_t (en lwIP).

Detalles
Devoluciones
La dirección IPv4 encapsulado, o 0.0.0.0 si la dirección es o no especificado o no una dirección IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Extraiga la dirección IPv6 como una estructura de datos de plataforma.

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

El resultado es o bien de tipo struct in6_addr (en POSIX) o ip6_addr_t (en lwIP).

Detalles
Devoluciones
La dirección IPv4 encapsulado, o [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

Encadenar

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

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

Uso ToString(char *buf, uint32_t bufSize) const a escribir la forma de presentación de texto convencional de la dirección IP a la memoria situada en buf y que se extiende tanto como bufSize bytes, incluyendo 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.

Nota Bueno: no es compatible con RFC 5952 en algunas plataformas. Específicamente, la compresión cero no se puede aplicar de acuerdo con la sección 4.2.

Detalles
Devoluciones
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.

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

Detalles
Valores devueltos
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.

Uso WriteAddress(uint8_t *&p) para codificar la dirección IP en el formato binario definido por el RFC 4291 para las direcciones IPv6. Las direcciones IPv4 se codifican de acuerdo con 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 utilizará para escribir.

operador! =

bool operator!=(
  const IPAddress & other
) const 

Compare esta dirección IP con otra para determinar la desigualdad.

Detalles
Parámetros
[in] other
La dirección para comparar.
Valores devueltos
true
Si equivalente 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 a copiar.
Devoluciones
Una referencia a este objeto.

operador ==

bool operator==(
  const IPAddress & other
) const 

Compare esta dirección IP con otra para verificar la equivalencia.

Detalles
Parámetros
[in] other
La dirección para comparar.
Valores devueltos
true
Si equivalente a other
false
De lo contrario

Funciones estáticas públicas

Desde IPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Desde IPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Inyecte la dirección IPv4 de una estructura de datos de plataforma.

Uso FromIPv4(const ip4_addr_t &addr) para inyectar addr como una dirección IPv4.

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

Detalles
Devoluciones
La dirección IP construida.

Desde IPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Desde IPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Inyecte la dirección IPv6 de una estructura de datos de plataforma.

Uso FromIPv6(const ip6_addr_t &addr) para inyectar addr como una dirección IPv6.

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

Detalles
Devoluciones
La dirección IP construida.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Inyectar la dirección IPv6 de un POSIX struct sockaddr&

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

Detalles
Devoluciones
La dirección IP construida.

FromString

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

Escanee la dirección IP de su texto de presentación convencional.

Uso FromString(const char *str, IPAddress& output) para sobrescribir una dirección IP mediante el escaneo de la presentación del texto convencional situado en str .

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

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

FromString

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

Escanee la dirección IP de su texto de presentación convencional.

Uso FromString(const char *str, size_t strLen, IPAddress& output) para sobrescribir una dirección IP mediante el escaneo de la presentación del texto convencional situado en str .

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

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

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Construya una dirección de transmisión IPv4.

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

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

Uso MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) para la construcción de una dirección de multidifusión IPv6 con flags para el encaminamiento de alcance scope y octetos identificador de grupo groupId .

Detalles
Devoluciones
La dirección IP construida.

MakeIPv6Multicast

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

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

Uso MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) para la construcción de una dirección de multidifusión IPv6 con flags para el encaminamiento de alcance scope y el grupo identificador groupId .

Detalles
Devoluciones
La dirección IP construida.

MakeIPv6PrefixMulticast

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

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

Uso MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) para la construcción de un transitorio, prefijo IPv6 multicast dirección con para el encaminamiento de alcance scope y octetos identificador de grupo groupId , calificado por el prefijo prefix de longitud prefixlen bits.

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

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

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

Detalles
Devoluciones
La dirección IP construida.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

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

Uso MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) para la construcción de una dirección de multidifusión IPv6 para el encaminamiento de alcance scope y el grupo identificador groupId .

Detalles
Devoluciones
La dirección IP construida.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Construya una dirección local de enlace (LL) IPv6 a partir de su IID.

Uso MakeLLA(uint64_t interfaceId) para la construcción de una dirección de enlace local IPv6 (LL) con interfaz identificador de interfaceId .

Detalles
Devoluciones
La dirección IP construida.

MakeULA

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

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

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

Detalles
Devoluciones
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.

Uso 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 utilizará para leer.
[out] output
Objeto para recibir la dirección IP decodificada.