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 abgeleitete Klassen:
  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 Zustand des zugrunde liegenden Endpunkts.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
Options-Flags für die Methode SendMsg übertragen.
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(*
Typ der Verarbeitungsfunktion für Empfangsfehlerereignisse.

Öffentliche Attribute

OnMessageReceived
Delegat der Funktion zur Verarbeitung von Nachrichtenempfangsereignissen des Endpunkts.
OnReceiveError
Delegierter der Funktion für die Verarbeitung von Fehlern im Empfangsfehler des Endpunkts.
mState
enum nl::Inet::IPEndPointBasis::@8
Grundlegender dynamischer Zustand 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 zurückgeleitet 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 Quell- und Zieladressierung der LwIP-IP-Ebene ab.

Öffentliche Typen

8

 @8

Grundlegender dynamischer Zustand des zugrunde liegenden Endpunkts.

Objekte werden im Status „ready“ (bereit) initialisiert. weiter zur "Grenze" nach der Bindung an eine lokale Schnittstellenadresse, und fahren Sie dann mit dem wenn Fortsetzungen für die Verarbeitung von Ereignissen zum Empfang von ICMP-Nachrichten registriert sind.

Hinweis:Die Aufzählung kBasisState_Closed ist aus Gründen der Kompatibilität mit Binärprogrammen kState_Ready zugeordnet. Die vorhandene kState_Closed existiert, um die Unterscheidung zwischen „Noch nicht geöffnet“ separat zu erkennen und „zuvor geöffnet jetzt geschlossen“ die zuvor in den Zuständen kState_Ready und kState_Closed vorhanden waren.

Attribute
kState_Bound

Endpunkt gebunden, aber hört nicht zu.

kState_Closed

Endpunkt geschlossen, bereit für Release.

kState_Listening

Endpunkt, der Datagramme empfängt.

kState_Ready

Endpunkt initialisiert, aber nicht geöffnet.

@9

 @9

Options-Flags für die Methode SendMsg übertragen.

Attribute
kSendFlag_RetainBuffer

Die Nachricht nicht direkt in die Warteschlange stellen.

Stellen Sie eine Kopie in die Warteschlange.

OnMessageReceivedFunct

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

Typ der Funktion zur Verarbeitung von Nachrichtentextempfangsereignissen.

Stellen Sie dem delegierten Mitglied OnMessageReceived eine Funktion dieses Typs zur Verfügung, um Empfangsereignisse für Nachrichten in endPoint zu verarbeiten, wobei msg der vom Absender um senderAddr empfangene Nachrichtentext ist.

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)

Typ der Verarbeitungsfunktion für Empfangsfehlerereignisse.

Stellen Sie dem delegierten OnReceiveError-Mitglied eine Funktion dieses Typs zur Verfügung, um Empfangsfehlerereignisse in endPoint zu verarbeiten. Das Argument err liefert bestimmte Details zum Fehlertyp.

Details
Parameter
[in] endPoint
Der mit dem Ereignis verknüpfte Endpunkt.
[in] err
Der Grund für den Fehler.

Öffentliche Attribute

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

Delegat der Funktion zur Verarbeitung von Nachrichtenempfangsereignissen des Endpunkts.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Delegierter der Funktion für die Verarbeitung von Fehlern im Empfangsfehler des Endpunkts.

mState

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

Grundlegender dynamischer Zustand des zugrunde liegenden Endpunkts.

Objekte werden im Status „ready“ (bereit) initialisiert. weiter zur "Grenze" nach der Bindung an eine lokale Schnittstellenadresse, und fahren Sie dann mit dem wenn Fortsetzungen für die Verarbeitung von Ereignissen zum Empfang von ICMP-Nachrichten registriert sind.

Hinweis:Die Aufzählung kBasisState_Closed ist aus Gründen der Kompatibilität mit Binärprogrammen kState_Ready zugeordnet. Die vorhandene kState_Closed existiert, um die Unterscheidung zwischen „Noch nicht geöffnet“ separat zu erkennen und „zuvor geöffnet jetzt geschlossen“ die zuvor in den Zuständen 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
Anzeige der Netzwerkschnittstelle, die der Multicast-Gruppe hinzugefügt werden soll
[in] aAddress
Multicast-Gruppe, um die Schnittstelle zu
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Gruppe entfernt
INET_ERROR_UNKNOWN_INTERFACE
unbekannte Netzwerkschnittstelle, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress ist weder kIPAddressType_IPv4 noch kIPAddressType_IPv6 oder kein Multicast.
other
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 bereitgestellten Multicast-Gruppe auf der angegebenen Schnittstelle.

Details
Parameter
[in] aInterfaceId
Der Indikator der Netzwerkschnittstelle, die aus der Multicast-Gruppe entfernt werden soll
[in] aAddress
Multicast-Gruppe, um die Schnittstelle zu entfernen
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Gruppe entfernt
INET_ERROR_UNKNOWN_INTERFACE
unbekannte Netzwerkschnittstelle, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress ist weder kIPAddressType_IPv4 noch kIPAddressType_IPv6 oder kein Multicast.
other
anderer System- oder Plattformfehler

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Legen Sie fest, ob IP-Multicast-Traffic zurückgeleitet werden soll.

Legen Sie fest, ob IP-Multicast-Traffic zu diesem Endpunkt zurückgeleitet werden soll.

Details
Parameter
[in] aIPVersion
[in] aLoop
Rückgabewerte
INET_NO_ERROR
Erfolg: Multicast-Loopback-Verhalten festgelegt
other
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 Quell- und Zieladressierung der LwIP-IP-Ebene ab.

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

Details
Parameter
[in] aBuffer
Paketzwischenspeicher mit der IP-Nachricht
Rückgabe
einen Zeiger auf die Adressinformationen im Erfolgsfall; 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 Zwischenspeicher in einer LwIP-IP-Nachricht den für die Ethernet/IP/UDP-Header verwendeten Speicherplatz enthält. Angesichts der aktuellen Größe der IPPacketInfo-Struktur (40 Byte) ist es jedoch 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 ankommen.