MB Raw IP パケット処理のサポート
送受信データ パスで生 IP パケット フレームをサポートする MB ミニポート ドライバーは、次のガイドラインに従う必要があります。
RAW IP パケット処理用のネット バッファー リスト (NBL) フラグ
IPv4 パケットの場合:
NET_BUFFER_LIST 構造体の NblFlags メンバーを NDIS_NBL_FLAGS_IS_IPV4 に設定する必要があります。
NET_BUFFER_LIST 構造体の NetBufferListFrameType メンバーは、ネットワークのバイト順で 0x0800 (Ethertype IPv4) に設定する必要があります。
IPv6 パケットの場合:
NET_BUFFER_LIST 構造体の NblFlags メンバーを NDIS_NBL_FLAGS_IS_IPV6 に設定する必要があります。
NET_BUFFER_LIST 構造体の NetBufferListFrameType メンバーは、ネットワークのバイト順で 0x86dd (Ethertype IPv6) に設定する必要があります。
ミニポート ドライバーは、NdisSetNblFlag マクロを使用して、ネット バッファーの一覧でフラグを設定できます。 次の行は、ネット バッファー リストで IPv4 パケット フラグを設定する方法を示しています。
NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);
ミニポート ドライバーは、NET_BUFFER_LIST_INFO を使用して、ネット バッファーリストの情報を取得および設定できます。 次の行は、IPV4 パケットの ネットワーク バッファー リストの NetBufferListFrameType OOB を変更する方法を示しています。
Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;
送信パスの処理
MB サービスは、一覧をミニポート ドライバーに渡してネットワーク経由で送信する前に、NBL でこれらのフラグを設定します。 ミニポート ドライバーは、入力 NBL のフラグを確認できます。
受信パスの処理
ミニポート ドライバーは、受信したパケットの NBL を MB サービスに渡す前に、NBL のフラグを設定する必要があります。
ミニポート ドライバーがドライバー開発フェーズ中に生 IP パケット処理を実装しているものの、DHCP サーバーのスプーフィングが有効 (EnableDhcp = 1) のままである場合、ミニポート ドライバーは次のことを確認する必要があります。
ミニポート ドライバーからの DHCP 応答で設定されているハードウェア アドレスとその長さは、NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 構造体のミニポート ドライバーによって指定された CurrentMacAddress メンバーと MacAddressLength メンバーの値に一致している必要があります。
ミニポート ドライバーからの DHCP 応答のトランザクション ID (xid メンバー) は、クライアントからの DHCP 要求メッセージで設定されたトランザクション ID と正確に一致している必要があります。