nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

Endereço de Protocolo de Internet.

Resumo

A camada Nest Inet usa objetos dessa classe para representar os endereços de protocolo de Internet (independente da versão do protocolo).

Atributos públicos

Addr[4]
uint32_t
Matriz de palavras opacas para conter endereços IP (independente da versão do protocolo)

Atributos estáticos públicos

Any
O objeto de endereço IP não especificado distinto.

Funções públicas

GlobalId(void) const
uint64_t
Extraia o identificador de rede global de 16 bits de um endereço ULA IPv6.
InterfaceId(void) const
uint64_t
Extraia o IID de um endereço ULA IPv6.
IsIPv4(void) const
bool
Teste se o endereço é compatível com IPv4.
IsIPv4Broadcast(void) const
bool
Teste se o endereço é de transmissão IPv4.
IsIPv4Multicast(void) const
bool
Teste se o endereço é multicast IPv4.
IsIPv6(void) const
bool
Teste se o endereço é compatível com IPv6.
IsIPv6GlobalUnicast(void) const
bool
Teste se o endereço é um endereço unicast global IPv6.
IsIPv6LinkLocal(void) const
bool
Teste se o endereço é link-local (LL) IPv6.
IsIPv6Multicast(void) const
bool
Teste se o endereço é multicast IPv6.
IsIPv6ULA(void) const
bool
Teste se o endereço é um endereço local único IPv6 (ULA, na sigla em inglês).
IsMulticast(void) const
bool
Teste se o endereço é multicast IPv4 ou IPv6.
Subnet(void) const
uint16_t
Extraia o identificador de sub-rede de 16 bits de um endereço ULA IPv6.
ToIPv4(void) const
Extrair o endereço IPv4 como uma estrutura de dados de plataforma.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Extraia o endereço IPv6 como uma estrutura de dados de plataforma.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Emitir o endereço IP no formato de apresentação de texto convencional.
Type(void) const
IPAddressType
Extraia o tipo de endereço IP.
WriteAddress(uint8_t *& p) const
void
Emite o endereço IP na representação de rede padrão.
operator!=(const IPAddress & other) const
bool
Compare esse endereço IP com outro para descobrir a inequivalência.
operator=(const IPAddress & other)
Operador de atribuição convencional.
operator==(const IPAddress & other) const
bool
Compare este endereço IP com outro para garantir a equivalência.

Funções estáticas públicas

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Injetar o endereço IPv4 de uma estrutura de dados de plataforma.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Injetar o endereço IPv6 de uma estrutura de dados de plataforma.
FromSockAddr(const struct sockaddr & sockaddr)
Injetar o endereço IPv6 de um struct sockaddr& no formato POSIX
FromString(const char *str, IPAddress & output)
bool
Verifique o endereço IP a partir do texto de apresentação convencional.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Verifique o endereço IP a partir do texto de apresentação convencional.
MakeIPv4Broadcast(void)
Criar um endereço de transmissão IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construir um endereço multicast IPv6 com as partes dele.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Construir um endereço multicast IPv6 com as partes dele.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Construir um endereço multicast IPv6 temporário com prefixo nas partes dele.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Construir um endereço multicast IPv6 transitório a partir das partes dele.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Construir um endereço multicast IPv6 conhecido a partir das partes dele.
MakeLLA(uint64_t interfaceId)
Construir um endereço link-local (LL) IPv6 a partir do seu IID.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Construir um endereço local único (ULA, na sigla em inglês) IPv6 a partir das partes dele.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Emite o endereço IP na representação de rede padrão.

Atributos públicos

Addr

uint32_t Addr[4]

Matriz de palavras opacas para conter endereços IP (independente da versão do protocolo)

Os endereços IPv6 usam todos os 128 bits divididos em quatro números inteiros sem assinatura ordenados por bytes de 32 bits. Os endereços IPv4 são V4COMPAT, ou seja, as três primeiras palavras são zero, e a quarta palavra contém o endereço IPv4 na ordem de bytes da rede.

Atributos estáticos públicos

Qualquer

IPAddress Any

O objeto de endereço IP não especificado distinto.

Esse objeto é usado como uma constante para comparações de equivalência. Ele não pode ser modificado pelos usuários da camada Nest Inet.

