nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Dadurch erhalten Sie für einen einzelnen Thread Zugriff auf Internetdienste, einschließlich Timer, DNS-Auflösung (Domain Name System), TCP-Netzwerktransport, UDP-Netzwerktransport und unformatierten Netzwerktransport.

Zusammenfassung

Bei BSD/POSIX-Sockets erfolgt die Benachrichtigung über die Ereignisbereitschaft über Dateideskriptoren und eine traditionelle Implementierung von Abfrage / Auswahl in der Plattformanpassung.

Für LwIP wird die Benachrichtigung zur Ereignisbereitschaft über Ereignisse / Nachrichten und plattform- und systemspezifische Hooks für das Ereignis-/Nachrichtensystem verarbeitet.

Konstruktoren und Zerstörer

InetLayer(void)
Dies ist der InetLayer-Standardkonstruktor.

Öffentliche Typen

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
Der aktuelle Status des InetLayer-Objekts.
DNSResolveCompleteFunct typedef.
DNSResolver::OnResolveCompleteFunct

Öffentliche Attribute

State
enum nl::Inet::InetLayer::@5
Der aktuelle Status des InetLayer-Objekts.

Öffentliche statische Attribute

sInetEventHandlerDelegate

Öffentliche Funktionen

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Stornieren Sie alle ausstehenden DNS-Abfragen (für einen übereinstimmenden Abschluss-Callback und einen Anwendungsstatus), die möglicherweise noch aktiv sind.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Ruft die Schnittstellenkennung für die angegebene IP-Adresse ab.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Hiermit wird die Link-Local-IPv6-Adresse für einen bestimmten Link oder eine angegebene Schnittstelle abgerufen.
GetPlatformData(void)
void *
Dadurch werden alle clientspezifischen Plattformdaten zurückgegeben, die der Instanz zugewiesen sind, sofern sie zuvor festgelegt wurden.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
E/A in einem Auswahlaufruf verarbeiten.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Dies ist der explizite InetLayer-Initialisierer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Prüfen Sie, ob eine Präfixübereinstimmung zwischen der angegebenen IPv6-Adresse und einer der lokal konfigurierten IPv6-Adressen besteht.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Erstellt ein neues RawEndPoint-Objekt für eine bestimmte IP-Version und ein bestimmtes Protokoll.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Erstellt ein neues TCPEndPoint-Objekt.
NewTunEndPoint(TunEndPoint **retEndPoint)
Erstellt ein neues TunEndPoint-Objekt.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Erstellt ein neues UDPEndPoint-Objekt.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Bereiten Sie die Gruppen von Dateideskriptoren für select() vor.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.
SetPlatformData(void *aPlatformData)
void
Dadurch werden die angegebenen clientspezifischen Plattformdaten für die Instanz festgelegt, damit sie später von der Clientplattform abgerufen werden können.
Shutdown(void)
Dies ist der explizite InetLayer-Deinitialisierer und sollte aufgerufen werden, bevor eine instanziierte InetLayer-Instanz entsorgt wird.
SystemLayer(void) const

Öffentliche statische Funktionen

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

Öffentliche Typen

@5

 @5

Der aktuelle Status des InetLayer-Objekts.

Attribute
kState_Initialized

Status „Initialisiert“.

kState_NotInitialized

Nicht initialisierter Status.

kState_ShutdownInProgress

Status, in dem das Herunterfahren ausgelöst wurde.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Öffentliche Attribute

Status

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

Der aktuelle Status des InetLayer-Objekts.

[READ-ONLY] Aktueller Status.

Öffentliche statische Attribute

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Öffentliche Funktionen

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Stornieren Sie alle ausstehenden DNS-Abfragen (für einen übereinstimmenden Abschluss-Callback und einen Anwendungsstatus), die möglicherweise noch aktiv sind.

Details
Parameter
[in] onComplete
Ein Zeiger auf die Callback-Funktion, wenn eine DNS-Anfrage abgeschlossen ist.
[in] appState
Ein Zeiger auf ein Anwendungsstatusobjekt, das als Argument an die Callback-Funktion übergeben wird.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Ruft die Schnittstellenkennung für die angegebene IP-Adresse ab.

Wenn die Schnittstellenkennung nicht abgeleitet werden kann, ist sie auf INET_NULL_INTERFACEID festgelegt.

