nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

Les objets de cette classe représentent des points de terminaison de protocoles IP non instanciables.

Résumé

Héritage

Hérite de: nl::Inet::EndPointBasis
Sous-classes directes connues:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

Types publics

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
énum
État dynamique de base du point de terminaison sous-jacent.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
énum
Options de transmission pour la méthode SendMsg.
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
Type de fonction de gestion des événements de réception de texte de message.
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
Type de fonction de gestion des événements d'erreur de réception.

Attributs publics

OnMessageReceived
Délégué de la fonction de gestion des événements de réception de messages du point de terminaison.
OnReceiveError
Délégué de la fonction de gestion des événements de réception du point de terminaison.
mState
enum nl::Inet::IPEndPointBasis::@8
État dynamique de base du point de terminaison sous-jacent.

Attributs protégés

mBoundIntfId
InterfaceId

Fonctions publiques

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Rejoignez un groupe de multidiffusion IP.
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Quittez un groupe de multidiffusion IP.
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
Déterminez si le trafic de multidiffusion IP doit être renvoyé en boucle.

Fonctions protégées

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)

Fonctions statiques publiques

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

Fonctions statiques protégées

GetPacketInfo(Weave::System::PacketBuffer *buf)
Obtenir des informations sur l'adressage source et de destination de la couche IP LwIP

Types publics

@8

 @8

État dynamique de base du point de terminaison sous-jacent.

Les objets sont initialisés dans l'état accédez à la section "Relié" l'état après la liaison à une adresse d'interface locale, puis passez à la lorsque des continuations sont enregistrées pour gérer les événements de réception de messages ICMP.

Remarque:L'énumération d'état kBasisState_Closed est mappée à kState_Ready pour des raisons historiques de compatibilité binaire. Le kState_Closed existant permet d'identifier séparément la distinction entre "pas encore ouvert" et « précédemment ouvert désormais fermé" qui existait auparavant dans les états kState_Ready et kState_Closed.

Propriétés
kState_Bound

Limité au point de terminaison, mais sans écoute.

kState_Closed

Point de terminaison fermé, prêt à être publié.

kState_Listening

Point de terminaison recevant des datagrammes.

kState_Ready

Le point de terminaison a bien été initialisé, mais n'est pas ouvert.

@9

 @9

Options de transmission pour la méthode SendMsg.

Propriétés
kSendFlag_RetainBuffer

Ne mettez pas directement le message en file d'attente de manière destructive.

Mettez une copie en file d'attente.

OnMessageReceivedFunct

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

Type de fonction de gestion des événements de réception de texte de message.

Fournissez une fonction de ce type au membre délégué OnMessageReceived pour traiter les événements de réception de texte de message sur endPoint, où msg est le texte de message reçu de l'expéditeur à senderAddr.

Détails
Paramètres
[in] endPoint
Point de terminaison associé à l'événement.
[in] msg
Texte du message reçu.
[in] senderAddr
Adresse IP de l'expéditeur.

OnReceiveErrorFunct

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

Type de fonction de gestion des événements d'erreur de réception.

Fournissez une fonction de ce type au membre délégué OnReceiveError pour qu'il traite les événements d'erreur de réception sur endPoint. L'argument err fournit des détails spécifiques sur le type d'erreur.

Détails
Paramètres
[in] endPoint
Point de terminaison associé à l'événement.
[in] err
Cause de l'erreur.

Attributs publics

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

Délégué de la fonction de gestion des événements de réception de messages du point de terminaison.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Délégué de la fonction de gestion des événements de réception du point de terminaison.

mState

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

État dynamique de base du point de terminaison sous-jacent.

Les objets sont initialisés dans l'état accédez à la section "Relié" l'état après la liaison à une adresse d'interface locale, puis passez à la lorsque des continuations sont enregistrées pour gérer les événements de réception de messages ICMP.

Remarque:L'énumération d'état kBasisState_Closed est mappée à kState_Ready pour des raisons historiques de compatibilité binaire. Le kState_Closed existant permet d'identifier séparément la distinction entre "pas encore ouvert" et « précédemment ouvert désormais fermé" qui existait auparavant dans les états kState_Ready et kState_Closed.

Attributs protégés

mBoundIntfId

InterfaceId mBoundIntfId

Fonctions publiques

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Rejoignez un groupe de multidiffusion IP.

Associez le point de terminaison au groupe de multidiffusion fourni sur l'interface spécifiée.

Détails
Paramètres
[in] aInterfaceId
Indicateur de l'interface réseau à ajouter au groupe de multidiffusion
[in] aAddress
le groupe de multidiffusion pour ajouter l'interface à
Valeurs renvoyées
INET_NO_ERROR
réussite: groupe de multidiffusion supprimé
INET_ERROR_UNKNOWN_INTERFACE
Interface réseau inconnue, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress n'est pas kIPAddressType_IPv4 ou kIPAddressType_IPv6, ou n'est pas multicast
other
autre erreur système ou plate-forme

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Quittez un groupe de multidiffusion IP.

Supprimez le point de terminaison du groupe de multidiffusion fourni sur l'interface spécifiée.

Détails
Paramètres
[in] aInterfaceId
Indicateur de l'interface réseau à supprimer du groupe de multidiffusion
[in] aAddress
le groupe de multidiffusion pour supprimer l'interface du
Valeurs renvoyées
INET_NO_ERROR
réussite: groupe de multidiffusion supprimé
INET_ERROR_UNKNOWN_INTERFACE
Interface réseau inconnue, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress n'est pas kIPAddressType_IPv4 ou kIPAddressType_IPv6, ou n'est pas multicast
other
autre erreur système ou plate-forme

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Déterminez si le trafic de multidiffusion IP doit être renvoyé en boucle.

Indiquez si le trafic de multidiffusion IP doit être renvoyé en boucle vers ce point de terminaison.

Détails
Paramètres
[in] aIPVersion
[in] aLoop
Valeurs renvoyées
INET_NO_ERROR
réussite: comportement de bouclage multicast défini
other
autre erreur système ou plate-forme

Fonctions protégées

Lier

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
)

Fonctions statiques publiques

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

Fonctions statiques protégées

GetPacketInfo

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

Obtenir des informations sur l'adressage source et de destination de la couche IP LwIP

Lorsque les informations LwIP concernant le paquet sont "masquées" dans l'espace réservé avant le début des données du tampon de paquets. Cela est nécessaire, car les événements de la couche système ne comportent que deux arguments, qui sont ici utilisés pour transmettre le pointeur vers le point d'arrivée et le pointeur vers le tampon.

Détails
Paramètres
[in] aBuffer
le tampon de paquets contenant le message IP
Renvoie
un pointeur sur l'adresse en cas de réussite ; sinon NULL si l'espace est insuffisant dans le paquet pour les informations d'adresse.

Dans la plupart des cas, cette astuce consiste à stocker des informations avant que les données fonctionnent, car le premier tampon d'un message IP LwIP contient l'espace utilisé pour les en-têtes Ethernet/IP/UDP. Cependant, compte tenu de la taille actuelle de la structure IPPacketInfo (40 octets), il est possible qu'il n'y ait pas assez d'espace pour stocker la structure avec la charge utile dans un seul tampon de paquet. En pratique, cela ne devrait se produire que pour les paquets IPv4 extrêmement volumineux qui arrivent sans en-tête Ethernet.