nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Isso fornece acesso a serviços da Internet, incluindo timers, resolução de Sistema de Nomes de Domínio (DNS), transporte de rede TCP, transporte de rede UDP e transporte de rede bruta, para uma única linha de execução.

Resumo

Para soquetes BSD/POSIX, a notificação de prontidão de eventos é processada por descritores de arquivo e por uma implementação tradicional de pesquisa / seleção na adaptação da plataforma.

Para LwIP, a notificação de prontidão de eventos é tratada por eventos / mensagens e hooks específicos da plataforma e do sistema para o sistema de eventos / mensagens.

Construtores e destrutores

InetLayer(void)
Esse é o construtor padrão InetLayer.

Tipos públicos

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
O estado atual do objeto InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Atributos públicos

State
enum nl::Inet::InetLayer::@5
O estado atual do objeto InetLayer.

Atributos estáticos públicos

sInetEventHandlerDelegate

Funções públicas

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Cancele qualquer consulta DNS pendente (para uma chamada de retorno de conclusão e estado do aplicativo) que ainda estejam ativas.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Consiga o identificador da interface para o endereço IP especificado.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Extrai o endereço IPv6 link-local de um link ou interface especificado.
GetPlatformData(void)
void *
Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se tiverem sido definidos anteriormente.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Processe a E/S de uma chamada selecionada.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Este é o inicializador explícito InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Verifique se há uma correspondência de prefixo entre o endereço IPv6 especificado e algum dos endereços IPv6 configurados localmente.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Cria um novo objeto RawEndPoint para uma versão de IP e um protocolo específicos.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Cria um novo objeto TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Cria um novo objeto TunEndPoint.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Cria um novo objeto UDPEndPoint.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Prepare os conjuntos de descritores de arquivo para trabalhar com o select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP de um nome de host especificado.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP de um nome de host especificado.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP de um nome de host especificado.
SetPlatformData(void *aPlatformData)
void
Isso define os dados da plataforma específicos do cliente especificados na instância para recuperação posterior pela plataforma do cliente.
Shutdown(void)
Esse é o desinicializador explícito de InetLayer e precisa ser chamado antes de descartar uma instância de InetLayer instanciada.
SystemLayer(void) const

Funções estáticas públicas

HandleInetLayerEvent(Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument)
Weave::System::Error
IsDroppableEvent(Weave::System::EventType aType)
bool
UpdateSnapshot(nl::Weave::System::Stats::Snapshot & aSnapshot)
void

Tipos públicos

@5

 @5

O estado atual do objeto InetLayer.

Propriedades
kState_Initialized

Estado inicializado.

kState_NotInitialized

Estado não inicializado.

kState_ShutdownInProgress

Estado onde o encerramento foi acionado.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atributos públicos

Estado

enum nl::Inet::InetLayer::@5 State

O estado atual do objeto InetLayer.

[SOMENTE LEITURA] Estado atual.

Atributos estáticos públicos

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funções públicas

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Cancele qualquer consulta DNS pendente (para uma chamada de retorno de conclusão e estado do aplicativo) que ainda estejam ativas.

Detalhes
Parâmetros
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para um objeto de estado do aplicativo a ser passado para a função de callback como argumento.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

INET_ERROR GetInterfaceFromAddr(
  const IPAddress & addr,
  InterfaceId & intfId
)

Consiga o identificador da interface para o endereço IP especificado.

Se o identificador de interface não puder ser derivado, ele será definido como INET_NULL_INTERFACEID.

Detalhes
Parâmetros
[in] addr
Uma referência ao objeto IPAddress.
[out] intfId
Uma referência ao objeto InterfaceId.
Retorna
INET_NO_ERROR incondicionalmente.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Extrai o endereço IPv6 link-local de um link ou interface especificado.

Detalhes
Parâmetros
[in] link
A interface para a qual o endereço IPv6 link-local está sendo buscado.
[out] llAddr
O endereço IPv6 do link-local para o link.
Valores de retorno
INET_ERROR_NOT_IMPLEMENTED
Se não houver suporte para IPv6.
INET_ERROR_BAD_ARGS
Se o endereço link-local for NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Se o link não tem nenhum endereço configurado.
INET_NO_ERROR
Se der certo.

GetPlatformData

void * GetPlatformData(
  void
)

Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se tiverem sido definidos anteriormente.

Detalhes
Retorna
Dados da plataforma específicos do cliente, se tiverem sido definidos anteriormente. Caso contrário, NULL.

HandleSelectResult

void HandleSelectResult(
  int selectRes,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds
)

Processe a E/S de uma chamada selecionada.

Esse método registra o evento pendente de E/S em cada endpoint ativo e, em seguida, invoca as respectivas funções de processamento de E/S para esses endpoints.

Detalhes
Parâmetros
[in] selectRes
O valor de retorno da chamada de seleção.
[in] readfds
Um ponteiro para o conjunto de descritores de arquivo lidos.
[in] writefds
Um ponteiro para o conjunto de descritores de arquivos de gravação.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.

InetLayer

 InetLayer(
  void
)

Esse é o construtor padrão InetLayer.

Ele realiza algumas inicializações básicas de membros de dados. No entanto, como InetLayer segue um padrão de design explícito de inicializador, o método InetLayer::Init precisa ser chamado antes de usar o objeto.

Init

INET_ERROR Init(
  Weave::System::Layer & aSystemLayer,
  void *aContext
)

Este é o inicializador explícito InetLayer.

Ela deve ser chamada e concluída antes que a InetLayer possa ser usada.

O autor da chamada pode fornecer um argumento de contexto opcional, que será retornado por qualquer função de gancho específica da plataforma. Para adaptações baseadas em LwIP, isso normalmente será um ponteiro para a fila de eventos associada à instância InetLayer.