Details
Parameter
[in] addr
Ein Verweis auf das IPAddress-Objekt.
[out] intfId
Ein Verweis auf das InterfaceId-Objekt.
Rückgabe
INET_NO_ERROR ohne Bedingungen.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Hiermit wird die Link-Local-IPv6-Adresse für einen bestimmten Link oder eine angegebene Schnittstelle abgerufen.

Details
Parameter
[in] link
Die Schnittstelle, für die die Link-Local-IPv6-Adresse gesucht wird.
[out] llAddr
Die Link-Local-IPv6-Adresse für die Verbindung.
Rückgabewerte
INET_ERROR_NOT_IMPLEMENTED
Wenn IPv6 nicht unterstützt wird.
INET_ERROR_BAD_ARGS
Wenn die Link-Local-Adresse NULL ist.
INET_ERROR_ADDRESS_NOT_FOUND
Für den Link ist keine Adresse konfiguriert.
INET_NO_ERROR
Bei Erfolg.

GetPlatformData

void * GetPlatformData(
  void
)

Dadurch werden alle clientspezifischen Plattformdaten zurückgegeben, die der Instanz zugewiesen sind, sofern sie zuvor festgelegt wurden.

Details
Rückgabe
Kundenspezifische Plattformdaten, falls bereits festgelegt andernfalls NULL.

HandleSelectResult

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

E/A in einem Auswahlaufruf verarbeiten.

Diese Methode registriert das ausstehende E/A-Ereignis an jedem aktiven Endpunkt und ruft dann die entsprechenden E/A-Verarbeitungsfunktionen für diese Endpunkte auf.

Details
Parameter
[in] selectRes
Der Rückgabewert des Auswahlaufrufs.
[in] readfds
Ein Zeiger auf die Gruppe von gelesenen Dateideskriptoren.
[in] writefds
Ein Zeiger auf die Gruppe von Schreibdeskriptoren.
[in] exceptfds
Ein Zeiger auf die Gruppe von Dateideskriptoren mit Fehlern.

InetLayer

 InetLayer(
  void
)

Dies ist der InetLayer-Standardkonstruktor.

Er führt einige grundlegende Datenmitglieder-Initialisierungen durch: Da InetLayer jedoch einem expliziten Initialisierungsdesignmuster folgt, muss die InetLayer::Init-Methode vor der Verwendung des Objekts erfolgreich aufgerufen werden.

Init

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

Dies ist der explizite InetLayer-Initialisierer.

Dies muss aufgerufen und abgeschlossen sein, bevor InetLayer verwendet werden kann.

Der Aufrufer kann ein optionales Kontextargument angeben, das über beliebige plattformspezifische Hook-Funktionen zurückgegeben wird. Bei LwIP-basierten Anpassungen ist dies in der Regel ein Zeiger auf die Ereigniswarteschlange, die der InetLayer-Instanz zugeordnet ist.

Plattformen können INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS in ihrem plattformspezifischen Konfigurationsheader bestätigen und die Hooks „Platform::InetLayer::WillInit“ und „Platform::InetLayer::DidInit“ aktivieren, um plattformspezifische Anpassungen oder Datenerweiterungen an InetLayer vorzunehmen.

Details
Parameter
[in] aSystemLayer
Eine erforderliche Instanz der Weave-Systemebene wurde bereits initialisiert.
[in] aContext
Ein optionales Kontextargument, das über plattformspezifische Hook-Funktionen an den Aufrufer zurückgegeben wird.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
InetLayer befindet sich in einem falschen Zustand.
INET_ERROR_NO_MEMORY
Wenn InetLayer für diese Anfrage eines neuen Timers keine Ressourcen mehr hat.
other
Plattformspezifische Fehler, die den Grund für das Fehlschlagen der Initialisierung angeben.
INET_NO_ERROR
Bei Erfolg.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Prüfen Sie, ob eine Präfixübereinstimmung zwischen der angegebenen IPv6-Adresse und einer der lokal konfigurierten IPv6-Adressen besteht.

Details
Parameter
[in] addr
Die IPv6-Adresse, die auf Präfixübereinstimmung geprüft werden soll.
Rückgabe
„true“, wenn eine Übereinstimmung gefunden wird, andernfalls „false“.

NewRawEndPoint

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

Erstellt ein neues RawEndPoint-Objekt für eine bestimmte IP-Version und ein bestimmtes Protokoll.

