次の方法で共有


MB 生の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 バッファーの一覧で情報を取得および設定する 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 と正確に一致する必要があります。