Поддержка обработки необработанных 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-запроса от клиента.