Details
Parameter
[in] ipVer
IPv4 oder IPv6.
[in] ipProto
Ein Protokoll innerhalb der IP-Familie (z.B. ICMPv4 oder ICMPv6).
[in,out] retEndPoint
Ein Zeiger auf einen Zeiger des RawEndPoint-Objekts, das nach Abschluss der Objekterstellung ein Rückgabeparameter ist. *retEndPoint ist NULL, wenn die Erstellung fehlschlägt.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
Wenn das InetLayer-Objekt nicht initialisiert ist.
INET_ERROR_NO_ENDPOINTS
Wenn der Pool InetLayerRawEndPoint voll ist und keine neuen Endpunkte erstellt werden können.
INET_NO_ERROR
Bei Erfolg.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Erstellt ein neues TCPEndPoint-Objekt.

Details
Parameter
[in,out] retEndPoint
Ein Zeiger auf einen Zeiger des TCPEndPoint-Objekts, das nach Abschluss der Objekterstellung ein Rückgabeparameter ist. *retEndPoint ist NULL, wenn die Erstellung fehlschlägt.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
Wenn das InetLayer-Objekt nicht initialisiert ist.
INET_ERROR_NO_ENDPOINTS
Wenn der Pool InetLayerTCPEndPoint voll ist und keine neuen Endpunkte erstellt werden können.
INET_NO_ERROR
Bei Erfolg.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Erstellt ein neues TunEndPoint-Objekt.

Details
Parameter
[in,out] retEndPoint
Ein Zeiger auf einen Zeiger des TunEndPoint-Objekts, das nach Abschluss der Objekterstellung ein Rückgabeparameter ist. *retEndPoint ist NULL, wenn die Erstellung fehlschlägt.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
Wenn das InetLayer-Objekt nicht initialisiert ist.
INET_ERROR_NO_ENDPOINTS
Wenn der Pool InetLayerTunEndPoint voll ist und keine neuen erstellt werden können.
INET_NO_ERROR
Bei Erfolg.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Erstellt ein neues UDPEndPoint-Objekt.

Details
Parameter
[in,out] retEndPoint
Ein Zeiger auf einen Zeiger des UDPEndPoint-Objekts, das nach Abschluss der Objekterstellung ein Rückgabeparameter ist. *retEndPoint ist NULL, wenn die Erstellung fehlschlägt.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
Wenn das InetLayer-Objekt nicht initialisiert ist.
INET_ERROR_NO_ENDPOINTS
Wenn der Pool InetLayerUDPEndPoint voll ist und keine neuen Endpunkte erstellt werden können.
INET_NO_ERROR
Bei Erfolg.

PrepareSelect

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

Bereiten Sie die Gruppen von Dateideskriptoren für select() vor.

Details
Parameter
[out] nfds
Der Bereich der Dateideskriptoren im Dateideskriptorsatz.
[in] readfds
Ein Zeiger auf die Gruppe lesbarer Dateideskriptoren.
[in] writefds
Ein Zeiger auf den Satz beschreibbarer Dateideskriptoren.
[in] exceptfds
Ein Zeiger auf die Gruppe von Dateideskriptoren mit Fehlern.
[in] sleepTimeTV
Ein Zeiger auf eine Struktur, die angibt, wie lange die Auswahl schlafen soll

ResolveHostAddress

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

Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.

Details
Parameter
[in] hostName
Ein Zeiger auf einen nicht NULL-terminierten C-String, der den abzufragenden Hostnamen darstellt.
[in] hostNameLen
Die Stringlänge des Hostnamens.
[in] options
Ein Ganzzahlwert, der die Auflösung des Hostnamens steuert.
                    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
Die maximale Anzahl von Adressen, die in der DNS-Tabelle gespeichert werden sollen.
[in] addrArray
Ein Zeiger auf die DNS-Tabelle.
[in] onComplete
Ein Zeiger auf die Callback-Funktion, wenn eine DNS-Anfrage abgeschlossen ist.
[in] appState
Ein Zeiger auf den Anwendungsstatus, der an onComplete übergeben wird, wenn eine DNS-Anfrage abgeschlossen ist.
Rückgabewerte
INET_NO_ERROR
wenn eine DNS-Anfrage erfolgreich verarbeitet wird.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Hostname der Anfrage konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine temporäre Fehleranzeige zurückgegeben. versuchen Sie es später noch einmal.
INET_ERROR_DNS_NO_RECOVERY
Ein Nameserver hat einen nicht behebbaren Fehler zurückgegeben.
INET_ERROR_NOT_IMPLEMENTED
wenn die DNS-Auflösung auf der zugrunde liegenden Plattform nicht aktiviert ist.
other
Von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegebener POSIX-Netzwerk- oder Betriebssystemfehler.