Funções públicas

GlobalId

uint64_t GlobalId(
  void
) const 

Extraia o identificador de rede global de 16 bits de um endereço ULA IPv6.

Use esse método com um endereço local único (ULA) IPv6 para extrair o identificador de rede global, que é os 40 bits imediatamente após o prefixo de rede ULA distinto, por exemplo, fd00::/8. Em outras palavras, o identificador de rede global está localizado nos cinco bytes do endereço, do 2o ao 6o bytes.

Detalhes
Retornos
Identificador de rede global de 40 bits ou zero se o endereço IP não for um endereço local único IPv6.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extraia o IID de um endereço ULA IPv6.

Use esse método com um endereço local único (ULA, na sigla em inglês) IPv6 para extrair o identificador do identificador (IID, na sigla em inglês), que são os 64 bits menos significativos do endereço.

Detalhes
Retornos
Identificador de interface de 64 bits ou zero se o endereço IP não for um endereço local único IPv6.

IsIPv4

bool IsIPv4(
  void
) const 

Teste se o endereço é compatível com IPv4.

Use esse método para verificar se o endereço pertence à família de endereços IPv4. Observação: o endereço não especificado não é um endereço IPv4.

Detalhes
Valores de retorno
true
O endereço é IPv4 e não é um endereço não especificado.
false
O endereço é IPv6 ou não especificado.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Teste se o endereço é de transmissão IPv4.

Use esse método para verificar se ele é o endereço de transmissão IPv4 de finalidade especial.

Detalhes
Valores de retorno
true
O endereço é a transmissão IPv4
false
Como alternativa, faça o seguinte:

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Teste se o endereço é multicast IPv4.

Use esse método para verificar se o endereço é multicast IPv4.

Detalhes
Valores de retorno
true
O endereço é multicast IPv4
false
Como alternativa, faça o seguinte:

IsIPv6

bool IsIPv6(
  void
) const 

Teste se o endereço é compatível com IPv6.

Use esse método para verificar se o endereço pertence à família de endereços IPv6. Observação: o endereço não especificado não é um endereço IPv6.

Detalhes
Valores de retorno
true
O endereço é IPv6 e não é um endereço não especificado.
false
O endereço é IPv4 ou não é especificado.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Teste se o endereço é um endereço unicast global IPv6.

Use esse método para verificar se o endereço pertence à família de endereços IPv6 e tem o prefixo de endereço unicast global.

Detalhes
Valores de retorno
true
O endereço é unicast global IPv6
false
Como alternativa, faça o seguinte:

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Teste se o endereço é link-local (LL) IPv6.

Use esse método para verificar se o endereço pertence à família de endereços IPv6 e tem o prefixo de endereço link-local IPv6 reservado.

Detalhes
Valores de retorno
true
O endereço é link-local IPv6
false
Como alternativa, faça o seguinte:

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Teste se o endereço é multicast IPv6.

Use esse método para verificar se o endereço pertence à família de endereços IPv6 e tem o prefixo de endereço multicast IPv6 reservado.

Detalhes
Valores de retorno
true
O endereço é multicast IPv6
false
Como alternativa, faça o seguinte:

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

Teste se o endereço é um endereço local único IPv6 (ULA, na sigla em inglês).

Use esse método para verificar se o endereço pertence à família de endereços IPv6 e tem o prefixo de endereço local exclusivo IPv6 reservado.

Detalhes
Valores de retorno
true
O endereço é IPv6 único-local
false
Como alternativa, faça o seguinte:

IsMulticast

bool IsMulticast(
  void
) const 

Teste se o endereço é multicast IPv4 ou IPv6.

Use esse método para verificar se o endereço pertence à família de endereços IPv4 ou IPv6 e tem o prefixo de endereço multicast IPv4 ou IPv6 reservado.

Detalhes
Valores de retorno
true
O endereço é multicast IPv4 ou IPv6
false
Como alternativa, faça o seguinte:

Sub-rede

uint16_t Subnet(
  void
) const 

Extraia o identificador de sub-rede de 16 bits de um endereço ULA IPv6.

