nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

Les objets de cette classe représentent des points de terminaison de protocole 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
}
enum
État dynamique de base du point de terminaison sous-jacent.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
Transmettre les indicateurs d'option 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 du texte du 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 des messages du point de terminaison.
OnReceiveError
Délégué de la fonction de gestion des événements d'erreur 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)
Quitter un groupe de multidiffusion IP
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
Définissez 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)
Obtenez des informations sur l'adressage de la source et de la 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 à l'état "prêt", passent à l'état "lié" après la liaison à une adresse d'interface locale, puis passent à l'état "écoute" lorsqu'ils ont enregistré des continuations pour gérer les événements de réception des messages ICMP.

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

Propriétés
kState_Bound

Le point de terminaison est lié, mais n'écoute pas.

kState_Closed

Point de terminaison fermé, prêt pour la publication.

kState_Listening

Point de terminaison recevant des datagrammes.

kState_Ready

Point de terminaison initialisé, mais pas ouvert.

@9

 @9

Transmettre les indicateurs d'option pour la méthode SendMsg.

Propriétés
kSendFlag_RetainBuffer

Ne mettez pas le message directement 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 du texte du message.

Fournissez une fonction de ce type au membre délégué OnMessageReceived pour traiter les événements de réception de texte des messages sur endPoint, où msg est le texte du message reçu de l'expéditeur à l'adresse 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 traiter les événements d'erreur de réception sur endPoint. L'argument err fournit des détails spécifiques sur le type de l'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 des messages du point de terminaison.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Délégué de la fonction de gestion des événements d'erreur 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 à l'état "prêt", passent à l'état "lié" après la liaison à une adresse d'interface locale, puis passent à l'état "écoute" lorsqu'ils ont enregistré des continuations pour gérer les événements de réception des messages ICMP.

Remarque:L'énumération de l'état kBasisState_Closed est mappée sur kState_Ready pour des raisons de compatibilité binaire historique. Le kState_Closed existant permet d'identifier séparément la distinction entre "pas encore ouvert" et "précédemment ouvert maintenant 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.

Joignez 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 de retour
INET_NO_ERROR
Opération réussie: groupe de multidiffusion supprimé
INET_ERROR_UNKNOWN_INTERFACE
interface réseau inconnue, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress n'est pas kIPAddressType_IPv4 ni kIPAddressType_IPv6, ou n'est pas multicast
other
une autre erreur système ou de plate-forme

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Quitter 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 de
Valeurs de retour
INET_NO_ERROR
Opération réussie: groupe de multidiffusion supprimé
INET_ERROR_UNKNOWN_INTERFACE
interface réseau inconnue, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress n'est pas kIPAddressType_IPv4 ni kIPAddressType_IPv6, ou n'est pas multicast
other
une autre erreur système ou de plate-forme

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Définissez 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 de retour
INET_NO_ERROR
succès: comportement de bouclage multicast défini
other
une autre erreur système ou de plate-forme

Fonctions protégées

Bind

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
)

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

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

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

Dans la plupart des cas, cette astuce consistant à stocker des informations avant que les données ne fonctionne, car le premier tampon d'un message IP LwIP contient l'espace utilisé pour les en-têtes Ethernet/IP/UDP. Toutefois, étant donné 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 et la charge utile dans un seul tampon de paquets. En pratique, cela ne devrait se produire que pour les paquets IPv4 extrêmement volumineux qui arrivent sans en-tête Ethernet.