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