nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

Objekte dieser Klasse stellen nicht instanziierbare IP-Protokollendpunkte dar.

Zusammenfassung

Übernahme

Übernimmt von: nl::Inet::EndPointBasis
Direkte bekannte Unterklassen:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

Öffentliche Typen

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
enum
Grundlegender dynamischer Status des zugrunde liegenden Endpunkts.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
Übertragungsoption-Flags für die Methode SendMsg.
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
Typ der Funktion zur Verarbeitung von Nachrichtentextempfangsereignissen.
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
Art der Funktion zur Verarbeitung von Empfangsfehlerereignis-Ereignissen.

Öffentliche Attribute

OnMessageReceived
Der Funktionsdeleg für die Verarbeitung von Nachrichtenempfangsereignissen des Endpunkts.
OnReceiveError
Der Funktionsdeleg für die Verarbeitung von Fehlerereignissen beim Empfang des Endpunkts.
mState
enum nl::Inet::IPEndPointBasis::@8
Grundlegender dynamischer Status des zugrunde liegenden Endpunkts.

Geschützte Attribute

mBoundIntfId
InterfaceId

Öffentliche Funktionen

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Treten Sie einer IP-Multicast-Gruppe bei.
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Verlassen Sie eine IP-Multicast-Gruppe.
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
Legen Sie fest, ob IP-Multicast-Traffic in einer Schleife zurückgeführt werden soll.

Geschützte Funktionen

Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO(uint16_t aPort)
void
Init(InetLayer *aInetLayer)
void
PrepareIO(void)
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

Öffentliche statische Funktionen

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

Geschützte statische Funktionen

GetPacketInfo(Weave::System::PacketBuffer *buf)
Rufen Sie Informationen zur Quelle und zur Zieladressierung der LwIP-IP-Ebene ab.

Öffentliche Typen

@8

 @8

Grundlegender dynamischer Status des zugrunde liegenden Endpunkts.

Objekte werden im Status „Bereit“ initialisiert. Nach der Bindung an eine lokale Schnittstellenadresse werden sie in den Status „gebunden“ versetzt. Anschließend wechseln sie in den Status „Warten“, wenn Fortsetzungen für die Verarbeitung von Ereignissen für den Empfang von ICMP-Nachrichten registriert sind.

Hinweis:Die Statusaufzählung kBasisState_Closed wird aus Gründen der Kompatibilität mit Binärprogrammen kState_Ready zugeordnet. Mit der vorhandenen Datei kState_Closed lässt sich separat zwischen „noch nicht geöffnet“ und „zuvor geöffnet und jetzt geschlossen“ unterscheiden, die zuvor in den Status kState_Ready und kState_Closed vorhanden waren.

Attribute
kState_Bound

Endpunktgebunden, wird aber nicht überwacht.

kState_Closed

Endpunkt geschlossen, bereit für die Veröffentlichung.

kState_Listening

Endpunkt empfängt Datagramme.

kState_Ready

Endpunkt initialisiert, aber nicht geöffnet.

@9

 @9

Übertragungsoption-Flags für die Methode SendMsg.

Attribute
kSendFlag_RetainBuffer

Stellen Sie die Nachricht nicht destruktiv direkt in die Warteschlange.

Eine Kopie in die Warteschlange stellen.

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

Typ der Funktion zur Verarbeitung von Nachrichtentextempfangsereignissen.

Stellen Sie dem Bevollmächtigten von OnMessageReceived eine Funktion dieses Typs zur Verfügung, um Nachrichtentextempfangsereignisse in endPoint zu verarbeiten, wobei msg der Nachrichtentext ist, der vom Absender auf senderAddr empfangen wurde.

Details
Parameter
[in] endPoint
Der mit dem Ereignis verknüpfte Endpunkt.
[in] msg
Der empfangene Nachrichtentext.
[in] senderAddr
Die IP-Adresse des Absenders.

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

Art der Funktion zur Verarbeitung von Empfangsfehlerereignis-Ereignissen.

Stellen Sie dem delegierten Mitglied von OnReceiveError eine Funktion dieses Typs zur Verfügung, damit Empfangsfehlerereignisse auf endPoint verarbeitet werden können. Das Argument err liefert spezifische Details zum Fehlertyp.

Details
Parameter
[in] endPoint
Der mit dem Ereignis verknüpfte Endpunkt.
[in] err
Die Ursache des Fehlers.

Öffentliche Attribute

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

Der Funktionsdeleg für die Verarbeitung von Nachrichtenempfangsereignissen des Endpunkts.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Der Funktionsdeleg für die Verarbeitung von Fehlerereignissen beim Empfang des Endpunkts.

