estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO (ndis.h)

A estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO especifica informações usadas no descarregamento de tarefas de IPsec (segurança de protocolo internet) do transporte TCP/IP para um driver de miniport.

Sintaxe

typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO {
  union {
    struct {
      NDIS_HANDLE OffloadHandle;
    } Transmit;
    struct {
      USHORT SaDeleteReq : 1;
      USHORT CryptoDone : 1;
      USHORT NextCryptoDone : 1;
      USHORT Pad : 13;
      USHORT CryptoStatus;
    } Receive;
  };
} NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO;

Membros

Transmit

Uma estrutura que contém os seguintes membros:

Transmit.OffloadHandle

Um identificador para a SA (associação de segurança de saída) para um pacote que tem apenas uma carga IPsec, independentemente de essa carga ser para uma conexão de transporte (de ponta a ponta) ou uma conexão de túnel.

Receive

Uma estrutura que contém os seguintes membros:

Receive.SaDeleteReq

Um valor USHORT que, quando definido, indica que o transporte TCP/IP deve emitir o OID_TCP_TASK_IPSEC_DELETE_SA OID uma vez para excluir a SA de entrada que o pacote foi recebido e, mais uma vez, para excluir a SA de saída que corresponde à SA de entrada excluída. A NIC (cartão de interface de rede) não deve remover nenhum desses SAs antes de receber a solicitação de OID_TCP_TASK_IPSEC_DELETE_SA correspondente.

Receive.CryptoDone

Um valor USHORT que, quando definido, indica que uma NIC executou a verificação IPsec em pelo menos uma carga IPsec no pacote de recebimento. Quando esse valor é limpo, ele indica que a NIC não executou a verificação IPsec no pacote.

Receive.NextCryptoDone

Um valor USHORT que, quando definido, indica que uma NIC executou a verificação IPsec nas partes de túnel e transporte do pacote de recebimento. CryptoDone também deve ser definido nesse caso. NextCryptoDone será definido somente se um pacote tiver cargas IPsec de túnel e transporte; caso contrário, NextCryptoDone será definido como zero.

Receive.Pad

Reservado para NDIS.

Receive.CryptoStatus

O resultado da verificação IPsec de que uma NIC foi executada em um pacote de recebimento. Esse resultado pode ser descrito como um dos seguintes valores:

Valor Significado
CRYPTO_SUCCESS
O pacote foi descriptografado com êxito, se necessário, e as somas de verificação do cabeçalho de autenticação (AH), encapsulando somas de verificação esp (conteúdo de segurança) ou ambas as somas de verificação no pacote foram validadas.
CRYPTO_GENERIC_ERROR
O pacote falhou no marcar IPsec por um motivo não especificado.
CRYPTO_TRANSPORT_AH_AUTH_FAILED
A soma de verificação ah da parte de transporte do pacote era inválida.
CRYPTO_TRANSPORT_ESP_AUTH_FAILED
A soma de verificação esp para a parte de transporte do pacote era inválida.
CRYPTO_TUNNEL_AH_AUTH_FAILED
A soma de verificação ah da parte do túnel do pacote era inválida.
CRYPTO_TUNNEL_ESP_AUTH_FAILED
A soma de verificação ESP da parte do túnel do pacote era inválida.
CRYPTO_INVALID_PACKET_SYNTAX
O comprimento do pacote de recebimento é inválido.
CRYPTO_INVALID_PROTOCOL
Os protocolos IPsec especificados na SA em que o pacote foi recebido não correspondem aos protocolos IPsec encontrados no pacote. Por exemplo, esse erro ocorrerá se a SA na qual o pacote foi recebido especificar o protocolo AH, mas o pacote contiver apenas um cabeçalho ESP.

Comentários

Antes que o transporte TCP/IP passe um pacote de envio no qual uma NIC executará tarefas IPsec no driver de miniporto da NIC, o transporte atualiza as informações do IPsec na estrutura de NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO associada à estrutura NET_BUFFER_LIST .

Especificamente, o transporte TCP/IP fornece um valor para o membro OffloadHandle na estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO . O valor OffloadHandle especifica o identificador para a SA (associação de segurança de saída) para um pacote que tem apenas uma carga IPsec, independentemente de essa carga ser para uma associação de segurança de transporte (de ponta a ponta) ou uma associação de segurança de túnel. O valor OffloadHandle fornecido na estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO tem o mesmo valor que o valor OffloadHandle fornecido pelo transporte TCP/IP ao definir OID_TCP_TASK_IPSEC_ADD_SA para solicitar que o driver de miniporte adicione a SA de saída à NIC.

Antes que um driver de miniporte indique um pacote de recebimento que tenha uma ou mais cargas IPsec, o driver atualiza a estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO associada à estrutura NET_BUFFER_LIST da seguinte maneira:

  • Se a NIC executou verificações IPsec em pelo menos uma carga IPsec no pacote, o driver de miniporto define o membro CryptoDone e indica os resultados dos testes de validação de soma de verificação especificando o valor apropriado no membro CryptoStatus .
  • Se a NIC executou a verificação IPsec nas partes de túnel e transporte de um pacote de recebimento, o driver de miniporto também define o membro NextCryptoDone . NextCryptoDone será definido somente se um pacote tiver cargas IPsec de túnel e transporte; caso contrário, NextCryptoDone será definido como zero.
  • Se a NIC não executou verificações IPsec no pacote, o driver de miniport não define CryptoDone ou NextCryptoDone e não fornece um valor CryptoStatus .
Para criar espaço para outra SA na NIC, o driver de miniporte da NIC pode definir SaDeleteReq na estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO para um pacote de recebimento. O transporte TCP/IP emite posteriormente OID_TCP_TASK_IPSEC_DELETE_SA uma vez para excluir a SA de entrada que o pacote foi recebido e, mais uma vez, excluir a SA de saída que corresponde à SA de entrada excluída. A NIC não deve remover nenhum desses SAs antes de receber a solicitação de OID_TCP_TASK_IPSEC_DELETE_SA correspondente. O driver de miniporte da NIC pode definir SaDeleteReq independentemente de CryptoDone .

Para definir e obter as informações do IPsec, use o índice IPsecOffloadV1NetBufferListInfo com a macro NET_BUFFER_LIST_INFO . NET_BUFFER_LIST_INFO retorna a estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO .

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0. Para o NDIS 6.1 e posterior, use NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO.
Cabeçalho ndis.h (inclua Ndis.h)

Confira também

NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

OID_TCP_TASK_IPSEC_ADD_SA

OID_TCP_TASK_IPSEC_DELETE_SA