nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

Itérateur de liste d'adresses IP d'interface réseau système

Résumé

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

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

Sur les systèmes LwIP multithread, les instances sont sécurisées par rapport aux autres threads qui accèdent à l'état LwIP global, à condition que: 1) les autres threads conservent le verrouillage de base LwIP tout en modifiant la liste des netifs ; et 2) les objets netifs 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 aux adresses du système sous-jacent.

Sur les systèmes LwIP, l'itération est stable, sauf si 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)
Permet d'obtenir l'adresse de l'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 d'interface réseau associé à l'adresse d'interface actuelle.
GetInterfaceName(char *nameBuf, size_t nameBufSize)
Permet d'obtenir 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 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
Faire avancer l'itérateur à l'adresse d'interface suivante.
SupportsMulticast(void)
bool
Indique si l'interface réseau associée à l'adresse d'interface actuelle prend en charge la multidiffusion.

Fonctions publiques

GetAddress

IPAddress GetAddress(
  void
)

Permet d'obtenir l'adresse de l'interface actuelle.

Détails
Renvoie
l'adresse d'interface actuelle ou IPAddress::Any si l'itérateur est placé 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 d'interface réseau associé à l'adresse d'interface actuelle.

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

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Permet d'obtenir 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 mémoire pour écrire le nom de l'interface
[in] nameBufSize
taille de la région indiquée par nameBuf
Valeurs de retour
INET_NO_ERROR
un résultat positif, le 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 actuellement pas placé sur une adresse d'interface ;
other
une autre erreur système ou de plate-forme

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

Récupère le préfixe 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 placé 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 diffusion, 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 active, false dans le cas contraire, ou si l'itérateur n'est pas placé sur une adresse d'interface.

Suivant

bool Next(
  void
)

Faire avancer l'itérateur à 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 avancé au-delà de la fin, sinon true.

SupportsMulticast

bool SupportsMulticast(
  void
)

Indique si l'interface réseau associée à l'adresse d'interface actuelle prend en charge la multidiffusion.

Détails
Renvoie
true si la multidiffusion est acceptée, 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.