nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

Itérateur pour la liste des adresses IP de l'interface réseau du système

Résumé

Utilisez les objets de cette classe pour itérer la liste des adresses IP des interfaces réseau du système.

Les méthodes appliquées à une instance individuelle de cette classe ne sont pas thread-safe. mais des instances distinctes peuvent être utilisées simultanément par plusieurs threads.

Sur les systèmes LwIP multithread, les instances sont thread-safe par rapport aux autres threads qui accèdent à l'état LwIP global, à condition que: 1) les autres threads conservent le verrou de base LwIP tout en mutant la liste des nétifs ; et 2) l'objet nétif eux-mêmes ne sont jamais détruits.

Sur les systèmes basés sur des sockets, l'itération est toujours stable face aux modifications apportées aux interfaces et/ou adresses du système sous-jacent.

Sur les systèmes LwIP, l'itération est stable, sauf dans le cas où l'interface associée à l'adresse actuelle est supprimée, auquel cas l'itération peut se terminer prématurément.

Constructeurs et destructeurs

InterfaceAddressIterator(void)
Construit un objet InterfaceAddressIterator.
~InterfaceAddressIterator(void)
Détruit un objet InterfaceAddressIterator.

Fonctions publiques

GetAddress(void)
Obtenez l'adresse d'interface actuelle.
GetAddressWithPrefix(IPPrefix & addrWithPrefix)
void
Renvoie un IPPrefix contenant l'adresse et la longueur du préfixe de l'adresse actuelle.
GetIPv6PrefixLength(void)
uint8_t
Alias obsolète pour GetPrefixLength(void)
GetInterface(void)
InterfaceId
Alias obsolète pour GetInterfaceId(void)
GetInterfaceId(void)
InterfaceId
Renvoie l'ID de l'interface réseau associé à l'adresse actuelle de l'interface.
GetInterfaceName(char *nameBuf, size_t nameBufSize)
Obtenez le nom de l'interface réseau associée à l'adresse actuelle de l'interface.
GetPrefixLength(void)
uint8_t
Récupère le préfixe de réseau associé à l'adresse d'interface actuelle.
HasBroadcastAddress(void)
bool
Indique si l'interface réseau associée à l'adresse d'interface actuelle possède une adresse de diffusion IPv4.
HasCurrent(void)
bool
IsUp(void)
bool
Indique si l'interface réseau associée à l'adresse d'interface actuelle est opérationnelle.
Next(void)
bool
Faites avancer l'itérateur jusqu'à l'adresse d'interface suivante.
SupportsMulticast(void)
bool
Indique si l'interface réseau associée à l'adresse d'interface actuelle est compatible avec la multidiffusion.

Fonctions publiques

GetAddress

IPAddress GetAddress(
  void
)

Obtenez l'adresse d'interface actuelle.

Détails
Renvoie
l'adresse d'interface actuelle ou IPAddress::Any si l'itérateur est positionné au-delà de la fin de la liste d'adresses.

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

Renvoie un IPPrefix contenant l'adresse et la longueur du préfixe de l'adresse actuelle.

GetIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

Alias obsolète pour GetPrefixLength(void)

GetInterface

InterfaceId GetInterface(
  void
)

Alias obsolète pour GetInterfaceId(void)

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

Renvoie l'ID de l'interface réseau associé à l'adresse actuelle de l'interface.

Détails
Renvoie
ID d'interface ou INET_NULL_INTERFACEID si l'itérateur est positionné au-delà de la fin de la liste d'adresses

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Obtenez le nom de l'interface réseau associée à l'adresse actuelle de l'interface.

Writes the name of the network interface as \c NUL terminated text string
at \c nameBuf.

Détails
Paramètres
[in] nameBuf
de la mémoire pour écrire le nom de l'interface
[in] nameBufSize
taille de la région indiquée par nameBuf
Valeurs renvoyées
INET_NO_ERROR
résultat réussi, nom de l'interface écrit
INET_ERROR_NO_MEMORY
le nom est trop volumineux pour être écrit dans la mémoire tampon
INET_ERROR_INCORRECT_STATE
l'itérateur n'est pas actuellement positionné sur une adresse d'interface.
other
autre erreur système ou plate-forme

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

Récupère le préfixe de réseau associé à l'adresse d'interface actuelle.

On LwIP, this method simply returns the hard-coded constant 64.

Note Well: the standard subnet prefix on all links other than PPP
links is 64 bits. On PPP links and some non-broadcast multipoint access
links, the convention is either 127 bits or 128 bits, but it might be
something else. On most platforms, the system's interface address
structure can represent arbitrary prefix lengths between 0 and 128.

Détails
Renvoie
le préfixe réseau (en bits) ou 0 si l'itérateur est positionné au-delà de la fin de la liste d'adresses.

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

Indique si l'interface réseau associée à l'adresse d'interface actuelle possède une adresse de diffusion IPv4.

Détails
Renvoie
true si l'interface possède une adresse de broadcast, false dans le cas contraire ou si l'itérateur n'est pas placé sur une adresse d'interface.

HasCurrent

bool HasCurrent(
  void
)

InterfaceAddressIterator

 InterfaceAddressIterator(
  void
)

Construit un objet InterfaceAddressIterator.

Démarre l'itérateur à la première adresse réseau. Sur certaines plates-formes, ce constructeur peut allouer des ressources recyclées par le destructeur.

IsUp

bool IsUp(
  void
)

Indique si l'interface réseau associée à l'adresse d'interface actuelle est opérationnelle.

Détails
Renvoie
true si l'interface réseau actuelle est opérationnelle, false dans le cas contraire, ou si l'itérateur n'est pas placé sur une adresse d'interface.

Suivant

bool Next(
  void
)

Faites avancer l'itérateur jusqu'à l'adresse d'interface suivante.

Advances the iterator to the next interface address or to a position
beyond the end of the address list.

On LwIP, this method is thread-safe provided that: 1) other threads hold
the LwIP core lock while mutating the netif list; and 2) netif objects
themselves are never destroyed.  Additionally, iteration on LwIP systems
will terminate early if the current interface is removed from the list.

Détails
Renvoie
false si elle est avancée au-delà de la fin, sinon true.

SupportsMulticast

bool SupportsMulticast(
  void
)

Indique si l'interface réseau associée à l'adresse d'interface actuelle est compatible avec la multidiffusion.

Détails
Renvoie
true si la multidiffusion est compatible, false dans le cas contraire, ou si l'itérateur n'est pas placé sur une adresse d'interface.

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

Détruit un objet InterfaceAddressIterator.

Recycle toutes les ressources allouées par le constructeur.