Freigeben über


MB-Unterstützung für rohe IP-Paketverarbeitung

MB-Miniporttreiber, die Raw-IP-Paketframes in ihrem Sende-/Empfangsdatenpfad unterstützen, sollten die folgenden Richtlinien beachten:

Netzwerkpufferlisten (NBL)-Flags für die Verarbeitung von RAW-IP-Paketen

  • Für IPv4-Pakete:

    Das NblFlags-Element der NET_BUFFER_LIST-Struktur muss auf NDIS_NBL_FLAGS_IS_IPV4 festgelegt werden.

    Das NetBufferListFrameType-Element der NET_BUFFER_LIST-Struktur muss in der Netzwerkbytereihenfolge auf 0x0800 (Ethertype IPv4) festgelegt werden.

  • Für IPv6-Pakete:

    Das NblFlags-Element der NET_BUFFER_LIST Struktur muss auf NDIS_NBL_FLAGS_IS_IPV6 festgelegt werden.

    Das NetBufferListFrameType-Element der NET_BUFFER_LIST-Struktur muss in Netzwerkbytereihenfolge auf 0x86dd (Ethertype IPv6) festgelegt werden.

Miniport-Treiber können das NdisSetNblFlag-Makro verwenden, um Flags in der Netzpufferliste festzulegen. In der folgenden Zeile wird veranschaulicht, wie IPv4-Paketkennzeichnung in der Netpufferliste festgelegt wird:

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);

Miniporttreiber können die NET_BUFFER_LIST_INFO verwenden, um Informationen in einer Netzpufferliste abzurufen und festzulegen. In der folgenden Zeile wird veranschaulicht, wie Sie den NetBufferListFrameType OOB in der Netzwerkpufferliste für IPV4-Pakete ändern:

Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;

Pfadverarbeitung senden

Der MB-Dienst legt diese Flags in der NBL fest, bevor die Liste an den Miniporttreiber zur Übermittlung über das Netzwerk übergeben wird. Der Miniporttreiber kann die Flags in der Eingabe-NBL überprüfen.

Empfangen von Pfadverarbeitung

Miniporttreiber sollten Flags in der NBL festlegen, bevor die NBL an den MB-Dienst für empfangene Pakete übergeben wird.

Wenn Ihr Miniporttreiber die Raw IP-Paketverarbeitung während der Entwicklungsphase des Treibers implementiert, aber dennoch DHCP-Serverspoofing aktiviert ist (EnableDhcp = 1), sollte Ihr Miniporttreiber Folgendes sicherstellen:

  • Die Hardwareadresse und die in der DHCP-Antwort des Miniporttreibers festgelegte Länge sollten mit den Werten der Elemente "CurrentMacAddress" und "MacAddressLength" übereinstimmen, die vom Miniporttreiber in der NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES-Struktur angegeben sind.

  • Die Transaktions-ID (das xid-Mitglied ) der DHCP-Antwort des Miniporttreibers sollte genau mit der Transaktions-ID übereinstimmen, die in der DHCP-Anforderungsnachricht vom Client festgelegt ist.