次の方法で共有


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 と正確に一致している必要があります。