OFFLOAD_IPSEC_ADD_UDPESP_SA 结构 (ntddndis.h)
OFFLOAD_IPSEC_ADD_UDPESP_SA 结构包含微型端口驱动程序为 UDP 封装的 ESP 数据包添加到 NIC 的每个安全关联 (SA) 的信息。
语法
typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA {
IPAddr SrcAddr;
IPMask SrcMask;
IPAddr DstAddr;
IPMask DstMask;
ULONG Protocol;
USHORT SrcPort;
USHORT DstPort;
IPAddr SrcTunnelAddr;
IPAddr DstTunnelAddr;
USHORT Flags;
SHORT NumSAs;
OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
HANDLE OffloadHandle;
OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
HANDLE EncapTypeEntryOffldHandle;
ULONG KeyLen;
UCHAR KeyMat[1];
} OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA;
成员
SrcAddr
源主机的 IP 地址 () 发送数据包的主机。
SrcMask
源 IP 地址的子网掩码。
DstAddr
目标主机的 IP 地址 (接收数据包的主机) 。
DstMask
目标 IP 地址的子网掩码。
Protocol
IP 协议。 Protocol 的编码与 IP 标头中“协议”字段的编码相同。 该值应为 11 (指定 UDP 的十六进制) 。
SrcPort
源 TCP 或 UDP 端口。 如果 SrcPort 设置为零,则 SA 将应用于任何源 TCP/UDP 端口。
DstPort
目标 TCP 或 UDP 端口。 如果 DestPort 设置为零,则 SA 适用于任何源 TCP/UDP 端口。
SrcTunnelAddr
隧道的源终结点(例如连接器)的 IP 地址。 微型端口驱动程序使用
SrcTunnelAddr 作为 SA 上发送的数据包的隧道 IP 标头的源地址。
SrcTunnelAddr 仅为应用于数据包的隧道部分的 SA 指定。
对于应用于数据包的传输部分的 SA,SrcTunnelAddr 设置为零。
DstTunnelAddr
隧道的目标终结点(例如连接器)的 IP 地址。 微型端口驱动程序使用 DestTunnelAddr 作为 SA 上发送的数据包的隧道 IP 标头的目标地址。 DestTunnelAddr 仅为应用于数据包的隧道部分的 SA 指定。 对于应用于数据包的传输部分的 SA,DestTunnelAddr 设置为零。
Flags
一个位掩码,指示要添加的 SA 是入站 SA 还是出站 SA,如下所示:
OFFLOAD_INBOUND_SA
指定入站 SA。
OFFLOAD_OUTBOUND_SA
指定出站 SA。
NumSAs
SecAssoc 数组中的元素数。 数组中的每个元素都是 OFFLOAD_SECURITY_ASSOCIATION 结构。
SecAssoc[OFFLOAD_MAX_SAS]
一个长度可变的数组,包含有关 INTERNET 协议安全 (IPsec) 操作的信息, (AH 或 ESP) SA。 每个 IPsec 操作的信息的格式设置为OFFLOAD_SECURITY_ASSOCIATION结构。
TCP/IP 传输指定 SecAssoc 缓冲区中的一个或两个OFFLOAD_SECURITY_ASSOCIATION结构。 每个OFFLOAD_SECURITY_ASSOCIATION结构都指示使用结构中指定的 SA 的操作类型(身份验证或加密/解密)。 数组中OFFLOAD_SECURITY_ASSOCIATION结构的顺序指示微型端口驱动程序应为每个 SA 执行操作的顺序。 仅支持一种操作组合:加密/解密 (ESP) 后跟身份验证 (AH) 。
OffloadHandle
新创建的 SA 的句柄。 微型端口驱动程序在完成之前提供此句柄
OID_TCP_TASK_IPSEC_ADD_SA 请求。
TCP/IP 传输必须在 NDIS_IPSEC_PACKET_INFO 结构中指定此句柄,然后才能将发送数据包传递到微型端口驱动程序。 使用 删除 SA 时,TCP/IP 传输还必须指定此句柄 OID_TCP_TASK_IPSEC_DELETE_SA 请求。
EncapTypeEntry
分析程序条目的 UDP-ESP 封装类型和目标端口。 此信息的格式设置为 OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY 结构。
EncapTypeEntryOffldHandle
当标志= OFFLOAD_INBOUND_SA和 EncapTypeEntryOffldHandle 为 NULL 时,微型端口驱动程序应检查 EncapTypeEntry 指定的分析程序条目是否在 NIC 的分析程序条目列表中。 如果不是,微型端口驱动程序应使用 EncapTypeEntry 中指定的封装类型和目标端口创建分析程序条目,将分析程序条目添加到分析程序条目列表,并卸载指定的 SA。 微型端口驱动程序应在 EncapTypeEntryOffldHandle 中返回一个句柄,用于标识新创建分析程序条目。 如果指定的分析程序条目已位于分析程序条目列表中,微型端口应仅返回 EncapTypeEntryOffldHandle 中现有分析程序条目的句柄。
当 标志= OFFLOAD_INBOUND_SA 且 EncapTypeEntryOffldHandle 为非 NULL 时, EncapTypeEntryOffldHandle 包含已位于 NIC 分析程序条目列表中的分析程序条目的句柄。 在这种情况下,微型端口驱动程序应只是卸载指定的 SA。
当 Flags= OFFLOAD_OUTBOUND_SA时,微型端口驱动程序应忽略 EncapTypeEntryOffldHandle 参数。
KeyLen
KeyMat 中缓冲区的长度(以字节为单位)。
KeyMat[1]
一个长度可变的数组,其中包含在 SecAssoc 中指定的 SA 的键。 如果机密性 (加密/解密) 算法和完整性 (身份验证) 算法由 的 ConfAlgo 和 IntegrityAlgo 指定 OFFLOAD_SECURITY_ASSOCIATION 结构中, KeyMat 上的缓冲区首先包含确认算法的密钥信息,紧跟完整性算法的密钥信息。
KeyMat 缓冲区中每个密钥的长度由 algoKeyLen 在指定机密性或完整性算法的OFFLOAD_ALGO_INFO结构中指定。 (OFFLOAD_ALGO_INFO 结构是OFFLOAD_SECURITY_ASSOCIATION结构的成员。)
注解
OFFLOAD_IPSEC_ADD_UDPESP_SA 结构与 OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 老。
请注意,OFFLOAD_IPSEC_ADD_UDPESP_SA结构与 OID_TCP_TASK_IPSEC_ADD_SA 请求中使用的 OFFLOAD_IPSEC_ADD_SA 结构几乎完全相同。 唯一的区别是OFFLOAD_IPSEC_ADD_UDPESP_SA结构包含 EncapTypeEntry 和 EncapTypeEntryOffldHandle 成员。
要求
要求 | 值 |
---|---|
Header | ntddndis.h (包括 Ndis.h) |