(ndis.h) NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 结构

[IPsec 任务卸载功能已弃用,不应使用。]

NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 结构指定用于将 Internet 协议安全卸载版本 2 (IPsecOV2) 任务从 TCP/IP 传输卸载到 NIC 的信息。

语法

typedef struct _NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO {
  union {
    struct {
      PVOID OffloadHandle;
    } Transmit;
    struct {
      ULONG SaDeleteReq : 1;
      ULONG CryptoDone : 1;
      ULONG NextCryptoDone : 1;
      ULONG Reserved : 13;
      ULONG CryptoStatus : 16;
    } Receive;
  };
} NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO;

成员

Transmit

包含以下成员的结构:

Transmit.OffloadHandle

出站安全关联的句柄 (SA) 传输 (端到端) 连接只有一个 IPsec 有效负载的数据包。

Receive

包含以下成员的结构:

Receive.SaDeleteReq

一个 ULONG 值,该值在设置时指示 TCP/IP 传输应发出 OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID 一次,删除已接收数据包的入站 SA,并再次删除与已删除的入站 SA 对应的出站 SA。 网络接口卡 (NIC) 在收到相应的OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA请求之前不得删除其中任一个 SA。

Receive.CryptoDone

ULONG 值,该值在设置时指示 NIC 对接收数据包中的至少一个 IPsec 有效负载执行 IPsec 检查。 清除此值时,表示 NIC 未对数据包执行 IPsec 检查。

Receive.NextCryptoDone

一个 ULONG 值,该值在设置时指示 NIC 对接收数据包的隧道和传输部分执行 IPsec 检查。 在这种情况下,还必须设置 CryptoDone。 仅当数据包同时具有隧道和传输 IPsec 有效负载时,才会设置 NextCryptoDone;否则,NextCryptoDone 设置为零。

Receive.Reserved

保留给 NDIS。

Receive.CryptoStatus

IPsec 检查 NIC 对接收数据包执行的结果。 此结果可描述为以下值之一:

CryptoStatus.CRYPTO_SUCCESS

如有必要,已成功解密数据包,身份验证标头 (AH) 校验和,封装安全有效负载 (ESP) 校验和,或者验证了数据包中的两个校验和。

CryptoStatus.CRYPTO_GENERIC_ERROR

数据包由于未指定的原因使 IPsec 检查失败。

CryptoStatus.CRYPTO_TRANSPORT_AH_AUTH_FAILED

数据包传输部分的 AH 校验和无效。

CryptoStatus.CRYPTO_TRANSPORT_ESP_AUTH_FAILED

数据包传输部分的 ESP 校验和无效。

CryptoStatus.CRYPTO_TUNNEL_AH_AUTH_FAILED

数据包的隧道部分的 AH 校验和无效。

CryptoStatus.CRYPTO_TUNNEL_ESP_AUTH_FAILED

数据包的隧道部分的 ESP 校验和无效。

CryptoStatus.CRYPTO_INVALID_PACKET_SYNTAX

接收数据包的长度无效。 例如,IP 标头中的总长度不足以包含 AH/ESP 的所有字段和标头。

CryptoStatus.CRYPTO_INVALID_PROTOCOL

在 SA 中指定的接收数据包的 IPsec 协议与数据包中找到的 IPsec 协议不匹配。 例如,如果收到数据包的 SA 指定 AH 协议,但数据包仅包含 ESP 标头,则会发生此错误。

注解

在 TCP/IP 传输将出站数据包传递到 NIC 进行卸载处理之前,传输会指定与 NET_BUFFER_LIST结构关联的 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO结构中的 IPsec 信息。

具体而言,TCP/IP 传输为 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 结构中的 OffloadHandle 成员提供值。 OffloadHandle 值指定只有一个 IPsec 有效负载的数据包的出站 SA 的句柄,而不管该有效负载是用于传输还是隧道 SA。 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 结构中提供的 OffloadHandle 值与在微型端口驱动程序成功将一组 SA 添加到 NIC 时报告给 TCP/IP 传输的 OffloadHandle 值相同。 当微型端口驱动程序响应 时,所有 SA 都已添加到 NIC OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA 请求。

在微型端口驱动程序指示具有一个或多个 IPsec 有效负载的接收数据包之前,驱动程序会在与NET_BUFFER_LIST结构关联的NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO结构中指定 IPsec 信息。

若要设置和获取 IPsec 信息,请将 IPsecOffloadV2NetBufferListInfo 索引与 NET_BUFFER_LIST_INFO 宏一起使用。 NET_BUFFER_LIST_INFO返回NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO结构。

要求

要求
最低受支持的客户端 在 NDIS 6.1 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA