nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Cela permet d'accéder aux services Internet, y compris les minuteurs, la résolution DNS (Domain Name System), le transport réseau TCP, le transport réseau UDP et le transport réseau brut, pour un seul thread.

Résumé

Pour les sockets BSD/POSIX, la notification d'aptitude aux événements est gérée via des descripteurs de fichier et une implémentation de sondage / sélection traditionnelle sur l'adaptation de la plate-forme.

Pour le protocole LwIP, la notification de préparation aux événements est gérée via des événements / messages et des hooks spécifiques à la plate-forme et au système pour le système d'événements / de messages.

Constructeurs et destructeurs

InetLayer(void)
Il s'agit du constructeur par défaut de InetLayer.

Types publics

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
énum
État actuel de l'objet InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Attributs publics

State
enum nl::Inet::InetLayer::@5
État actuel de l'objet InetLayer.

Attributs statiques publics

sInetEventHandlerDelegate

Fonctions publiques

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Annulez toute requête DNS en attente (pour un rappel de finalisation de la mise en correspondance et l'état de l'application) qui peut être encore active.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Permet d'obtenir l'identifiant d'interface pour l'adresse IP spécifiée.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Permet d'obtenir l'adresse IPv6 locale de la liaison pour une liaison ou une interface spécifiée.
GetPlatformData(void)
void *
Renvoie toutes les données de plate-forme spécifiques au client qui ont été attribuées à l'instance, si elles ont été définies précédemment.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Gérez les E/S à partir d'un appel sélectionné.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Il s'agit de l'initialiseur explicite InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Vérifiez s'il existe une correspondance de préfixe entre l'adresse IPv6 spécifiée et l'une des adresses IPv6 configurées localement.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Crée un objet RawEndPoint pour une version IP et un protocole spécifiques.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Crée un objet TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Crée un objet TunEndPoint.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Crée un objet UDPEndPoint.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Préparez les ensembles de descripteurs de fichier pour select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.
SetPlatformData(void *aPlatformData)
void
Les données spécifiées de la plate-forme spécifique au client sont alors définies sur l'instance en vue de leur récupération ultérieure par la plate-forme cliente.
Shutdown(void)
Il s'agit du désinitialiseur explicite InetLayer. Il doit être appelé avant de supprimer une instance InetLayer instanciée.
SystemLayer(void) const

Fonctions statiques publiques

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

Types publics

@5

 @5

État actuel de l'objet InetLayer.

Propriétés
kState_Initialized

État initialisé.

kState_NotInitialized

État non initialisé.

kState_ShutdownInProgress

État dans lequel l'arrêt a été déclenché.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Attributs publics

État

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

État actuel de l'objet InetLayer.

[LECTURE SEULE] État actuel.

Attributs statiques publics

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Fonctions publiques

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Annulez toute requête DNS en attente (pour un rappel de finalisation de la mise en correspondance et l'état de l'application) qui peut être encore active.

Détails
Paramètres
[in] onComplete
Pointeur vers la fonction de rappel lorsqu'une requête DNS est terminée.
[in] appState
Pointeur vers un objet d'état d'application à transmettre à la fonction de rappel en tant qu'argument.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Permet d'obtenir l'identifiant d'interface pour l'adresse IP spécifiée.

Si l'identifiant d'interface ne peut pas être dérivé, il est défini sur INET_NULL_INTERFACEID.

Détails
Paramètres
[in] addr
Référence à l'objet IPAddress.
[out] intfId
Référence à l'objet InterfaceId.
Renvoie
INET_NO_ERROR de manière inconditionnelle.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Permet d'obtenir l'adresse IPv6 locale de la liaison pour une liaison ou une interface spécifiée.

Détails
Paramètres
[in] link
Interface pour laquelle l'adresse IPv6 locale de liaison est recherchée.
[out] llAddr
Adresse IPv6 locale de la liaison.
Valeurs renvoyées
INET_ERROR_NOT_IMPLEMENTED
Si IPv6 n'est pas accepté.
INET_ERROR_BAD_ARGS
Si l'adresse de liaison locale est NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Si aucune adresse n'est configurée pour le lien
INET_NO_ERROR
En cas de réussite.

GetPlatformData

void * GetPlatformData(
  void
)

Renvoie toutes les données de plate-forme spécifiques au client qui ont été attribuées à l'instance, si elles ont été définies précédemment.

Détails
Renvoie
Données de plate-forme spécifiques au client, si elles ont été définies au préalable sinon NULL.

HandleSelectResult

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

Gérez les E/S à partir d'un appel sélectionné.

Cette méthode enregistre l'événement d'E/S en attente dans chaque point de terminaison actif, puis appelle les fonctions de traitement des E/S correspondantes pour ces points de terminaison.

Détails
Paramètres
[in] selectRes
Valeur renvoyée par l'appel "select".
[in] readfds
Pointeur vers l'ensemble des descripteurs de fichiers lus.
[in] writefds
Pointeur vers l'ensemble des descripteurs de fichier en écriture.
[in] exceptfds
Pointeur vers l'ensemble des descripteurs de fichier comportant des erreurs.

InetLayer

 InetLayer(
  void
)

Il s'agit du constructeur par défaut de InetLayer.

Il effectue une initialisation de base des membres de données : Toutefois, étant donné que InetLayer suit un modèle de conception d'initialiseur explicite, la méthode InetLayer::Init doit être appelée correctement avant d'utiliser l'objet.

Init

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

Il s'agit de l'initialiseur explicite InetLayer.

Cette opération doit être appelée et terminée correctement avant que la classe InetLayer puisse être utilisée.

L'appelant peut fournir un argument de contexte facultatif qui sera renvoyé via n'importe quelle fonction de hook spécifique à la plate-forme. Pour les adaptations basées sur LwIP, il s'agit généralement d'un pointeur vers la file d'attente d'événements associée à l'instance InetLayer.

Les plates-formes peuvent choisir de déclarer INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS dans leur en-tête de configuration spécifique et d'activer les hooks Platform::InetLayer::WillInit et Platform::InetLayer::DidInit pour appliquer les personnalisations ou les extensions de données spécifiques à la plate-forme sur InetLayer.

Détails
Paramètres
[in] aSystemLayer
Une instance requise de la couche système Weave est déjà initialisée avec succès.
[in] aContext
Argument de contexte facultatif qui sera renvoyé à l'appelant via n'importe quelle fonction de hook spécifique à la plate-forme.
Valeurs renvoyées
INET_ERROR_INCORRECT_STATE
Si l'état de InetLayer est incorrect.
INET_ERROR_NO_MEMORY
Si InetLayer n'a plus de ressources pour cette requête de nouveau minuteur.
other
Erreurs spécifiques à la plate-forme indiquant la raison de l'échec de l'initialisation.
INET_NO_ERROR
En cas de réussite.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Vérifiez s'il existe une correspondance de préfixe entre l'adresse IPv6 spécifiée et l'une des adresses IPv6 configurées localement.

Détails
Paramètres
[in] addr
Adresse IPv6 dont la correspondance de préfixe doit être vérifiée.
Renvoie
"true" si une correspondance réussie est trouvée, sinon "false".

NewRawEndPoint

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

Crée un objet RawEndPoint pour une version IP et un protocole spécifiques.

Détails
Paramètres
[in] ipVer
IPv4 ou IPv6.
[in] ipProto
Un protocole dans la famille d'adresses IP (par exemple, ICMPv4 ou ICMPv6).
[in,out] retEndPoint
Pointeur vers un pointeur de l'objet RawEndPoint qui est un paramètre de retour à la fin de la création de l'objet. *retEndPoint est NULL en cas d'échec de la création.
Valeurs renvoyées
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerRawEndPoint est plein et qu'aucun point de terminaison ne peut être créé.
INET_NO_ERROR
En cas de réussite.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Crée un objet TCPEndPoint.

