nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Proporciona acceso a servicios de Internet para un solo subproceso, entre los que se incluyen temporizadores, resolución de sistemas de nombres de dominio (DNS), transporte de redes TCP, transporte de red UDP y transporte de red sin procesar.

Resumen

Para los sockets BSD/POSIX, la notificación de preparación de los eventos se controla mediante descriptores de archivos y una implementación tradicional de sondeo o selección en la adaptación de la plataforma.

En el caso de LwIP, la notificación de preparación de eventos se controla mediante eventos / mensajes y hooks específicos de la plataforma y el sistema para el sistema de eventos / mensajes.

Constructores y destructores

InetLayer(void)
Este es el constructor predeterminado de InetLayer.

Tipos públicos

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
El estado actual del objeto InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Atributos públicos

State
enum nl::Inet::InetLayer::@5
El estado actual del objeto InetLayer.

Atributos estáticos públicos

sInetEventHandlerDelegate

Funciones públicas

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Cancela cualquier consulta de DNS pendiente (para la devolución de llamada coincidente y el estado de la aplicación) que aún esté activa.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Obtén el identificador de interfaz para la dirección IP especificada.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Obtén la dirección IPv6 local del vínculo de una interfaz o un vínculo especificados.
GetPlatformData(void)
void *
Esto muestra cualquier dato de plataforma específico del cliente asignado a la instancia, si se configuró anteriormente.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Maneja E/S desde una llamada seleccionada.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Este es el inicializador explícito InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Verifica si hay una coincidencia de prefijo entre la dirección IPv6 especificada y cualquiera de las direcciones IPv6 configuradas de forma local.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Crea un objeto RawEndPoint nuevo para una versión y un protocolo de IP específicos.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Crea un nuevo objeto TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Crea un objeto TunEndPoint nuevo.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Crea un objeto UDPEndPoint nuevo.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Prepara los conjuntos de descriptores de archivos para que select() funcionen.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Realiza una resolución de dirección IP de un nombre de host especificado.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Realiza una resolución de dirección IP de un nombre de host especificado.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Realiza una resolución de dirección IP de un nombre de host especificado.
SetPlatformData(void *aPlatformData)
void
De esta manera, se configuran los datos específicos de la plataforma del cliente en la instancia para que la plataforma cliente los recupere más tarde.
Shutdown(void)
Este es el inicializador explícito InetLayer y se debe llamar antes de desechar una instancia InetLayer con instancia de la instancia.
SystemLayer(void) const

Funciones 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

El estado actual del objeto InetLayer.

Properties
kState_Initialized

Estado inicializado.

kState_NotInitialized

Estado no inicializado.

kState_ShutdownInProgress

Estado en el que se activó el bloqueo

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atributos públicos

Estado

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

El estado actual del objeto InetLayer.

[READ-ONLY] Estado actual.

Atributos estáticos públicos

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funciones públicas

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelarResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Cancela cualquier consulta de DNS pendiente (para la devolución de llamada coincidente y el estado de la aplicación) que aún esté activa.

Detalles
Parámetros
[in] onComplete
Un puntero para la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero para un objeto de estado de la aplicación que se pasará a la función de devolución de llamada como argumento.

DroppableEventDequeue

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Obtén el identificador de interfaz para la dirección IP especificada.

Si no se puede derivar el identificador de interfaz, se establece en INET_NULL_INTERFACEID.

Detalles
Parámetros
[in] addr
Una referencia al objeto IPAddress.
[out] intfId
Una referencia al objeto InterfaceId.
Qué muestra
INET_NO_ERROR sin condiciones.

GetLinkLocalAddr.

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Obtén la dirección IPv6 local del vínculo de una interfaz o un vínculo especificados.

Detalles
Parámetros
[in] link
La interfaz para la que se busca la dirección IPv6 de vínculo local.
[out] llAddr
La dirección IPv6 del vínculo del vínculo.
Valores que se muestran
INET_ERROR_NOT_IMPLEMENTED
Si IPv6 no es compatible
INET_ERROR_BAD_ARGS
Si la dirección local del vínculo es NULO.
INET_ERROR_ADDRESS_NOT_FOUND
Si el vínculo no tiene ninguna dirección configurada.
INET_NO_ERROR
Si la operación se realiza correctamente

GetPlatformData

void * GetPlatformData(
  void
)

Esto muestra cualquier dato de plataforma específico del cliente asignado a la instancia, si se configuró anteriormente.

