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


функция обратного вызова PMGM_RPF_CALLBACK (mgm.h)

Обратный вызов PMGM_RPF_CALLBACK — это вызов протокола маршрутизации, чтобы определить, был ли данный пакет получен в правильном интерфейсе.

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

Синтаксис

PMGM_RPF_CALLBACK PmgmRpfCallback;

DWORD PmgmRpfCallback(
  [in]      DWORD dwSourceAddr,
  [in]      DWORD dwSourceMask,
  [in]      DWORD dwGroupAddr,
  [in]      DWORD dwGroupMask,
  [in, out] PDWORD pdwInIfIndex,
  [in, out] PDWORD pdwInIfNextHopAddr,
  [in, out] PDWORD pdwUpStreamNbr,
  [in]      DWORD dwHdrSize,
  [in]      PBYTE pbPacketHdr,
  [in, out] PBYTE pbRoute
)
{...}

Параметры

[in] dwSourceAddr

Указывает исходный адрес, с которого были получены данные многоадресной рассылки. Ноль означает, что данные получены из всех источников (приемник с подстановочными знаками для группы); В противном случае значение dwSourceAddr является IP-адресом исходной или исходной сети.

Чтобы указать диапазон исходных адресов, диспетчер групп многоадресной рассылки указывает исходную сеть с помощью dwSourceAddr и маску подсети с помощью dwSourceMask.

[in] dwSourceMask

Указывает маску подсети, соответствующую dwSourceAddr. Параметры dwSourceAddr и dwSourceMask используются вместе для определения диапазона источников, из которых следует получать данные многоадресной рассылки.

Диспетчер групп многоадресной рассылки задает ноль для этого параметра, если он также указал ноль для dwSourceAddr (приемник с подстановочными знаками).

[in] dwGroupAddr

Указывает группу многоадресной рассылки, для которой предназначены данные. Ноль означает, что получены все группы (получатель с подстановочными знаками); В противном случае значение dwGroupAddr является IP-адресом группы.

Чтобы указать диапазон адресов групп, диспетчер групп многоадресной рассылки указывает адрес группы с помощью dwGroupAddr и маску подсети с помощью dwGroupMask.

[in] dwGroupMask

Указывает маску подсети, соответствующую dwGroupAddr. Параметры dwGroupAddr и dwGroupMask используются вместе для определения диапазона групп многоадресной рассылки.

Диспетчер групп многоадресной рассылки задает ноль для этого параметра, если он также указал ноль для dwGroupAddr (приемник с подстановочными знаками).

[in, out] pdwInIfIndex

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

В выходных данных pdwInIfIndex указывает на расположение памяти размера DWORD, содержащее индекс интерфейса, в котором протокол ожидает получать пакеты. Индекс интерфейса может отличаться в выходных данных от индекса, указанного во входных данных.

[in, out] pdwInIfNextHopAddr

На входных данных pdwInIfNextHopAddr указывает адрес следующего прыжка, соответствующий индексу, заданному dwIfIndex.

Параметры dwIfIndex и dwIfNextHopIPAddr однозначно определяют следующий прыжок в интерфейсах типа "точка — многоточечная". Интерфейс типа "точка — многоточечная" — это подключение, при котором один интерфейс подключается к нескольким сетям. Примеры интерфейсов типа "точка — многоточечная" включают интерфейсы NBMA и внутренний интерфейс, к которому подключаются все клиенты с телефонным подключением.

Для широковещательных интерфейсов (таких как интерфейсы Ethernet) или интерфейсов типа "точка — точка", которые идентифицируются только по значению dwIfIndex, укажите ноль.

В выходных данных pdwInIfNextHopAddr указывает на следующий прыжок, соответствующий pdwInIfIndex.

[in, out] pdwUpStreamNbr

На входных данных pdwUpStreamNbr указывает на значение DWORD, указывающее непосредственное вышестоящий соседа по отношению к источнику (источник находится в многоадресном представлении таблицы маршрутизации).

В выходных данных pdwUpStreamNbr может быть изменен протоколом. Этот параметр предназначен только для информационных целей.

[in] dwHdrSize

Задает в байтах размер буфера, на который указывает pbPacketHdr.

[in] pbPacketHdr

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

[in, out] pbRoute

На входных данных pbRoute указывает на буфер, содержащий маршрут к источнику. Буфер содержит структуру RTM_DEST_INFO .

На выходе pbRoute указывает на буфер, содержащий маршрут, используемый протоколом для определения интерфейса к источнику.

Возвращаемое значение

RRAS не ожидает, что приложение вернет определенное значение; Любое возвращаемое значение игнорируется RRAS.

Комментарии

Этот обратный вызов вызывается при создании MFE. MFEs создаются при получении данных из нового источника многоадресной рассылки или, предназначенных для новой группы.

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

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

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header mgm.h