Détails
Paramètres
[in,out] retEndPoint
Pointeur vers un pointeur de l'objet TCPEndPoint qui est un paramètre de retour à la fin de la création de l'objet. *retEndPoint est NULL en cas d'échec de la création.
Valeurs renvoyées
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerTCPEndPoint est saturé et qu'aucun point de terminaison ne peut être créé.
INET_NO_ERROR
En cas de réussite.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Crée un objet TunEndPoint.

Détails
Paramètres
[in,out] retEndPoint
Pointeur vers un pointeur de l'objet TunEndPoint qui est un paramètre de retour à la fin de la création de l'objet. *retEndPoint est NULL en cas d'échec de la création.
Valeurs renvoyées
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerTunEndPoint est plein et qu'il n'est pas possible d'en créer d'autres.
INET_NO_ERROR
En cas de réussite.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Crée un objet UDPEndPoint.

Détails
Paramètres
[in,out] retEndPoint
Pointeur vers un pointeur de l'objet UDPEndPoint qui est un paramètre de retour à la fin de la création de l'objet. *retEndPoint est NULL en cas d'échec de la création.
Valeurs renvoyées
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerUDPEndPoint est plein et qu'aucun point de terminaison ne peut être créé.
INET_NO_ERROR
En cas de réussite.

PrepareSelect

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

Préparez les ensembles de descripteurs de fichier pour select().

Détails
Paramètres
[out] nfds
Plage de descripteurs de fichier dans l'ensemble de descripteurs de fichier.
[in] readfds
Pointeur vers l'ensemble de descripteurs de fichiers lisibles.
[in] writefds
Pointeur vers l'ensemble des descripteurs de fichier accessibles en écriture.
[in] exceptfds
Pointeur vers l'ensemble des descripteurs de fichier comportant des erreurs.
[in] sleepTimeTV
Pointeur vers une structure spécifiant la durée de mise en veille de la sélection

ResolveHostAddress

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

Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.

Détails
Paramètres
[in] hostName
Pointeur vers une chaîne C se terminant par une valeur NULL et non NULL représentant le nom d'hôte à interroger.
[in] hostNameLen
Longueur de chaîne du nom d'hôte.
[in] options
Valeur entière contrôlant la manière dont la résolution du nom d'hôte est effectuée.
                    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
Nombre maximal d'adresses à stocker dans la table DNS.
[in] addrArray
Pointeur vers le tableau DNS.
[in] onComplete
Pointeur vers la fonction de rappel lorsqu'une requête DNS est terminée.
[in] appState
Pointeur vers l'état de l'application à transmettre à onComplete lorsqu'une requête DNS est terminée.
Valeurs renvoyées
INET_NO_ERROR
si une requête DNS est correctement gérée.
INET_ERROR_NO_MEMORY
si le pool de résolveurs de couche Inet est saturé.
INET_ERROR_HOST_NAME_TOO_LONG
si le nom d'hôte demandé est trop long.
INET_ERROR_HOST_NOT_FOUND
si le nom d’hôte d’une demande n’a pas pu être résolu en adresse.
INET_ERROR_DNS_TRY_AGAIN
si un serveur de noms a renvoyé une indication d'échec temporaire ; réessayez plus tard.
INET_ERROR_DNS_NO_RECOVERY
si un serveur de noms a renvoyé une erreur irrécupérable.
INET_ERROR_NOT_IMPLEMENTED
si la résolution DNS n'est pas activée sur la plate-forme sous-jacente.
other
Erreur de réseau ou de système d'exploitation POSIX renvoyée par l'implémentation du résolveur DNS sous-jacent.

ResolveHostAddress

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

Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.

