nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

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

Zusammenfassung

Bei BSD-/POSIX-Sockets erfolgt die Ereignisbereitschaftsbenachrichtigung über Dateideskriptoren und eine herkömmliche Abfrage / Auswahl-Implementierung in der Plattformanpassung.

Bei LwIP wird die Ereignisbereitschaftsbenachrichtigung über Ereignisse / Nachrichten sowie 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 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)
Rufen Sie die Link-Local-IPv6-Adresse für einen bestimmten Link oder eine bestimmte Schnittstelle ab.
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
Verarbeiten Sie E/A über einen ausgewählten Aufruf.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Dies ist der explizite InetLayer-Initialisierer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Prüfen Sie, ob es eine Präfixübereinstimmung zwischen der angegebenen IPv6-Adresse und einer der lokal konfigurierten IPv6-Adressen gibt.
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 Dateideskriptoren vor, mit denen select() arbeiten soll.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine IP-Adressauflösung eines angegebenen Hostnamens durch.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine IP-Adressauflösung eines angegebenen Hostnamens durch.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Führt eine IP-Adressauflösung 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 vor der Entsorgung einer instanziierten InetLayer-Instanz aufgerufen werden.
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 initialisiert.

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 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, wird 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 nicht an.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Rufen Sie die Link-Local-IPv6-Adresse für einen bestimmten Link oder eine bestimmte Schnittstelle ab.

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
Clientspezifische Plattformdaten, falls zuvor festgelegt wurden; andernfalls NULL.

HandleSelectResult

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

Verarbeiten Sie E/A über einen ausgewählten Aufruf.

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

Details
Parameter
[in] selectRes
Der Rückgabewert des select-Aufrufs.
[in] readfds
Ein Zeiger auf die Gruppe von Lesedateideskriptoren.
[in] writefds
Ein Zeiger auf die Gruppe von Dateideskriptoren zum Schreiben.
[in] exceptfds
Ein Zeiger auf die Gruppe von Dateideskriptoren mit Fehlern.

InetLayer

 InetLayer(
  void
)

Dies ist der InetLayer-Standardkonstruktor.

Sie führt einige grundlegende Initialisierungen der Datenelemente durch. Da InetLayer jedoch einem expliziten Initialisierungsmuster folgt, muss die Methode InetLayer::Init 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 erfolgreich abgeschlossen werden, bevor InetLayer verwendet werden kann.

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

Plattformen können INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS in ihrem plattformspezifischen Konfigurationsheader festlegen und die Hooks „Platform::InetLayer::WillInit“ und „Platform::InetLayer::DidInit“ aktivieren, um plattformspezifische Anpassungen oder Datenerweiterungen für InetLayer zu erzielen.

Details
Parameter
[in] aSystemLayer
Eine erforderliche Instanz der Weave System Layer wurde bereits erfolgreich initialisiert.
[in] aContext
Ein optionales Kontextargument, das über plattformspezifische Hook-Funktionen an den Aufrufer zurückgegeben wird.
Rückgabewerte
INET_ERROR_INCORRECT_STATE
Wenn InetLayer einen falschen Status hat.
INET_ERROR_NO_MEMORY
Wenn InetLayer bei dieser Anfrage für einen neuen Timer keine Ressourcen mehr zur Verfügung steht.
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 es eine Präfixübereinstimmung zwischen der angegebenen IPv6-Adresse und einer der lokal konfigurierten IPv6-Adressen gibt.

Details
Parameter
[in] addr
Die IPv6-Adresse, die auf die 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, der 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
Der Pool InetLayerRawEndPoint ist voll und es können keine neuen Endpunkte erstellt werden.
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, der 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
Der Pool InetLayerTCPEndPoint ist voll und es können keine neuen Endpunkte erstellt werden.
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, der 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
Der InetLayerTunEndPoint-Pool ist voll und es können keine neuen erstellt werden.
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, der 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
Der InetLayerUDPEndPoint-Pool ist voll und es können keine neuen Endpunkte erstellt werden.
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 Dateideskriptoren vor, mit denen select() arbeiten soll.

Details
Parameter
[out] nfds
Der Bereich der Dateideskriptoren im Dateideskriptor-Satz.
[in] readfds
Ein Zeiger auf die Gruppe lesbarer Dateideskriptoren.
[in] writefds
Ein Zeiger auf die Gruppe von beschreibbaren 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 inaktiv sein 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 IP-Adressauflösung 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 ganzzahliger Wert, der steuert, wie die Auflösung des Hostnamens durchgeführt wird.
                    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 bearbeitet wurde.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver-Pool voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Anforderungs-Hostname konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine vorübergehende 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
Die DNS-Auflösung ist auf der zugrunde liegenden Plattform nicht aktiviert.
other
POSIX-Netzwerk- oder Betriebssystemfehler, der von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegeben wird.

ResolveHostAddress

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

Führt eine IP-Adressauflösung 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 bearbeitet wurde.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver-Pool voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Anforderungs-Hostname konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine vorübergehende 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
Die DNS-Auflösung ist auf der zugrunde liegenden Plattform nicht aktiviert.
other
POSIX-Netzwerk- oder Betriebssystemfehler, der von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegeben wird.

ResolveHostAddress

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

Führt eine IP-Adressauflösung eines angegebenen Hostnamens durch.

Details
Parameter
[in] hostName
Ein Zeiger auf einen NULL-terminierten 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 bearbeitet wurde.
INET_ERROR_NO_MEMORY
wenn der Inet-Layer-Resolver-Pool voll ist.
INET_ERROR_HOST_NAME_TOO_LONG
Ein angeforderter Hostname ist zu lang.
INET_ERROR_HOST_NOT_FOUND
Ein Anforderungs-Hostname konnte nicht in eine Adresse aufgelöst werden.
INET_ERROR_DNS_TRY_AGAIN
Ein Nameserver hat eine vorübergehende 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
Die DNS-Auflösung ist auf der zugrunde liegenden Plattform nicht aktiviert.
other
POSIX-Netzwerk- oder Betriebssystemfehler, der von der zugrunde liegenden DNS-Resolver-Implementierung zurückgegeben wird.

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 vor der Entsorgung einer instanziierten InetLayer-Instanz aufgerufen werden.

Plattformen können INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS in ihrem plattformspezifischen Konfigurationsheader festlegen und die Hooks „Platform::InetLayer::WillHerunterfahren“ und „Platform::InetLayer::DidHerunterfahren“ aktivieren, um plattformspezifische Anpassungen oder Datenerweiterungen für InetLayer zu bereinigen.

Details
Rückgabe
INET_NO_ERROR bei Erfolg, andernfalls ein bestimmter Fehler, der die Ursache für das fehlgeschlagene Herunterfahren 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
)