nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Elle 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 de préparation aux événements est gérée via des descripteurs de fichier et une implémentation classique de sondage / sélection sur l'adaptation de la plate-forme.

Pour LwIP, la notification de préparation d'é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 InetLayer.

Types publics

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
É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 et un état de l'application correspondants) qui sont encore actives.
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 de liaison locale pour une association ou une interface spécifiée.
GetPlatformData(void)
void *
Cette commande 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érer les E/S depuis 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 et un protocole IP 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 à utiliser pour select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Permet d'effectuer 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)
Permet d'effectuer 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)
Permet d'effectuer 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 ainsi définies sur l'instance en vue d'une récupération ultérieure par la plate-forme cliente.
Shutdown(void)
Il s'agit du désinitialiseur explicite InetLayer qui doit être appelé avant la suppression d'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 et un état de l'application correspondants) qui sont encore actives.

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 de l'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 de liaison locale pour une association ou une interface spécifiée.

Détails
Paramètres
[in] link
Interface pour laquelle l'adresse IPv6 de liaison locale est recherchée.
[out] llAddr
Adresse IPv6 locale de la liaison.
Valeurs de retour
INET_ERROR_NOT_IMPLEMENTED
Si IPv6 n'est pas pris en charge.
INET_ERROR_BAD_ARGS
Si l'adresse du lien local est NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Si aucune adresse n'est configurée pour le lien.
INET_NO_ERROR
Pour la réussite.

GetPlatformData

void * GetPlatformData(
  void
)

Cette commande 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 précédemment ; sinon, valeur NULL.

HandleSelectResult

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

Gérer les E/S depuis 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 fichier de lecture.
[in] writefds
Pointeur vers l'ensemble des descripteurs de fichier d'é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 InetLayer.

Il effectue une initialisation des membres de données de base. Toutefois, comme InetLayer suit un schéma 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 méthode doit être appelée et effectuée correctement avant de pouvoir utiliser la couche InetLayer.

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 d'affirmer INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS dans leur en-tête de configuration spécifique et d'activer Platform::InetLayer::WillInit et Platform::InetLayer::DidInit hooks pour appliquer des personnalisations spécifiques à la plate-forme ou des extensions de données à InetLayer.

Détails
Paramètres
[in] aSystemLayer
Une instance requise de la couche système Weave a déjà été 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 de retour
INET_ERROR_INCORRECT_STATE
Si l'état InetLayer est incorrect.
INET_ERROR_NO_MEMORY
Si l'élément InetLayer est à court de ressources pour cette requête de minuteur,
other
Erreurs spécifiques à la plate-forme indiquant la raison de l'échec de l'initialisation.
INET_NO_ERROR
Pour la 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 pour laquelle vérifier la correspondance de préfixe.
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 et un protocole IP spécifiques.

Détails
Paramètres
[in] ipVer
IPv4 ou IPv6.
[in] ipProto
Un protocole au sein de la famille IP (par exemple, ICMPv4 ou ICMPv6).
[in,out] retEndPoint
Pointeur vers un pointeur de l'objet RawEndPoint qui est un paramètre de retour une fois la création de l'objet terminée. *retEndPoint est nul en cas d'échec de la création.
Valeurs de retour
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerRawEndPoint est saturé et qu'aucun nouveau point de terminaison ne peut être créé.
INET_NO_ERROR
Pour la 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 une fois la création de l'objet terminée. *retEndPoint est nul en cas d'échec de la création.
Valeurs de retour
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
Pour la 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 une fois la création de l'objet terminée. *retEndPoint est nul en cas d'échec de la création.
Valeurs de retour
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerTunEndPoint est saturé, et qu'il n'est pas possible d'en créer un autre
INET_NO_ERROR
Pour la 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 une fois la création de l'objet terminée. *retEndPoint est nul en cas d'échec de la création.
Valeurs de retour
INET_ERROR_INCORRECT_STATE
Si l'objet InetLayer n'est pas initialisé.
INET_ERROR_NO_ENDPOINTS
Si le pool InetLayerUDPEndPoint est saturé et qu'aucun point de terminaison ne peut être créé.
INET_NO_ERROR
Pour la 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 à utiliser 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 fichier 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
)

Permet d'effectuer 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 non terminée par une valeur NULL représentant le nom d'hôte à interroger.
[in] hostNameLen
Longueur de la chaîne du nom d'hôte.
[in] options
Valeur entière contrôlant la façon 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
Un pointeur vers la table 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 de retour
INET_NO_ERROR
si une requête DNS est gérée avec succès.
INET_ERROR_NO_MEMORY
si le pool de résolveur 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 de la requête 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 renvoie une erreur non ré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 d'OS 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
)

Permet d'effectuer 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 non terminée par une valeur NULL représentant le nom d'hôte à interroger.
[in] hostNameLen
Longueur de la chaîne du nom d'hôte.
[in] maxAddrs
Nombre maximal d'adresses à stocker dans la table DNS.
[in] addrArray
Un pointeur vers la table 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 de retour
INET_NO_ERROR
si une requête DNS est gérée avec succès.
INET_ERROR_NO_MEMORY
si le pool de résolveur 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 de la requête 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 renvoie une erreur non ré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 d'OS 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
)

Permet d'effectuer 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 terminée 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
Un pointeur vers la table 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 de retour
INET_NO_ERROR
si une requête DNS est gérée avec succès.
INET_ERROR_NO_MEMORY
si le pool de résolveur 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 de la requête 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 renvoie une erreur non ré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 d'OS 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 ainsi définies sur l'instance en vue d'une 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 qui doit être appelé avant la suppression d'une instance InetLayer instanciée.

Les plates-formes peuvent choisir d'affirmer 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 nettoyer les personnalisations spécifiques à la plate-forme ou les extensions de données dans InetLayer.

Détails
Renvoie
INET_NO_ERROR en cas de réussite ; sinon, 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
)