Detalles
Qué muestra
Datos de la plataforma específicos del cliente, si ya se configuraron; de lo contrario, son NULL.

NombreDeControlDeSelect

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

Maneja E/S desde una llamada seleccionada.

Este método registra el evento de E/S pendiente en cada extremo activo y, luego, invoca las funciones de control de E/S respectivas para esos extremos.

Detalles
Parámetros
[in] selectRes
El valor que se muestra de la llamada seleccionada.
[in] readfds
Un puntero para el conjunto de descriptores de archivos de lectura.
[in] writefds
Un puntero para el conjunto de descriptores de archivos de escritura.
[in] exceptfds
Un puntero para el conjunto de descriptores de archivos con errores.

InetLayer

 InetLayer(
  void
)

Este es el constructor predeterminado de InetLayer.

Realiza algunas inicializaciones básicas de miembros de datos. Sin embargo, como InetLayer sigue un patrón de diseño de inicializador explícito, se debe llamar correctamente al método InetLayer::Init antes de usar el objeto.

Init

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

Este es el inicializador explícito InetLayer.

Se debe llamar y completar correctamente antes de usar InetLayer.

El emisor puede proporcionar un argumento de contexto opcional que se pasará a través de cualquier función de hook específica de la plataforma. Para las adaptaciones basadas en LwIP, esto suele ser un puntero a la cola de eventos asociada con la instancia de InetLayer.

Las plataformas pueden optar por confirmar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS en su encabezado de configuración específico de la plataforma y habilitar los hooks de Platform::InetLayer::WillInit y Platform::InetLayer::DidInit para aplicar personalizaciones específicas de la plataforma o extensiones de datos en InetLayer.

Detalles
Parámetros
[in] aSystemLayer
Ya se inicializó correctamente una instancia obligatoria de la capa del sistema de Weave.
[in] aContext
Un argumento de contexto opcional que se pasará al llamador a través de cualquier función de hook específica de la plataforma.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si el InetLayer se encuentra en un estado incorrecto.
INET_ERROR_NO_MEMORY
Si InetLayer se queda sin recurso para esta solicitud de un temporizador nuevo.
other
Errores específicos de la plataforma que indican el motivo de la falla de inicialización.
INET_NO_ERROR
Si la operación se realiza correctamente

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subred

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Verifica si hay una coincidencia de prefijo entre la dirección IPv6 especificada y cualquiera de las direcciones IPv6 configuradas de forma local.

Detalles
Parámetros
[in] addr
La dirección IPv6 para verificar la coincidencia del prefijo.
Qué muestra
Es verdadero si se encuentra una coincidencia correcta; de lo contrario, es falso.

NewRawEndPoint

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

Crea un objeto RawEndPoint nuevo para una versión y un protocolo de IP específicos.

Detalles
Parámetros
[in] ipVer
IPv4 o IPv6.
[in] ipProto
Un protocolo dentro de la familia de IP (p.ej., ICMPv4 o ICMPv6).
[in,out] retEndPoint
Un puntero para un puntero del objeto RawEndPoint que es un parámetro de retorno cuando se completa la creación del objeto. *retEndPoint es NULL si la creación falla.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si el objeto InetLayer no se inicializa.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerRawEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación se realiza correctamente

Nuevo punto de extremo TCP

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Crea un nuevo objeto TCPEndPoint.

Detalles
Parámetros
[in,out] retEndPoint
Un puntero para un puntero del objeto TCPEndPoint que es un parámetro de retorno cuando se completa la creación del objeto. *retEndPoint es NULL si la creación falla.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si el objeto InetLayer no se inicializa.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerTCPEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación se realiza correctamente

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Crea un objeto TunEndPoint nuevo.

Detalles
Parámetros
[in,out] retEndPoint
Un puntero para un puntero del objeto TunEndPoint que es un parámetro de retorno cuando se completa la creación del objeto. *retEndPoint es NULL si la creación falla.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si el objeto InetLayer no se inicializa.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerTunEndPoint está lleno y no se pueden crear otros nuevos.
INET_NO_ERROR
Si la operación se realiza correctamente

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Crea un objeto UDPEndPoint nuevo.

Detalles
Parámetros
[in,out] retEndPoint
Un puntero para un puntero del objeto UDPEndPoint que es un parámetro de retorno cuando se completa la creación del objeto. *retEndPoint es NULL si la creación falla.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si el objeto InetLayer no se inicializa.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerUDPEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación se realiza correctamente

