структура 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;

Members

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 .

Ценность Meaning
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 [только классические приложения]
Header netioapi.h (include Iphlpapi.h)

См. также

CreateIpNetEntry2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_TABLE2

SOCKADDR_INET