Use esse método com um endereço local único (ULA, na sigla em inglês) IPv6 para extrair o identificador de sub-rede, que são os 16 bits menos significativos do prefixo de rede. O prefixo da rede são os 64 bits mais significativos do endereço. Em outras palavras, o identificador de sub-rede está localizado no 7o e no 8o bytes de um endereço de 16 bytes.

Detalhes
Retornos
Identificador de sub-rede de 16 bits ou zero se o endereço IP não for um endereço local único IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Extrair o endereço IPv4 como uma estrutura de dados de plataforma.

Use ToIPv4() const para extrair o conteúdo como um endereço IPv4, se possível. Os endereços IPv6 e o endereço não especificado são extraídos como 0.0.0.0.

O resultado é do tipo struct in_addr (em POSIX) ou ip4_addr_t (em LwIP).

Detalhes
Retornos
O endereço IPv4 encapsulado, ou 0.0.0.0 se o endereço não for especificado ou não for um endereço IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Extraia o endereço IPv6 como uma estrutura de dados de plataforma.

Use ToIPv6() const para extrair o conteúdo como um endereço IPv6, se possível. Os endereços IPv4 e o endereço não especificado são extraídos como [::].

O resultado é do tipo struct in6_addr (em POSIX) ou ip6_addr_t (em LwIP).

Detalhes
Retornos
O endereço IPv4 encapsulado, 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 

Emitir o endereço IP no formato de apresentação de texto convencional.

Use ToString(char *buf, uint32_t bufSize) const para gravar a forma de apresentação de texto convencional do endereço IP na memória localizada em buf e estendendo até bufSize bytes, incluindo o caractere de encerramento NUL.

Detalhes
Parâmetros
[out] buf
O endereço do texto emitido.
[in] bufSize
O tamanho do buffer do texto emitido.

Observação: não está em conformidade com o RFC 5952 em algumas plataformas. Especificamente, a compactação zero pode não ser aplicada de acordo com a seção 4.2.

Detalhes
Retornos
O argumento buf se não houver erro de formatação ou zero, caso contrário.

Tipo

IPAddressType Type(
  void
) const 

Extraia o tipo de endereço IP.

Use esse método para retornar um valor do tipo enumerado IPAddressType e indicar o tipo de endereço IP.

Detalhes
Valores de retorno
kIPAddressType_IPv4
O endereço é IPv4.
kIPAddressType_IPv6
O endereço é IPv6.
kIPAddressType_Any
O endereço é um endereço não especificado.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Emite o endereço IP na representação de rede padrão.

Use WriteAddress(uint8_t *&p) para codificar o endereço IP no formato binário definido pelo RFC 4291 para endereços IPv6. Os endereços IPv4 são codificados de acordo com a seção 2.5.5.1 Endereço IPv6" (V4COMPAT).

Detalhes
Parâmetros
[in,out] p
Referência ao cursor a ser usado para gravação.

operator!=

bool operator!=(
  const IPAddress & other
) const 

Compare esse endereço IP com outro para descobrir a inequivalência.

Detalhes
Parâmetros
[in] other
O endereço a ser comparado.
Valores de retorno
true
Se for equivalente a other
false
Como alternativa, faça o seguinte:

operator=

IPAddress & operator=(
  const IPAddress & other
)

Operador de atribuição convencional.

Detalhes
Parâmetros
[in] other
O endereço a ser copiado.
Retornos
Uma referência a este objeto.

operador==

bool operator==(
  const IPAddress & other
) const 

Compare este endereço IP com outro para garantir a equivalência.

Detalhes
Parâmetros
[in] other
O endereço a ser comparado.
Valores de retorno
true
Se for equivalente a other
false
Como alternativa, faça o seguinte:

Funções estáticas públicas

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Essa é uma função de membro sobrecarregada, fornecida para conveniência. Ela difere da função acima apenas pelo(s) argumento(s) que ela aceita.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Injetar o endereço IPv4 de uma estrutura de dados de plataforma.

Use FromIPv4(const ip4_addr_t &addr) para injetar addr como um endereço IPv4.

O argumento addr é do tipo const struct in_addr& (em POSIX) ou const ip4_addr_t& (em LwIP).

Detalhes
Retornos
O endereço IP construído.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Essa é uma função de membro sobrecarregada, fornecida para conveniência. Ela difere da função acima apenas pelo(s) argumento(s) que ela aceita.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Injetar o endereço IPv6 de uma estrutura de dados de plataforma.

