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, el transporte de red UDP y el transporte de red sin procesar para un solo subproceso.

Resumen

Para los sockets BSD/POSIX, la notificación de preparación del evento se controla mediante 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 de eventos se controla 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 públicos estáticos

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 que coincida con el estado de la aplicación) 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 del vínculo para un vínculo o una interfaz especificados.
GetPlatformData(void)
void *
Esto muestra todos los datos de plataforma específicos del cliente asignados a la instancia, si se configuró con anterioridad.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Controlar E/S desde una llamada seleccionada
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Este es el inicializador explícito de 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 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 select() trabajará.
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 para 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 para 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 para un nombre de host especificado.
SetPlatformData(void *aPlatformData)
void
Esto establece los datos especificados de la plataforma del cliente en la instancia para que la plataforma cliente los recupere más tarde.
Shutdown(void)
Este es el desinicializador explícito de InetLayer y se debe llamar antes de eliminar una instancia de InetLayer con 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 no inicializado.

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.

[SOLO LECTURA] Estado actual.

Atributos públicos estáticos

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 que coincida con el estado de la aplicación) 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.
Qué muestra
INET_NO_ERROR de forma incondicional.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Obtén la dirección IPv6 local del vínculo para 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 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 NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Si el vínculo no tiene ninguna dirección configurada.
INET_NO_ERROR
Si la operación es exitosa.

GetPlatformData

void * GetPlatformData(
  void
)

Esto muestra todos los datos de plataforma específicos del cliente asignados a la instancia, si se configuró con anterioridad.

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

HandleSelectResult

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

Controlar 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 de selección.
[in] readfds
Un puntero para el conjunto de descriptores de archivos de lectura.
[in] writefds
Un puntero para el conjunto de descriptores de archivo de escritura.
[in] exceptfds
Un puntero para el conjunto de descriptores de archivos con errores.

InetLayer

 InetLayer(
  void
)

Este es el constructor predeterminado InetLayer.

Realiza una inicialización de miembros de datos básicos. 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 de InetLayer.

Se debe llamar a este método y completarlo correctamente antes de poder usar InetLayer.

El llamador puede proporcionar un argumento de contexto opcional que se pasará a través de cualquier función hook específica de la plataforma. Para las adaptaciones basadas en LwIP, por lo general, esto 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 hooks 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 requerida de la capa del sistema de Weave ya se inicializó correctamente.
[in] aContext
Un argumento de contexto opcional que se pasará al emisor a través de cualquier función hook específica de la plataforma.
Valores que se muestran
INET_ERROR_INCORRECT_STATE
Si la InetLayer está en un estado incorrecto.
INET_ERROR_NO_MEMORY
Si la InetLayer se queda sin recursos para esta solicitud de un temporizador nuevo.
other
Errores específicos de la plataforma que indican el motivo del error de inicialización.
INET_NO_ERROR
Si la operación es exitosa.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

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 en la que se debe comprobar la coincidencia de prefijo.
Qué 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 que se muestra 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 inicializó.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerRawEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación es exitosa.

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 que se muestra 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 inicializó.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerTCPEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación es exitosa.

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 que se muestra 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 inicializó.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerTunEndPoint está lleno y no se pueden crear otros nuevos.
INET_NO_ERROR
Si la operación es exitosa.

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 que se muestra 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 inicializó.
INET_ERROR_NO_ENDPOINTS
Si el grupo InetLayerUDPEndPoint está lleno y no se pueden crear extremos nuevos.
INET_NO_ERROR
Si la operación es exitosa.

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 select() trabajará.

Detalles
Parámetros
[out] nfds
El rango de descriptores de archivo en el conjunto de descriptores de archivo.
[in] readfds
Un puntero para el conjunto de descriptores de archivos 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 suspenderse 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 para un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero a una cadena C no terminada en NULL que representa el nombre del host que se consultará.
[in] hostNameLen
La longitud de la string del nombre de host.
[in] options
Es 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 almacenarán 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 al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se maneja correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agentes de resolución de Inet Layer está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si el nombre de un host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si no se pudo resolver el nombre de un host de solicitud 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 devolvió un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente.
other
Es un error de SO o de red de 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 para un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero a una cadena C no terminada en NULL que representa el nombre del host que se consultará.
[in] hostNameLen
La longitud de la string del nombre de host.
[in] maxAddrs
La cantidad máxima de direcciones que se almacenarán 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 al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se maneja correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agentes de resolución de Inet Layer está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si el nombre de un host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si no se pudo resolver el nombre de un host de solicitud 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 devolvió un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente.
other
Es un error de SO o de red de 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 para un nombre de host especificado.

Detalles
Parámetros
[in] hostName
Un puntero a una cadena C terminada en NULL que representa el nombre del host que se consultará.
[in] maxAddrs
La cantidad máxima de direcciones que se almacenarán 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 al estado de la aplicación que se pasará a onComplete cuando se complete una solicitud de DNS.
Valores que se muestran
INET_NO_ERROR
si una solicitud de DNS se maneja correctamente.
INET_ERROR_NO_MEMORY
si el grupo de agentes de resolución de Inet Layer está completo.
INET_ERROR_HOST_NAME_TOO_LONG
si el nombre de un host solicitado es demasiado largo.
INET_ERROR_HOST_NOT_FOUND
si no se pudo resolver el nombre de un host de solicitud 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 devolvió un error irrecuperable.
INET_ERROR_NOT_IMPLEMENTED
si la resolución de DNS no está habilitada en la plataforma subyacente.
other
Es un error de SO o de red de 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 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 configurarán.

Cierre

INET_ERROR Shutdown(
  void
)

Este es el desinicializador explícito de InetLayer y se debe llamar antes de eliminar una instancia de InetLayer con 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::DidShutdown para aplicar la limpieza de personalizaciones específicas de la plataforma o extensiones de datos a InetLayer.

Detalles
Qué muestra
INET_NO_ERROR si se realiza de forma correcta; de lo contrario, un error específico que indica el motivo del error de 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
)