nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

Iterator für die Liste der IP-Adressen der Systemnetzwerkschnittstelle.

Zusammenfassung

Verwenden Sie Objekte dieser Klasse, um die Liste der IP-Adressen der Systemnetzwerkschnittstelle zu iterieren.

Methoden für eine einzelne Instanz dieser Klasse sind nicht Thread-sicher. Separate Instanzen können jedoch gleichzeitig von mehreren Threads verwendet werden.

Auf Multi-Threaded-LwIP-Systemen sind Instanzen im Vergleich zu anderen Threads, die auf den globalen LwIP-Status zugreifen, Thread-sicher, unter der Voraussetzung, dass 1) andere Threads die LwIP-Kernsperre besitzen, während die Liste der Netifs verändert wird, und 2) das Netif-Objekt selbst nie gelöscht wird.

Auf Socket-basierten Systemen ist die Iteration bei Änderungen an den Schnittstellen und/oder Adressen des zugrunde liegenden Systems immer stabil.

Auf LwIP-Systemen ist die Iteration stabil, es sei denn, die Schnittstelle, die der aktuellen Adresse zugeordnet ist, wird entfernt. In diesem Fall kann die Iteration vorzeitig beendet werden.

Konstruktoren und Zerstörer

InterfaceAddressIterator(void)
Erstellt ein InterfaceAddressIterator-Objekt.
~InterfaceAddressIterator(void)
Zerstört ein InterfaceAddressIterator-Objekt.

Öffentliche Funktionen

GetAddress(void)
Rufen Sie die aktuelle Schnittstellenadresse ab.
GetAddressWithPrefix(IPPrefix & addrWithPrefix)
void
Gibt ein IPPrefix zurück, das die Adresse und Präfixlänge der aktuellen Adresse enthält.
GetIPv6PrefixLength(void)
uint8_t
Eingestellter Alias für GetPrefixLength(void)
GetInterface(void)
InterfaceId
Eingestellter Alias für GetInterfaceId(void)
GetInterfaceId(void)
InterfaceId
Gibt die ID der Netzwerkschnittstelle zurück, die der aktuellen Schnittstellenadresse zugeordnet ist.
GetInterfaceName(char *nameBuf, size_t nameBufSize)
Ruft den Namen der Netzwerkschnittstelle ab, die der aktuellen Schnittstellenadresse zugeordnet ist.
GetPrefixLength(void)
uint8_t
Ruft das Netzwerkpräfix ab, das der aktuellen Schnittstellenadresse zugeordnet ist.
HasBroadcastAddress(void)
bool
Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle eine IPv4-Broadcastadresse hat.
HasCurrent(void)
bool
IsUp(void)
bool
Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle aktiv ist.
Next(void)
bool
Setzt den Iterator zur nächsten Schnittstellenadresse fort.
SupportsMulticast(void)
bool
Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle Multicast unterstützt.

Öffentliche Funktionen

GetAddress

IPAddress GetAddress(
  void
)

Rufen Sie die aktuelle Schnittstellenadresse ab.

Details
Rückgabe
Die aktuelle Schnittstellenadresse oder IPAddress::Any, wenn der Iteration über das Ende der Adressenliste liegt.

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

Gibt ein IPPrefix zurück, das die Adresse und Präfixlänge der aktuellen Adresse enthält.

GetIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

Eingestellter Alias für GetPrefixLength(void)

GetInterface

InterfaceId GetInterface(
  void
)

Eingestellter Alias für GetInterfaceId(void)

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

Gibt die ID der Netzwerkschnittstelle zurück, die der aktuellen Schnittstellenadresse zugeordnet ist.

Details
Rückgabe
Die Schnittstellen-ID oder INET_NULL_INTERFACEID, wenn der Iteration über das Ende der Adressenliste liegt

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Ruft den Namen der Netzwerkschnittstelle ab, die der aktuellen Schnittstellenadresse zugeordnet ist.

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

Details
Parameter
[in] nameBuf
Arbeitsspeicherregion zum Schreiben des Schnittstellennamens
[in] nameBufSize
Größe des durch nameBuf angegebenen Bereichs
Rückgabewerte
INET_NO_ERROR
erfolgreiches Ergebnis, geschriebener Schnittstellenname
INET_ERROR_NO_MEMORY
Name ist zu groß, um in den Zwischenspeicher geschrieben zu werden
INET_ERROR_INCORRECT_STATE
Der Iterator befindet sich derzeit nicht an einer Schnittstellenadresse.
other
ein anderer System- oder Plattformfehler

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

Ruft das Netzwerkpräfix ab, das der aktuellen Schnittstellenadresse zugeordnet ist.

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.

Details
Rückgabe
das Netzwerkpräfix (in Bits) oder 0, wenn sich der Iteration jenseits des Endes der Adressenliste befindet

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle eine IPv4-Broadcastadresse hat.

Details
Rückgabe
true, wenn die Schnittstelle eine Broadcastadresse hat, false, wenn nicht, oder wenn der Iteration nicht in einer Schnittstellenadresse positioniert ist

HasCurrent

bool HasCurrent(
  void
)

InterfaceAddressIterator

 InterfaceAddressIterator(
  void
)

Erstellt ein InterfaceAddressIterator-Objekt.

Startet den Iterator bei der ersten Netzwerkadresse. Auf einigen Plattformen weist dieser Konstruktor möglicherweise Ressourcen zu, die vom Destruktor recycelt wurden.

IsUp

bool IsUp(
  void
)

Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle aktiv ist.

Details
Rückgabe
true, wenn die aktuelle Netzwerkschnittstelle aktiv ist, false, wenn nicht, oder wenn sich der Iteration nicht an einer Schnittstellenadresse befindet.

Weiter

bool Next(
  void
)

Setzt den Iterator zur nächsten Schnittstellenadresse fort.

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.

Details
Rückgabe
false, wenn sie über das Ende hinausgehen, andernfalls true.

SupportsMulticast

bool SupportsMulticast(
  void
)

Gibt zurück, ob die mit der aktuellen Schnittstellenadresse verknüpfte Netzwerkschnittstelle Multicast unterstützt.

Details
Rückgabe
true, wenn Multicast unterstützt wird, false, wenn nicht, oder wenn sich der Iteration nicht an einer Schnittstellenadresse befindet.

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

Zerstört ein InterfaceAddressIterator-Objekt.

Verwendet alle vom Konstruktor zugewiesenen Ressourcen wieder.