ResolveHostAddress

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

Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.

Details
Parameter
[in] hostName
Ein Zeiger auf einen nicht NULL-terminierten C-String, der den abzufragenden Hostnamen darstellt.
[in] hostNameLen
Die Stringlänge des Hostnamens.
[in] maxAddrs
Die maximale Anzahl von Adressen, die in der DNS-Tabelle gespeichert werden sollen.
[in] addrArray
Ein Zeiger auf die DNS-Tabelle.
[in] onComplete
Ein Zeiger auf die Callback-Funktion, wenn eine DNS-Anfrage abgeschlossen ist.
[in] appState
Ein Zeiger auf den Anwendungsstatus, der an onComplete übergeben wird, wenn eine DNS-Anfrage abgeschlossen ist.
Rückgabewerte
INET_NO_ERROR
wenn eine DNS-Anfrage erfolgreich verarbeitet wird.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Hostname der Anfrage konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine temporäre Fehleranzeige zurückgegeben. versuchen Sie es später noch einmal.
INET_ERROR_DNS_NO_RECOVERY
Ein Nameserver hat einen nicht behebbaren Fehler zurückgegeben.
INET_ERROR_NOT_IMPLEMENTED
wenn die DNS-Auflösung auf der zugrunde liegenden Plattform nicht aktiviert ist.
other
Von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegebener POSIX-Netzwerk- oder Betriebssystemfehler.

ResolveHostAddress

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

Führt eine Auflösung der IP-Adresse eines angegebenen Hostnamens durch.

Details
Parameter
[in] hostName
Ein Zeiger auf einen mit NULL beendeten C-String, der den abzufragenden Hostnamen darstellt.
[in] maxAddrs
Die maximale Anzahl von Adressen, die in der DNS-Tabelle gespeichert werden sollen.
[in] addrArray
Ein Zeiger auf die DNS-Tabelle.
[in] onComplete
Ein Zeiger auf die Callback-Funktion, wenn eine DNS-Anfrage abgeschlossen ist.
[in] appState
Ein Zeiger auf den Anwendungsstatus, der an onComplete übergeben wird, wenn eine DNS-Anfrage abgeschlossen ist.
Rückgabewerte
INET_NO_ERROR
wenn eine DNS-Anfrage erfolgreich verarbeitet wird.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Hostname der Anfrage konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine temporäre Fehleranzeige zurückgegeben. versuchen Sie es später noch einmal.
INET_ERROR_DNS_NO_RECOVERY
Ein Nameserver hat einen nicht behebbaren Fehler zurückgegeben.
INET_ERROR_NOT_IMPLEMENTED
wenn die DNS-Auflösung auf der zugrunde liegenden Plattform nicht aktiviert ist.
other
Von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegebener POSIX-Netzwerk- oder Betriebssystemfehler.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Dadurch werden die angegebenen clientspezifischen Plattformdaten für die Instanz festgelegt, damit sie später von der Clientplattform abgerufen werden können.

Details
Parameter
[in] aPlatformData
Die festzulegenden kundenspezifischen Plattformdaten.

Herunterfahren

INET_ERROR Shutdown(
  void
)

Dies ist der explizite InetLayer-Deinitialisierer und sollte aufgerufen werden, bevor eine instanziierte InetLayer-Instanz entsorgt wird.

Plattformen können INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS in ihrem plattformspezifischen Konfigurationsheader bestätigen und die Platform::InetLayer::WillShutdown- und Platform::InetLayer::DidShutdown-Hooks aktivieren, um plattformspezifische Anpassungen oder Datenerweiterungen auf InetLayer zu bereinigen.

Details
Rückgabe
INET_NO_ERROR bei Erfolg; Andernfalls ein bestimmter Fehler, der den Grund für das Fehlschlagen des Herunterfahrens angibt.

SystemLayer

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

Öffentliche statische Funktionen

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
)