(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
OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