nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Esto proporciona acceso a los servicios de Internet, incluidos los temporizadores, la resolución del sistema de nombres de dominio (DNS), el transporte de red TCP, de red UDP y de red sin procesar, para un solo subproceso.

Resumen

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

Para LwIP, la notificación de preparación del evento se maneja a través de eventos / mensajes y hooks específicos de la plataforma y del sistema para el sistema de eventos / mensajes.

Constructores y destructores

InetLayer(void)
Este es el constructor predeterminado 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 una devolución de llamada de finalización y un estado de aplicación coincidentes) que aún pueda estar 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 de vínculo de un vínculo o una interfaz especificados.
GetPlatformData(void)
void *
Esto muestra los datos de plataforma específicos del cliente asignados a la instancia, si se configuraron previamente.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Controla la 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
Comprueba si hay una coincidencia de prefijo entre la dirección IPv6 especificada y cualquiera de las direcciones IPv6 configuradas de manera local.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Crea un objeto RawEndPoint nuevo para una versión de IP y un protocolo específicos.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Crea un objeto TCPEndPoint nuevo.
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 con los que trabajará select().
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
Esto establece los datos especificados de la plataforma específicos del cliente en la instancia para que la plataforma del cliente los recupere más tarde.
Shutdown(void)
Este es el deinicializador explícito InetLayer y se debe llamar antes de eliminar una instancia de InetLayer en la que se haya creado una 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.

Propiedades
kState_Initialized

Estado de inicialización.

kState_NotInitialized

Estado sin inicializar.

kState_ShutdownInProgress

Estado en el que se activó el cierre.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atributos públicos

Estado

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

El estado actual del objeto InetLayer.

[READ-ONLY] El estado actual.

Atributos estáticos públicos

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funciones públicas

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Cancela cualquier consulta de DNS pendiente (para una devolución de llamada de finalización y un estado de aplicación coincidentes) que aún pueda estar activa.

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

DroppableEventDequeued

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 el identificador de interfaz no se puede derivar, se establece en INET_NULL_INTERFACEID.

Detalles
Parámetros
[in] addr
Una referencia al objeto IPAddress.
[out] intfId
Es una referencia al objeto InterfaceId.
Resultado que se muestra
INET_NO_ERROR de forma incondicional.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

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

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

GetPlatformData

void * GetPlatformData(
  void
)

Esto muestra los datos de plataforma específicos del cliente asignados a la instancia, si se configuraron previamente.

Detalles
Resultado que se muestra
Datos de la plataforma específicos del cliente, si se configuraron previamente de lo contrario, NULL.

HandleSelectResult

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

Controla la 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 manejo de E/S respectivas para esos extremos.

Detalles
Parámetros
[in] selectRes
El valor que se muestra de la llamada de selección.
[in] readfds
Un puntero al conjunto de descriptores de archivos leídos.
[in] writefds
Un puntero al conjunto de descriptores de archivos de escritura.
[in] exceptfds
Un puntero al conjunto de descriptores de archivos con errores.

InetLayer

 InetLayer(
  void
)

Este es el constructor predeterminado InetLayer.

Lleva a cabo la inicialización básica de los miembros de datos. Sin embargo, dado que 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 que se pueda usar InetLayer.

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

Las plataformas pueden elegir confirmar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS en el encabezado de configuración específica de la plataforma y habilitar los enlaces Platform::InetLayer::WillInit y Platform::InetLayer::didInit para aplicar personalizaciones específicas de la plataforma o extensiones de datos a InetLayer.

Detalles
Parámetros
[in] aSystemLayer
Una instancia necesaria de la capa del sistema de Weave ya se inicializó correctamente.
[in] aContext
Un argumento de contexto opcional que se pasará de vuelta al llamador a través de cualquier función de enlace específica de la plataforma.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Si la InetLayer está en un estado incorrecto.
INET_ERROR_NO_MEMORY
Si InetLayer se queda sin recursos 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 tiene éxito.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

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

