PMGM_RPF_CALLBACK
コールバックシグネチャ
DWORD PMGM_RPF_CALLBACK(
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
DWORD* pdwInIfIndex,
DWORD* pdwInIfNextHopAddr,
DWORD* pdwUpStreamNbr,
DWORD dwHdrSize,
BYTE* pbPacketHdr,
BYTE* pbRoute
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| dwSourceAddr | DWORD | マルチキャストデータの受信元となるソースアドレスを指定します。ゼロは、すべてのソースからデータを受信すること (グループに対するワイルドカードレシーバー) を示します。それ以外の場合、dwSourceAddr の値はソースまたはソースネットワークの IP アドレスです。 ソースアドレスの範囲を指定するには、マルチキャストグループマネージャーは dwSourceAddr でソースネットワークを指定し、dwSourceMask でサブネットマスクを指定します。 |
| dwSourceMask | DWORD | dwSourceAddr に対応するサブネットマスクを指定します。dwSourceAddr パラメーターと dwSourceMask パラメーターは、マルチキャストデータを受信するソースの範囲を定義するために組み合わせて使用されます。 dwSourceAddr にゼロを指定した場合 (ワイルドカードレシーバー)、マルチキャストグループマネージャーはこのパラメーターにもゼロを指定します。 |
| dwGroupAddr | DWORD | データの宛先となるマルチキャストグループを指定します。ゼロは、すべてのグループを受信すること (ワイルドカードレシーバー) を示します。それ以外の場合、dwGroupAddr の値はグループの IP アドレスです。 グループアドレスの範囲を指定するには、マルチキャストグループマネージャーは dwGroupAddr でグループアドレスを指定し、dwGroupMask でサブネットマスクを指定します。 |
| dwGroupMask | DWORD | dwGroupAddr に対応するサブネットマスクを指定します。dwGroupAddr パラメーターと dwGroupMask パラメーターは、マルチキャストグループの範囲を定義するために組み合わせて使用されます。 dwGroupAddr にゼロを指定した場合 (ワイルドカードレシーバー)、マルチキャストグループマネージャーはこのパラメーターにもゼロを指定します。 |
| pdwInIfIndex | DWORD* | 入力時は、ルーティングテーブルのマルチキャストビューに基づいて、ソースからのデータを受信すると想定されるインターフェイスのインデックスを格納した DWORD サイズのメモリ位置へのポインターです。 出力時は、pdwInIfIndex は、プロトコルがパケットを受信すると想定するインターフェイスのインデックスを格納した DWORD サイズのメモリ位置を指します。出力時のインターフェイスインデックスは、入力時に指定されたインデックスと異なる場合があります。 |
| pdwInIfNextHopAddr | DWORD* | 入力時は、pdwInIfNextHopAddr は dwIfIndex で指定されたインデックスに対応するネクストホップのアドレスを指定します。 dwIfIndex パラメーターと dwIfNextHopIPAddr パラメーターは、ポイントツーマルチポイントインターフェイス上のネクストホップを一意に識別します。ポイントツーマルチポイントインターフェイスとは、1 つのインターフェイスが複数のネットワークに接続する接続形態です。ポイントツーマルチポイントインターフェイスの例としては、非ブロードキャストマルチアクセス (NBMA) インターフェイスや、すべてのダイヤルアップクライアントが接続する内部インターフェイスが挙げられます。 dwIfIndex の値だけで識別されるブロードキャストインターフェイス (イーサネットインターフェイスなど) やポイントツーポイントインターフェイスの場合は、ゼロを指定します。 出力時は、pdwInIfNextHopAddr は pdwInIfIndex に対応するネクストホップを指します。 |
| pdwUpStreamNbr | DWORD* | 入力時は、pdwUpStreamNbr は、ソースへ向かう直近の上流ネイバーを指定する DWORD 値を指します (ソースはルーティングテーブルのマルチキャストビューで検索されます)。 出力時は、pdwUpStreamNbr がプロトコルによって変更されている場合があります。このパラメーターは情報提供のみを目的としています。 |
| dwHdrSize | DWORD | pbPacketHdr が指すバッファーのサイズをバイト単位で指定します。 |
| pbPacketHdr | BYTE* | IP オプションを含むパケットの IP ヘッダーと、データの断片を格納したバッファーへのポインター。このパラメーターは、パケットヘッダーの内容を調べるプロトコルで使用されます。 |
| pbRoute | BYTE* | 入力時は、pbRoute はソースへ向かうルートを格納したバッファーを指します。このバッファーには RTM_DEST_INFO 構造体が格納されます。 出力時は、pbRoute は、プロトコルがソースへ向かうインターフェイスを判定するために使用したルートを格納したバッファーを指します。 |
公式ドキュメント
PMGM_RPF_CALLBACK コールバックは、指定されたパケットが正しいインターフェイスで受信されたかどうかを判定するために、ルーティングプロトコルを呼び出すものです。
このコールバックは、新しいソースからのパケット、または新しいグループ宛てのパケットを受信したときに呼び出されます。マルチキャストグループマネージャーは、ソースへ向かう受信インターフェイスを所有するルーティングプロトコルに対して、このコールバックを呼び出します。
戻り値
RRAS はアプリケーションが特定の値を返すことを想定していません。返された値は RRAS によって無視されます。
解説(Remarks)
このコールバックは、MFE が作成されるときに呼び出されます。MFE は、新しいマルチキャストソースからのデータ、または新しいグループ宛てのデータを受信したときに作成されます。
マルチキャストグループマネージャーは、ソースへ向かう受信インターフェイスを所有するルーティングプロトコルに対して、このコールバックを呼び出します。マルチキャストグループマネージャーは、ルーティングテーブルのマルチキャストビューでマルチキャストデータのソースを検索することによって、インターフェイスを判定します。このインターフェイスは、データが実際に受信されたインターフェイスと常に同じとは限りません。この状況は、マルチキャストデータが誤ったインターフェイスで受信された場合に発生します。
このコールバックが呼び出されたとき、ルーティングプロトコルの動作上、別のインターフェイスからそのグループのデータを受信する必要がある場合は、ルーティングプロトコルは受信インターフェイスを変更できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)