нл:: Инет:: ИтераторАдресИнтерфейса

#include <src/inet/InetInterface.h>

Итератор для списка IP-адресов сетевых интерфейсов системы.

Краткое содержание

Используйте объекты этого класса для перебора списка IP-адресов системного сетевого интерфейса.

Методы отдельного экземпляра этого класса не являются потокобезопасными; однако отдельные экземпляры могут использоваться одновременно несколькими потоками.

В многопоточных системах LwIP экземпляры являются потокобезопасными относительно других потоков, обращающихся к глобальному состоянию LwIP, при условии, что: 1) другие потоки удерживают блокировку ядра LwIP при изменении списка нетифов; и 2) сами объекты netif никогда не уничтожаются.

В системах на основе сокетов итерация всегда стабильна при изменении интерфейсов и/или адресов базовой системы.

В системах LwIP итерация стабильна, за исключением случая, когда интерфейс, связанный с текущим адресом, удаляется, и в этом случае итерация может завершиться преждевременно.

Конструкторы и деструкторы

InterfaceAddressIterator (void)
Создает объект InterfaceAddressIterator .
~InterfaceAddressIterator (void)
Уничтожает объект InterfaceAddressIterator .

Общественные функции

GetAddress (void)
Получите текущий адрес интерфейса.
GetAddressWithPrefix ( IPPrefix & addrWithPrefix)
void
Возвращает IPPrefix, содержащий адрес и длину префикса для текущего адреса.
GetIPv6PrefixLength (void)
uint8_t
Устаревший псевдоним для GetPrefixLength(void)
GetInterface (void)
InterfaceId
Устаревший псевдоним для GetInterfaceId(void)
GetInterfaceId (void)
InterfaceId
Возвращает идентификатор сетевого интерфейса, связанный с текущим адресом интерфейса.
GetInterfaceName (char *nameBuf, size_t nameBufSize)
Получите имя сетевого интерфейса, связанного с текущим адресом интерфейса.
GetPrefixLength (void)
uint8_t
Получает сетевой префикс, связанный с текущим адресом интерфейса.
HasBroadcastAddress (void)
bool
Возвращает, имеет ли сетевой интерфейс, связанный с текущим адресом интерфейса, широковещательный адрес IPv4.
HasCurrent (void)
bool
IsUp (void)
bool
Возвращает, работает ли сетевой интерфейс, связанный с текущим адресом интерфейса.
Next (void)
bool
Переместить итератор на следующий адрес интерфейса.
SupportsMulticast (void)
bool
Возвращает, поддерживает ли сетевой интерфейс, связанный с текущим адресом интерфейса, многоадресную рассылку.

Общественные функции

Получить адрес

IPAddress GetAddress(
  void
)

Получите текущий адрес интерфейса.

Подробности
Возврат
текущий адрес интерфейса или IPAddress::Any , если итератор расположен за концом списка адресов.

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

Возвращает IPPrefix, содержащий адрес и длину префикса для текущего адреса.

ПолучитьIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

Устаревший псевдоним для GetPrefixLength(void)

ПолучитьИнтерфейс

InterfaceId GetInterface(
  void
)

Устаревший псевдоним для GetInterfaceId(void)

Получитьинтерфейсид

InterfaceId GetInterfaceId(
  void
)

Возвращает идентификатор сетевого интерфейса, связанный с текущим адресом интерфейса.

Подробности
Возврат
идентификатор интерфейса или INET_NULL_INTERFACEID , если итератор расположен за концом списка адресов.

Получить имя интерфейса

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Получите имя сетевого интерфейса, связанного с текущим адресом интерфейса.

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

Подробности
Параметры
[in] nameBuf
область памяти для записи имени интерфейса
[in] nameBufSize
размер региона, обозначенного nameBuf
Возвращаемые значения
INET_NO_ERROR
успешный результат, имя интерфейса записано
INET_ERROR_NO_MEMORY
имя слишком велико для записи в буфер
INET_ERROR_INCORRECT_STATE
итератор в настоящее время не расположен по адресу интерфейса
other
другая ошибка системы или платформы

Получитьпрефиксдлина

uint8_t GetPrefixLength(
  void
)

Получает сетевой префикс, связанный с текущим адресом интерфейса.

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.

Подробности
Возврат
сетевой префикс (в битах) или 0, если итератор расположен за концом списка адресов.

Имеет адрес вещания

bool HasBroadcastAddress(
  void
)

Возвращает, имеет ли сетевой интерфейс, связанный с текущим адресом интерфейса, широковещательный адрес IPv4.

Подробности
Возврат
true если интерфейс имеет широковещательный адрес, false в противном случае или если итератор не расположен по адресу интерфейса.

Имеет текущий

bool HasCurrent(
  void
)

Итератор Адреса Интерфейса

 InterfaceAddressIterator(
  void
)

Создает объект InterfaceAddressIterator .

Запускает итератор по первому сетевому адресу. На некоторых платформах этот конструктор может выделять ресурсы, переработанные деструктором.

IsUp

bool IsUp(
  void
)

Возвращает, работает ли сетевой интерфейс, связанный с текущим адресом интерфейса.

Подробности
Возврат
true , если текущий сетевой интерфейс работает, false в противном случае или если итератор не расположен по адресу интерфейса.

Следующий

bool Next(
  void
)

Переместить итератор на следующий адрес интерфейса.

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.

Подробности
Возврат
false если продвинулось за конец, иначе true .

Поддерживает многоадресную рассылку

bool SupportsMulticast(
  void
)

Возвращает, поддерживает ли сетевой интерфейс, связанный с текущим адресом интерфейса, многоадресную рассылку.

Подробности
Возврат
true , если многоадресная рассылка поддерживается, false , если нет, или если итератор не расположен по адресу интерфейса.

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

Уничтожает объект InterfaceAddressIterator .

Перерабатывает любые ресурсы, выделенные конструктором.