Use FromIPv6(const ip6_addr_t &addr) para injetar addr como um endereço IPv6.

O argumento addr é do tipo const struct in6_addr& (em POSIX) ou const ip6_addr_t& (em LwIP).

Detalhes
Retornos
O endereço IP construído.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Injetar o endereço IPv6 de um struct sockaddr& no formato POSIX

Use FromSockAddr(const struct sockaddr& sockaddr) para injetar sockaddr.sa_addr como um endereço IPv6.

Detalhes
Retornos
O endereço IP construído.

FromString

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

Verifique o endereço IP a partir do texto de apresentação convencional.

Use FromString(const char *str, IPAddress& output) para substituir um endereço IP digitalizando a apresentação de texto convencional localizada em str.

Detalhes
Parâmetros
[in] str
O endereço do texto emitido.
[out] output
O objeto a ser definido como o endereço verificado.

Detalhes
Valores de retorno
true
O formato da apresentação é válido
false
Como alternativa, faça o seguinte:

FromString

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

Verifique o endereço IP a partir do texto de apresentação convencional.

Use FromString(const char *str, size_t strLen, IPAddress& output) para substituir um endereço IP digitalizando a apresentação de texto convencional localizada em str.

Detalhes
Parâmetros
[in] str
Um ponteiro para o texto a ser lido.
[in] strLen
O tamanho do texto a ser verificado.
[out] output
O objeto a ser definido como o endereço verificado.

Detalhes
Valores de retorno
true
O formato da apresentação é válido
false
Como alternativa, faça o seguinte:

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Criar um endereço de transmissão IPv4.

Detalhes
Retornos
O endereço IP construído.

MakeIPv6Multicast

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

Construir um endereço multicast IPv6 com as partes dele.

Use MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) para criar um endereço multicast IPv6 com flags para o escopo de roteamento scope e os octetos do identificador de grupo groupId.

Detalhes
Retornos
O endereço IP construído.

MakeIPv6Multicast

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

Construir um endereço multicast IPv6 com as partes dele.

Use MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) para criar um endereço multicast IPv6 com flags para o escopo de roteamento scope e o identificador de grupo groupId.

Detalhes
Retornos
O endereço IP construído.

MakeIPv6PrefixMulticast

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

Construir um endereço multicast IPv6 temporário com prefixo nas partes dele.

Use MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) para construir um endereço multicast IPv6 temporário com prefixo para o escopo de roteamento scope e os octetos do identificador de grupo groupId, qualificado pelo prefixo prefix de bits de comprimento prefixlen.

Detalhes
Retornos
O endereço IP construído.

MakeIPv6TransientMulticast

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

Construir um endereço multicast IPv6 transitório a partir das partes dele.

Use MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) para criar um endereço multicast IPv6 transitório com flags para o escopo de roteamento scope e os octetos do identificador de grupo groupId.

Detalhes
Retornos
O endereço IP construído.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Construir um endereço multicast IPv6 conhecido a partir das partes dele.

Use MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) para criar um endereço multicast IPv6 para o escopo de roteamento scope e o identificador de grupo groupId.

Detalhes
Retornos
O endereço IP construído.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Construir um endereço link-local (LL) IPv6 a partir do seu IID.

Use MakeLLA(uint64_t interfaceId) para construir um endereço link-local (LL) IPv6 com o identificador de interface interfaceId.

Detalhes
Retornos
O endereço IP construído.

MakeULA

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

Construir um endereço local único (ULA, na sigla em inglês) IPv6 a partir das partes dele.

Use MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) para criar um endereço local único (ULA, na sigla em inglês) com o identificador de rede global globalId, o identificador de sub-rede subnet e o identificador de interface (IID) interfaceId.

Detalhes
Retornos
O endereço IP construído.

ReadAddress

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

Emite o endereço IP na representação de rede padrão.

Use ReadAddress(uint8_t *&p, IPAddress &output) para decodificar o endereço IP em p para o objeto output.

Detalhes
Parâmetros
[in,out] p
Referência ao cursor a ser usado na leitura.
[out] output
Objeto que receberá o endereço IP decodificado.