Compartilhar via


Suporte para processamento de pacotes IP brutos MB

Os drivers de miniport de MB que dão suporte a quadros de pacote IP bruto no caminho de dados de envio/recebimento devem observar as seguintes diretrizes:

Flags NBL (lista de buffers de rede) para processamento de pacote IP cru

  • Para pacotes IPv4:

    O membro NblFlags da estrutura de NET_BUFFER_LIST deve ser definido como NDIS_NBL_FLAGS_IS_IPV4.

    O membro NetBufferListFrameType da estrutura NET_BUFFER_LIST deve ser configurado como 0x0800 (Ethertype IPv4) em ordem de bytes de rede.

  • Para pacotes IPv6:

    O membro NblFlags da estrutura de NET_BUFFER_LIST deve ser definido como NDIS_NBL_FLAGS_IS_IPV6.

    O membro NetBufferListFrameType da estrutura NET_BUFFER_LIST deve ser definido como 0x86dd (Ethertype IPv6) em ordem de byte de rede.

Os drivers de miniport podem usar a macro NdisSetNblFlag para definir sinalizadores na lista de buffers da rede. A linha a seguir demonstra como definir o sinalizador de pacote IPv4 na lista de buffers de rede:

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);

Os drivers de miniport podem usar o NET_BUFFER_LIST_INFO para obter e definir informações em uma lista de buffers de rede. A linha a seguir demonstra como modificar o OOB NetBufferListFrameType na lista de buffers de rede para pacotes IPV4:

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

Processamento de caminho de envio

O Serviço MB definirá esses sinalizadores na NBL antes de passar a lista para o miniport driver, que será enviada pela rede. O driver miniport pode verificar os flags no NBL de entrada.

Processamento do Caminho de Recepção

Os drivers de miniporto devem definir sinalizadores no NBL antes de enviar o NBL para o Serviço MB, para pacotes que foram recebidos.

Se o driver de miniporto implementar o processamento de pacotes IP brutos durante a fase de desenvolvimento do driver, mas ainda tiver o spoofing de servidor DHCP habilitado (EnableDhcp = 1), o driver de miniporto deverá garantir o seguinte:

  • O endereço de hardware e seu comprimento na resposta DHCP do driver de miniporto devem corresponder aos valores dos membros CurrentMacAddress e MacAddressLength especificados pelo driver de miniporto na estrutura NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

  • A ID da transação (o membro xid ) da resposta DHCP do driver de miniporto deve corresponder exatamente à ID da transação definida na mensagem de solicitação DHCP do cliente.