As plataformas podem optar por declarar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os hooks de Platform::InetLayer::WillInit e Platform::InetLayer::DidInit para afetar personalizações ou extensões de dados específicas da plataforma no InetLayer.

Detalhes
Parâmetros
[in] aSystemLayer
Uma instância obrigatória da camada de sistema Weave já foi inicializada.
[in] aContext
Um argumento de contexto opcional que será retornado ao autor da chamada por meio de qualquer função de gancho específica da plataforma.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o InetLayer estiver em um estado incorreto.
INET_ERROR_NO_MEMORY
Se o InetLayer esgotar o recurso para essa solicitação de um novo timer.
other
Erros específicos da plataforma que indicam o motivo da falha na inicialização.
INET_NO_ERROR
Se der certo.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Verifique se há uma correspondência de prefixo entre o endereço IPv6 especificado e algum dos endereços IPv6 configurados localmente.

Detalhes
Parâmetros
[in] addr
O endereço IPv6 para verificar a correspondência de prefixo.
Retorna
verdadeiro se uma correspondência bem-sucedida for encontrada. Caso contrário, será falso.

NewRawEndPoint

INET_ERROR NewRawEndPoint(
  IPVersion ipVer,
  IPProtocol ipProto,
  RawEndPoint **retEndPoint
)

Cria um novo objeto RawEndPoint para uma versão de IP e um protocolo específicos.

Detalhes
Parâmetros
[in] ipVer
IPv4 ou IPv6.
[in] ipProto
Um protocolo dentro da família de IPs (por exemplo, ICMPv4 ou ICMPv6).
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto RawEndPoint que é um parâmetro de retorno na conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerRawEndPoint está cheio e não é possível criar nenhum endpoint novo.
INET_NO_ERROR
Se der certo.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Cria um novo objeto TCPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto TCPEndPoint que é um parâmetro de retorno na conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTCPEndPoint está cheio e não é possível criar nenhum endpoint.
INET_NO_ERROR
Se der certo.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Cria um novo objeto TunEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto TunEndPoint que é um parâmetro de retorno na conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTunEndPoint estiver cheio e não for possível criar nenhum novo.
INET_NO_ERROR
Se der certo.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Cria um novo objeto UDPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto UDPEndPoint que é um parâmetro de retorno na conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerUDPEndPoint está cheio e não é possível criar nenhum endpoint.
INET_NO_ERROR
Se der certo.

PrepareSelect

void PrepareSelect(
  int & nfds,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds,
  struct timeval & sleepTime
)

Prepare os conjuntos de descritores de arquivo para trabalhar com o select().

Detalhes
Parâmetros
[out] nfds
O intervalo de descritores de arquivo no conjunto de descritores de arquivo.
[in] readfds
Um ponteiro para o conjunto de descritores de arquivo legíveis.
[in] writefds
Um ponteiro para o conjunto de descritores de arquivos graváveis.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.
[in] sleepTimeTV
Um ponteiro para uma estrutura que especifica por quanto tempo a seleção deve ficar

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t options,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP de um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C não terminada em NULL que representa o nome do host a ser consultado.
[in] hostNameLen
O tamanho da string do nome do host.
[in] options
Um valor inteiro que controla como a resolução do nome do host é realizada.
                    Value should be one of the address family values from the
                    #DNSOptions enumeration:

                    #kDNSOption_AddrFamily_Any
                    #kDNSOption_AddrFamily_IPv4Only
                    #kDNSOption_AddrFamily_IPv6Only
                    #kDNSOption_AddrFamily_IPv4Preferred
                    #kDNSOption_AddrFamily_IPv6Preferred
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser transmitido para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for tratada com sucesso.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente novamente mais tarde.
INET_ERROR_DNS_NO_RECOVERY
quando um servidor de nomes retorna um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP de um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C não terminada em NULL que representa o nome do host a ser consultado.
[in] hostNameLen
O tamanho da string do nome do host.
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser transmitido para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for tratada com sucesso.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente novamente mais tarde.
INET_ERROR_DNS_NO_RECOVERY
quando um servidor de nomes retorna um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP de um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C terminada em NULL que representa o nome do host a ser consultado.
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser transmitido para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for tratada com sucesso.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente novamente mais tarde.
INET_ERROR_DNS_NO_RECOVERY
quando um servidor de nomes retorna um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Isso define os dados da plataforma específicos do cliente especificados na instância para recuperação posterior pela plataforma do cliente.

Detalhes
Parâmetros
[in] aPlatformData
Os dados da plataforma específicos do cliente a serem definidos.

Desligamento

INET_ERROR Shutdown(
  void
)

Esse é o desinicializador explícito de InetLayer e precisa ser chamado antes de descartar uma instância de InetLayer instanciada.

As plataformas podem optar por declarar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os hooks de Platform::InetLayer::WillShutdown e Platform::InetLayer::DidShutdown para efetuar a limpeza de personalizações específicas da plataforma ou extensões de dados para InetLayer.

Detalhes
Retorna
INET_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha no encerramento.

SystemLayer

Weave::System::Layer * SystemLayer(
  void
) const 

Funções estáticas públicas

HandleInetLayerEvent

Weave::System::Error HandleInetLayerEvent(
  Weave::System::Object & aTarget,
  Weave::System::EventType aEventType,
  uintptr_t aArgument
)

IsDroppableEvent

bool IsDroppableEvent(
  Weave::System::EventType aType
)

UpdateSnapshot

void UpdateSnapshot(
  nl::Weave::System::Stats::Snapshot & aSnapshot
)