mState

enum nl::Inet::IPEndPointBasis::@8 mState

Grundlegender dynamischer Status des zugrunde liegenden Endpunkts.

Objekte werden im Status „Bereit“ initialisiert. Nach der Bindung an eine lokale Schnittstellenadresse werden sie in den Status „gebunden“ versetzt. Anschließend wechseln sie in den Status „Warten“, wenn Fortsetzungen für die Verarbeitung von Ereignissen für den Empfang von ICMP-Nachrichten registriert sind.

Hinweis:Die Statusaufzählung kBasisState_Closed wird aus Gründen der Kompatibilität mit Binärprogrammen kState_Ready zugeordnet. Mit der vorhandenen Datei kState_Closed lässt sich separat zwischen „noch nicht geöffnet“ und „zuvor geöffnet und jetzt geschlossen“ unterscheiden, die zuvor in den Status kState_Ready und kState_Closed vorhanden waren.

Geschützte Attribute

mBoundIntfId

InterfaceId mBoundIntfId

Öffentliche Funktionen

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Treten Sie einer IP-Multicast-Gruppe bei.

Verbinden Sie den Endpunkt mit der bereitgestellten Multicast-Gruppe auf der angegebenen Schnittstelle.

Details
Parameter
[in] aInterfaceId
Die Anzeige der Netzwerkschnittstelle, die der Multicast-Gruppe hinzugefügt werden soll
[in] aAddress
der Multicast-Gruppe, der die Schnittstelle
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Gruppe entfernt
INET_ERROR_UNKNOWN_INTERFACE
Unbekannte Netzwerkschnittstelle, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress ist nicht kIPAddressType_IPv4, kIPAddressType_IPv6 oder ist kein Multicast
other
ein anderer System- oder Plattformfehler

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Verlassen Sie eine IP-Multicast-Gruppe.

Entfernen Sie den Endpunkt aus der angegebenen Multicast-Gruppe auf der angegebenen Schnittstelle.

Details
Parameter
[in] aInterfaceId
Die Anzeige der Netzwerkschnittstelle, die aus der Multicast-Gruppe entfernt werden soll
[in] aAddress
der Multicast-Gruppe, aus der die Schnittstelle entfernt wird
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Gruppe entfernt
INET_ERROR_UNKNOWN_INTERFACE
Unbekannte Netzwerkschnittstelle, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress ist nicht kIPAddressType_IPv4, kIPAddressType_IPv6 oder ist kein Multicast
other
ein anderer System- oder Plattformfehler

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Legen Sie fest, ob IP-Multicast-Traffic in einer Schleife zurückgeführt werden soll.

Legen Sie fest, ob IP-Multicast-Traffic an diesen Endpunkt zurückgeführt werden soll.

Details
Parameter
[in] aIPVersion
[in] aLoop
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Loopback-Verhalten festgelegt
other
ein anderer System- oder Plattformfehler

Geschützte Funktionen

Binden

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindInterface

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

HandleDataReceived

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

Init

void Init(
  InetLayer *aInetLayer
)

PrepareIO

SocketEvents PrepareIO(
  void
)

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

Öffentliche statische Funktionen

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

Geschützte statische Funktionen

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

Rufen Sie Informationen zur Quelle und zur Zieladressierung der LwIP-IP-Ebene ab.

Bei Verwendung von LwIP sind Informationen über das Paket im reservierten Bereich vor dem Beginn der Daten im Paketzwischenspeicher „verborgen“. Dies ist erforderlich, da die Ereignisse der Systemebene nur zwei Argumente haben, die in diesem Fall verwendet werden, um den Zeiger zum Endpunkt und den Zeiger an den Puffer zu übergeben.

Details
Parameter
[in] aBuffer
den Paketpuffer mit der IP-Nachricht
Rückgabe
Ein Zeiger auf die Adressinformationen bei Erfolg. Andernfalls NULL, wenn im Paket nicht genügend Speicherplatz für die Adressinformationen vorhanden ist.

In den meisten Fällen funktioniert dieser Trick, Informationen vor den Daten zu speichern, da der erste Puffer in einer LwIP-IP-Nachricht den Speicherplatz enthält, der für die Ethernet/IP/UDP-Header verwendet wurde. Angesichts der aktuellen Größe der IPPacketInfo-Struktur (40 Byte) ist es möglich, dass nicht genügend Platz vorhanden ist, um die Struktur zusammen mit der Nutzlast in einem einzelnen Paketpuffer zu speichern. In der Praxis sollte dies nur bei extrem großen IPv4-Paketen passieren, die ohne Ethernet-Header eingehen.