Detalles
Parámetros
[in] addr
La dirección IPv6 para verificar la coincidencia de prefijo.
Resultado que se muestra
true si se encuentra una coincidencia exitosa; de lo contrario, es falso.

NewRawEndPoint

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

Crea un objeto RawEndPoint nuevo para una versión de IP y un protocolo 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 falla la creación.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Si no se inicializa el objeto InetLayer.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerRawEndPoint está completo y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si tiene éxito.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Crea un objeto TCPEndPoint nuevo.

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 falla la creación.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Si no se inicializa el objeto InetLayer.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerTCPEndPoint está completo y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si tiene éxito.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Crea un objeto TunEndPoint nuevo.

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

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Crea un objeto UDPEndPoint nuevo.

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

PrepareSelect

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

Prepara los conjuntos de descriptores de archivos con los que trabajará select().

Detalles
Parámetros
[out] nfds
El rango de descriptores de archivos en el conjunto de descriptores de archivos.
[in] readfds
Un puntero al conjunto de descriptores de archivos legibles.
[in] writefds
Un puntero al conjunto de descriptores de archivos que admiten escritura.
[in] exceptfds
Un puntero al conjunto de descriptores de archivos con errores.
[in] sleepTimeTV
Un puntero a una estructura que especifica cuánto tiempo debe permanecer inactivo la selecció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 cadena C no terminada en NULL que representa el nombre de host que se consultará.
[in] hostNameLen
La longitud de cadena del nombre de host.
[in] options
Un valor entero que controla cómo se realiza la resolución de nombres 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 a la tabla de DNS.
[in] onComplete
Un puntero a la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero para el estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores de retorno
INET_NO_ERROR
si una solicitud de DNS se maneja con éxito.
INET_ERROR_NO_MEMORY
si el grupo de resolución de capa de Inet está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de host de una 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; vuelve 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 de 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 cadena C no terminada en NULL que representa el nombre de host que se consultará.
[in] hostNameLen
La longitud de cadena 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 a la tabla de DNS.
[in] onComplete
Un puntero a la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero para el estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores de retorno
INET_NO_ERROR
si una solicitud de DNS se maneja con éxito.
INET_ERROR_NO_MEMORY
si el grupo de resolución de capa de Inet está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de host de una 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; vuelve 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 de 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 cadena C terminada en NULL que representa el nombre de host que se consultará.
[in] maxAddrs
La cantidad máxima de direcciones que se deben almacenar en la tabla de DNS.
[in] addrArray
Un puntero a la tabla de DNS.
[in] onComplete
Un puntero a la función de devolución de llamada cuando se completa una solicitud de DNS.
[in] appState
Un puntero para el estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores de retorno
INET_NO_ERROR
si una solicitud de DNS se maneja con éxito.
INET_ERROR_NO_MEMORY
si el grupo de resolución de capa de Inet está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si un nombre de host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si el nombre de host de una 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; vuelve 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 de red POSIX que muestra la implementación del agente de resolución de DNS subyacente.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Esto establece los datos especificados de la plataforma específicos del cliente en la instancia para que la plataforma del cliente los recupere más tarde.

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

Cierre

INET_ERROR Shutdown(
  void
)

Este es el deinicializador explícito InetLayer y se debe llamar antes de eliminar una instancia de InetLayer en la que se haya creado una instancia.

Las plataformas pueden elegir confirmar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS en el encabezado de configuración específica de la plataforma y habilitar los hooks Platform::InetLayer::WillShutdown y Platform::InetLayer::lista de espera para realizar la limpieza de las personalizaciones específicas de la plataforma o las extensiones de datos en InetLayer.

Detalles
Resultado que se muestra
INET_NO_ERROR si la operación es exitosa; de lo contrario, un error específico que indica el motivo del fallo en el apagado.

SystemLayer

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

Funciones 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
)