nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

Iterator listy adresów IP interfejsu sieci systemu.

Podsumowanie

Użyj obiektów tej klasy do iteracji listy adresów IP interfejsu sieci systemu.

metody w pojedynczej instancji tej klasy nie są bezpieczne w wątku; ale oddzielne instancje mogą być używane jednocześnie przez wiele wątków.

W wielowątkowych systemach LwIP instancje są bezpieczne dla wątków względem innych wątków uzyskujących dostęp do globalnego stanu LwIP, pod warunkiem że: 1) inne wątki zachowują blokadę rdzeni LwIP podczas mutowania listy identyfikatorów netif; oraz 2) same obiekty netif nigdy nie są niszczone.

W systemach opartych na gniazdach iteracja jest zawsze stabilna w przypadku zmian w interfejsach lub adresach systemu.

W systemach LwIP iteracja jest stabilna, chyba że interfejs powiązany z bieżącym adresem zostaje usunięty – wówczas iteracja może zakończyć się przedwcześnie.

Konstruktory i niszczyciele

InterfaceAddressIterator(void)
Tworzy obiekt InterfaceAddressIterator.
~InterfaceAddressIterator(void)
Niszczy obiekt InterfaceAddressIterator.

Funkcje publiczne

GetAddress(void)
Pobierz bieżący adres interfejsu.
GetAddressWithPrefix(IPPrefix & addrWithPrefix)
void
Zwraca prefiks IPPrefix z adresem i długością prefiksu dla bieżącego adresu.
GetIPv6PrefixLength(void)
uint8_t
Wycofany alias dla GetPrefixLength(void)
GetInterface(void)
InterfaceId
Wycofany alias dla GetInterfaceId(void)
GetInterfaceId(void)
InterfaceId
Zwraca identyfikator interfejsu sieci powiązany z obecnym adresem interfejsu.
GetInterfaceName(char *nameBuf, size_t nameBufSize)
Pobierz nazwę interfejsu sieci powiązanego z obecnym adresem interfejsu.
GetPrefixLength(void)
uint8_t
Pobiera prefiks sieci powiązany z bieżącym adresem interfejsu.
HasBroadcastAddress(void)
bool
Zwraca informacje o tym, czy interfejs sieci powiązany z bieżącym adresem interfejsu ma adres rozgłoszeniowy IPv4.
HasCurrent(void)
bool
IsUp(void)
bool
Wskazuje, czy interfejs sieci powiązany z obecnym adresem interfejsu jest aktywny.
Next(void)
bool
Przesuń iterację do następnego adresu interfejsu.
SupportsMulticast(void)
bool
Wskazuje, czy interfejs sieci powiązany z bieżącym adresem interfejsu obsługuje multiemisję.

Funkcje publiczne

GetAddress

IPAddress GetAddress(
  void
)

Pobierz bieżący adres interfejsu.

Szczegóły
Zwroty
bieżący adres interfejsu lub IPAddress::Any, jeśli iterator znajduje się poza końcem listy adresów.

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

Zwraca prefiks IPPrefix z adresem i długością prefiksu dla bieżącego adresu.

GetIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

Wycofany alias dla GetPrefixLength(void)

GetInterface

InterfaceId GetInterface(
  void
)

Wycofany alias dla GetInterfaceId(void)

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

Zwraca identyfikator interfejsu sieci powiązany z obecnym adresem interfejsu.

Szczegóły
Zwroty
identyfikator interfejsu lub INET_NULL_INTERFACEID, jeśli iterator znajduje się poza końcem listy adresów.

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Pobierz nazwę interfejsu sieci powiązanego z obecnym adresem interfejsu.

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

Szczegóły
Parametry
[in] nameBuf
region pamięci do zapisania nazwy interfejsu
[in] nameBufSize
wielkość regionu oznaczonego przez nameBuf
Zwracane wartości
INET_NO_ERROR
pomyślnie zapisany wynik, nazwa interfejsu została zapisana
INET_ERROR_NO_MEMORY
nazwa jest za duża, aby zapisać ją w buforze
INET_ERROR_INCORRECT_STATE
iterator nie jest obecnie umieszczony w adresie interfejsu
other
inny błąd systemu lub platformy

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

Pobiera prefiks sieci powiązany z bieżącym adresem interfejsu.

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.

Szczegóły
Zwroty
prefiks sieci (w bitach) lub 0, jeśli iterator znajduje się poza końcem listy adresów.

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

Zwraca informacje o tym, czy interfejs sieci powiązany z bieżącym adresem interfejsu ma adres rozgłoszeniowy IPv4.

Szczegóły
Zwroty
true, jeśli interfejs ma adres rozgłoszeniowy, false, jeśli nie ma go lub jeśli iterator nie jest umieszczony pod adresem interfejsu.

HasCurrent

bool HasCurrent(
  void
)

InterfaceAddressIterator

 InterfaceAddressIterator(
  void
)

Tworzy obiekt InterfaceAddressIterator.

Uruchamia iterator od pierwszego adresu sieciowego. Na niektórych platformach ten konstruktor może przydzielać zasoby poddane recyklingowi przez destruktor.

IsUp

bool IsUp(
  void
)

Wskazuje, czy interfejs sieci powiązany z obecnym adresem interfejsu jest aktywny.

Szczegóły
Zwroty
true, jeśli bieżący interfejs sieci jest włączony, false, jeśli nie, lub jeśli iterator nie znajduje się pod adresem interfejsu.

Dalej

bool Next(
  void
)

Przesuń iterację do następnego adresu interfejsu.

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.

Szczegóły
Zwroty
false, jeśli przejdziesz dalej, w przeciwnym razie true.

SupportsMulticast

bool SupportsMulticast(
  void
)

Wskazuje, czy interfejs sieci powiązany z bieżącym adresem interfejsu obsługuje multiemisję.

Szczegóły
Zwroty
true, jeśli iterator jest obsługiwany, false, jeśli nie jest, lub jeśli iterator nie jest umieszczony pod adresem interfejsu.

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

Niszczy obiekt InterfaceAddressIterator.

Ponownie uruchamia wszystkie zasoby przydzielone przez konstruktor.