Détails
Paramètres
[in] hostName
Pointeur vers une chaîne C se terminant par une valeur NULL et non NULL représentant le nom d'hôte à interroger.
[in] hostNameLen
Longueur de chaîne du nom d'hôte.
[in] maxAddrs
Nombre maximal d'adresses à stocker dans la table DNS.
[in] addrArray
Pointeur vers le tableau DNS.
[in] onComplete
Pointeur vers la fonction de rappel lorsqu'une requête DNS est terminée.
[in] appState
Pointeur vers l'état de l'application à transmettre à onComplete lorsqu'une requête DNS est terminée.
Valeurs renvoyées
INET_NO_ERROR
si une requête DNS est correctement gérée.
INET_ERROR_NO_MEMORY
si le pool de résolveurs de couche Inet est saturé.
INET_ERROR_HOST_NAME_TOO_LONG
si le nom d'hôte demandé est trop long.
INET_ERROR_HOST_NOT_FOUND
si le nom d’hôte d’une demande n’a pas pu être résolu en adresse.
INET_ERROR_DNS_TRY_AGAIN
si un serveur de noms a renvoyé une indication d'échec temporaire ; réessayez plus tard.
INET_ERROR_DNS_NO_RECOVERY
si un serveur de noms a renvoyé une erreur irrécupérable.
INET_ERROR_NOT_IMPLEMENTED
si la résolution DNS n'est pas activée sur la plate-forme sous-jacente.
other
Erreur de réseau ou de système d'exploitation POSIX renvoyée par l'implémentation du résolveur DNS sous-jacent.

ResolveHostAddress

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

Effectuez une résolution d'adresse IP d'un nom d'hôte spécifié.

Détails
Paramètres
[in] hostName
Pointeur vers une chaîne C se terminant par une valeur NULL représentant le nom d'hôte à interroger.
[in] maxAddrs
Nombre maximal d'adresses à stocker dans la table DNS.
[in] addrArray
Pointeur vers le tableau DNS.
[in] onComplete
Pointeur vers la fonction de rappel lorsqu'une requête DNS est terminée.
[in] appState
Pointeur vers l'état de l'application à transmettre à onComplete lorsqu'une requête DNS est terminée.
Valeurs renvoyées
INET_NO_ERROR
si une requête DNS est correctement gérée.
INET_ERROR_NO_MEMORY
si le pool de résolveurs de couche Inet est saturé.
INET_ERROR_HOST_NAME_TOO_LONG
si le nom d'hôte demandé est trop long.
INET_ERROR_HOST_NOT_FOUND
si le nom d’hôte d’une demande n’a pas pu être résolu en adresse.
INET_ERROR_DNS_TRY_AGAIN
si un serveur de noms a renvoyé une indication d'échec temporaire ; réessayez plus tard.
INET_ERROR_DNS_NO_RECOVERY
si un serveur de noms a renvoyé une erreur irrécupérable.
INET_ERROR_NOT_IMPLEMENTED
si la résolution DNS n'est pas activée sur la plate-forme sous-jacente.
other
Erreur de réseau ou de système d'exploitation POSIX renvoyée par l'implémentation du résolveur DNS sous-jacent.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Les données spécifiées de la plate-forme spécifique au client sont alors définies sur l'instance en vue de leur récupération ultérieure par la plate-forme cliente.

Détails
Paramètres
[in] aPlatformData
Données de la plate-forme spécifique au client à définir.

Arrêt

INET_ERROR Shutdown(
  void
)

Il s'agit du désinitialiseur explicite InetLayer. Il doit être appelé avant de supprimer une instance InetLayer instanciée.

Les plates-formes peuvent choisir de déclarer INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS dans leur en-tête de configuration spécifique et d'activer les hooks Platform::InetLayer::WillShutdown et Platform::InetLayer::DidShutdown pour effectuer le nettoyage des personnalisations ou des extensions de données spécifiques à la plate-forme dans InetLayer.

Détails
Renvoie
INET_NO_ERROR en cas de réussite Sinon, une erreur spécifique indiquant la raison de l'échec de l'arrêt.

SystemLayer

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

Fonctions statiques publiques

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
)