Поделиться через


Поддержка обработки необработанных IP-пакетов в МБ

Драйверы мини-порта MB, поддерживающие кадры необработанных IP-пакетов в пути передачи и получения данных, должны соблюдать следующие рекомендации.

Флаги списка net buffer list (NBL) для обработки НЕОБработанных IP-пакетов

  • Для пакетов IPv4:

    Член NblFlags структуры NET_BUFFER_LIST должен иметь значение NDIS_NBL_FLAGS_IS_IPV4.

    Элемент NetBufferListFrameType структуры NET_BUFFER_LIST должен иметь значение 0x0800 (Ethertype IPv4) в сетевом порядке байтов.

  • Для пакетов IPv6:

    Член NblFlags структуры NET_BUFFER_LIST должен иметь значение NDIS_NBL_FLAGS_IS_IPV6.

    Элемент NetBufferListFrameType структуры NET_BUFFER_LIST должен иметь значение 0x86dd (Ethertype IPv6) в сетевом порядке байтов.

Драйверы мини-портов могут использовать макрос NdisSetNblFlag для установки флагов в списке чистых буферов. В следующей строке показано, как задать флаг пакета IPv4 в списке чистого буфера:

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);

Драйверы мини-портов могут использовать NET_BUFFER_LIST_INFO для получения и задания сведений в списке чистого буфера. В следующей строке показано, как изменить OOB-объект NetBufferListFrameType в списке сетевого буфера для пакетов IPV4:

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

Обработка пути отправки

Служба MB установит эти флаги в NBL перед передачей списка драйверу мини-порта для отправки по сети. Драйвер мини-порта может проверить флаги во входном NBL.

Обработка пути получения

Драйверы miniport должны устанавливать флаги в NBL перед передачей NBL в службу MB для полученных пакетов.

Если драйвер мини-порта реализует необработанную обработку IP-пакетов на этапе разработки драйвера, но по-прежнему включен спуфинг DHCP-сервера (EnableDhcp = 1), драйвер минипорта должен обеспечить следующее:

  • Аппаратный адрес и его длина, заданные в ответе DHCP от драйвера мини-порта, должны соответствовать значениям членов CurrentMacAddress и MacAddressLength , заданным драйвером miniport в структуре NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

  • Идентификатор транзакции (член xid ) ответа DHCP от драйвера мини-порта должен точно соответствовать идентификатору транзакции, заданному в сообщении DHCP-запроса от клиента.