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 (ワイルドカード レシーバー) にも 0 を指定した場合、このパラメーターに 0 を指定します。
[in] dwGroupAddr
データの宛先となるマルチキャスト グループを指定します。 ゼロは、すべてのグループが受信されることを示します (ワイルドカード レシーバー)。それ以外の場合、 dwGroupAddr の値はグループの IP アドレスです。
グループ アドレスの範囲を指定するために、マルチキャスト グループ マネージャーは dwGroupAddr を使用してグループ アドレスを指定し、 dwGroupMask を使用してサブネット マスクを指定します。
[in] dwGroupMask
dwGroupAddr に対応するサブネット マスクを指定します。 dwGroupAddr パラメーターと dwGroupMask パラメーターを組み合わせて使用して、マルチキャスト グループの範囲を定義します。
マルチキャスト グループ マネージャーは、 dwGroupAddr (ワイルドカード レシーバー) にも 0 を指定した場合、このパラメーターに 0 を指定します。
[in, out] pdwInIfIndex
入力時に、ルーティング テーブルのマルチキャスト ビューに基づいて、ソースからのデータを受信する必要があるインターフェイスのインデックスを指定する DWORD サイズのメモリ位置へのポインター。
出力時に、 pdwInIfIndex は、プロトコルがパケットを受信することを想定しているインターフェイスのインデックスを含む DWORD サイズのメモリ位置を指します。 インターフェイス インデックスは、入力で指定されたインデックスからの出力で異なる場合があります。
[in, out] pdwInIfNextHopAddr
入力時に、 pdwInIfNextHopAddr は dwIfIndex で指定されたインデックスに対応する次ホップのアドレスを指定します。
dwIfIndex パラメーターと dwIfNextHopIPAddr パラメーターは、ポイント対マルチポイント インターフェイスの次ホップを一意に識別します。 ポイント対マルチポイント インターフェイスは、1 つのインターフェイスが複数のネットワークに接続する接続です。 ポイント対マルチポイント インターフェイスの例としては、非ブロードキャスト マルチ アクセス (NBMA) インターフェイスと、すべてのダイヤルアップ クライアントが接続する内部インターフェイスがあります。
ブロードキャスト インターフェイス (イーサネット インターフェイスなど) またはポイントツーポイント インターフェイスの場合は、 dwIfIndex の値のみで識別されます。0 を指定します。
出力時に、 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 |
ヘッダー | mgm.h |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示