PrepareSeleccionar

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

Prepara los conjuntos de descriptores de archivos para que select() funcionen.

Detalles
Parámetros
[out] nfds
Es el rango de descriptores de archivos en el conjunto de descriptores de archivos.
[in] readfds
Un puntero para el conjunto de descriptores de archivo legibles.
[in] writefds
Un puntero para el conjunto de descriptores de archivos que admiten escritura.
[in] exceptfds
Un puntero para el conjunto de descriptores de archivos con errores.
[in] sleepTimeTV
Un puntero para una estructura que especifica cuánto tiempo debe seleccionar la suspensión

ResolveHostAddress

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

Realiza una resolución de dirección IP de un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero para una string de C no terminada en NULL que representa el nombre de host que se quiere consultar.
[in] hostNameLen
La longitud de string del nombre de host.
[in] options
Valor entero que controla cómo se realiza la resolución del nombre de host.
                    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
La cantidad máxima de direcciones que se deben almacenar en la tabla de DNS.
[in] addrArray
Un puntero para la tabla de DNS.
[in] onComplete
Un puntero para la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud del DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se controla correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agente de resolución de Inet está lleno.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de un host de solicitud no se pudo resolver en una dirección.
INET_ERROR_DNS_TRY_AGAIN
si un servidor de nombres mostró una indicación de falla temporal; vuelva a intentarlo más tarde.
INET_ERROR_DNS_NO_RECOVERY
si un servidor de nombres mostró un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente
other
Error de SO o red POSIX que muestra la implementación del agente de resolución de DNS subyacente.

ResolveHostAddress

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

Realiza una resolución de dirección IP de un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero para una string de C no terminada en NULL que representa el nombre de host que se quiere consultar.
[in] hostNameLen
La longitud de string del nombre de host.
[in] maxAddrs
La cantidad máxima de direcciones que se deben almacenar en la tabla de DNS.
[in] addrArray
Un puntero para la tabla de DNS.
[in] onComplete
Un puntero para la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud del DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se controla correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agente de resolución de Inet está lleno.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de un host de solicitud no se pudo resolver en una dirección.
INET_ERROR_DNS_TRY_AGAIN
si un servidor de nombres mostró una indicación de falla temporal; vuelva a intentarlo más tarde.
INET_ERROR_DNS_NO_RECOVERY
si un servidor de nombres mostró un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente
other
Error de SO o red POSIX que muestra la implementación del agente de resolución de DNS subyacente.

ResolveHostAddress

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

Realiza una resolución de dirección IP de un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero para una string C terminada en NULL que representa el nombre de host que se quiere consultar.
[in] maxAddrs
La cantidad máxima de direcciones que se deben almacenar en la tabla de DNS.
[in] addrArray
Un puntero para la tabla de DNS.
[in] onComplete
Un puntero para la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud del DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se controla correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agente de resolución de Inet está lleno.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de un host de solicitud no se pudo resolver en una dirección.
INET_ERROR_DNS_TRY_AGAIN
si un servidor de nombres mostró una indicación de falla temporal; vuelva a intentarlo más tarde.
INET_ERROR_DNS_NO_RECOVERY
si un servidor de nombres mostró un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente
other
Error de SO o red POSIX que muestra la implementación del agente de resolución de DNS subyacente.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

De esta manera, se configuran los datos específicos de la plataforma del cliente en la instancia para que la plataforma cliente los recupere más tarde.

Detalles
Parámetros
[in] aPlatformData
Los datos de la plataforma específicos del cliente que se deben configurar.

Cierre

INET_ERROR Shutdown(
  void
)

Este es el inicializador explícito InetLayer y se debe llamar antes de desechar una instancia InetLayer con instancia de la instancia.

Las plataformas pueden optar por confirmar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS en el encabezado de su configuración específica de la plataforma y habilitar los hooks de Platform::InetLayer::WillShutdown y Platform::InetLayer::didShutdown para efectuar la limpieza de las personalizaciones o extensiones de datos específicas de la plataforma en InetLayer.

Detalles
Qué muestra
INET_NO_ERROR si la operación es exitosa; de lo contrario, es un error específico que indica el motivo del error de cierre.

Capa del sistema

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

Funciones estáticas públicas

ID de evento de capa de control de Internet

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
)