Поделиться через


структура MIB_IPNET_ROW2 (netioapi.h)

В структуре MIB_IPNET_ROW2 хранятся сведения о соседнем IP-адресе.

Синтаксис

typedef struct _MIB_IPNET_ROW2 {
  SOCKADDR_INET     Address;
  NET_IFINDEX       InterfaceIndex;
  NET_LUID          InterfaceLuid;
  UCHAR             PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
  ULONG             PhysicalAddressLength;
  NL_NEIGHBOR_STATE State;
  union {
    struct {
      BOOLEAN IsRouter : 1;
      BOOLEAN IsUnreachable : 1;
    };
    UCHAR Flags;
  };
  union {
    ULONG LastReachable;
    ULONG LastUnreachable;
  } ReachabilityTime;
} MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;

Члены

Address

Тип: SOCKADDR_INET

Соседний IP-адрес. Это может быть IPv6-адрес или IPv4-адрес.

InterfaceIndex

Тип: NET_IFINDEX

Значение локального индекса для сетевого интерфейса, связанного с этим IP-адресом. Это значение индекса может изменяться при отключении сетевого адаптера и его включении или при других обстоятельствах и не должно считаться постоянным.

InterfaceLuid

Тип: NET_LUID

Локальный уникальный идентификатор (LUID) для сетевого интерфейса, связанного с этим IP-адресом.

PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]

Тип: UCHAR[IF_MAX_PHYS_ADDRESS_LENGTH]

Физический аппаратный адрес адаптера для сетевого интерфейса, связанного с этим IP-адресом.

PhysicalAddressLength

Тип: ULONG

Длина (в байтах) физического аппаратного адреса, указанного элементом PhysicalAddress . Максимальное поддерживаемое значение — 32 байта.

State

Тип: NL_NEIGHBOR_STATE

Состояние IP-адреса соседа по сети, как определено в rfc 2461, раздел 7.3.2. Для получения дополнительной информации см. http://www.ietf.org/rfc/rfc2461.txt. Этот член может быть одним из значений из типа перечисления NL_NEIGHBOR_STATE , определенного в файле заголовка Nldef.h .

Значение Значение
NlnsUnreachable
IP-адрес недоступен.
NlnsIncomplete
Выполняется разрешение адресов, а адрес на уровне ссылок соседа еще не определен. Специально для IPv6, запрос соседа был отправлен на запрашиваемый узел многоадресной рассылки IP-адрес целевого объекта, но соответствующее объявление соседа еще не получено.
NlnsProbe
Сосед больше недоступен, и для проверки доступности отправляются пробы. Для IPv6 подтверждение доступности активно ищется путем повторной передачи одноадресных зондов запроса соседей через регулярные интервалы, пока не будет получено подтверждение доступности.
NlnsDelay
Сосед уже недоступен, и трафик недавно был отправлен соседу. Однако вместо того, чтобы проверять соседа немедленно, задержите отправку зондов на некоторое время, чтобы дать протоколам верхнего уровня возможность обеспечить подтверждение доступности. Для IPv6 прошло больше времени, чем указано в члене ReachabilityTime.ReachableTime с момента получения последнего положительного подтверждения правильности работы пути вперед и отправки пакета. Если подтверждение доступности не получено в течение периода времени (используемого для задержки первой пробы) после входа в состояние NlnsDelay , то отправляется запрос соседа, а член государства изменяется на NlnsProbe.
NlnsStale
Сосед больше недоступен, но до тех пор, пока трафик не будет отправлен к соседу, не следует предпринимать никаких попыток проверить его доступность. Для IPv6 прошло больше времени, чем указано в члене ReachabilityTime.ReachableTime с момента получения последнего положительного подтверждения правильности работы пути вперед. Хотя состояние имеет значение NlnsStale, никакие действия не выполняется до отправки пакета.

Состояние NlnsStale вводится при получении нежелательного сообщения об обнаружении соседа, которое обновляет кэшированный IP-адрес. Получение такого сообщения не подтверждает доступность, а ввод состояния NlnsStale гарантирует доступность быстро, если запись фактически используется. Однако доступность на самом деле не проверяется, пока запись не будет использована.

NlnsReachable
Сосед, как известно, был доступен в последнее время (в течение десятков секунд назад). Для IPv6 в течение времени, указанного в элементе ReachabilityTime.ReachableTime , было получено положительное подтверждение того, что путь вперед к соседу работает правильно. Хотя состояниеNlnsReachable, при отправке пакетов не выполняется никаких специальных действий.
NlnsPermanent
IP-адрес является постоянным.
NlnsMaximum
Максимально возможное значение для типа перечисления NL_NEIGHBOR_STATE . Это не является юридической ценностью для государства-члена .

IsRouter

Тип: BOOLEAN

Значение типа , указывающее, является ли этот IP-адрес маршрутизатором.

IsUnreachable

Тип: BOOLEAN

Значение типа , указывающее, недоступен ли этот IP-адрес.

Flags

Тип: UCHAR

Набор флагов, указывающих, является ли IP-адрес маршрутизатором и является ли IP-адрес недоступным.

ReachabilityTime

ReachabilityTime.LastReachable

Тип: ULONG Время (в миллисекундах), в течение которых узел предполагает, что сосед доступен после получения подтверждения доступности.

ReachabilityTime.LastUnreachable

Тип: ULONG Время (в миллисекундах), когда узел предполагает, что сосед недоступен после того, как не получил подтверждение доступности.

Комментарии

Структура MIB_IPNET_ROW2 определяется в Windows Vista и более поздних версиях.

Функция GetIpNetTable2 перечисляет соседние IP-адреса в локальной системе и возвращает эти сведения в MIB_IPNET_TABLE2 структуре.

Для IPv4 сюда входят адреса, определенные с помощью протокола ARP. Для IPv6 сюда входят адреса, определенные с помощью протокола обнаружения соседей (ND) для IPv6, как указано в RFC 2461. Для получения дополнительной информации см. http://www.ietf.org/rfc/rfc2461.txt.

Функция GetIpNetEntry2 извлекает один соседний IP-адрес и возвращает эти сведения в MIB_IPNET_ROW2 структуре.

Обратите внимание, что файл заголовка Netioapi.h автоматически включается в файл заголовка Iphlpapi.h . Файл заголовка Netioapi.h никогда не следует использовать напрямую.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть netioapi.h (включая Iphlpapi.h)

См. также раздел

CreateIpNetEntry2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_TABLE2

SOCKADDR_INET