OFFLOAD_IPSEC_ADD_UDPESP_SA结构(ntddndis.h)
OFFLOAD_IPSEC_ADD_UDPESP_SA结构包含每个安全关联(SA)的信息,微型端口驱动程序为 UDP 封装的 ESP 数据包添加到 NIC。
语法
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 协议。 协议 的编码与 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 的位掩码,如下所示:
OFFLOAD_INBOUND_SA
指定入站 SA。
OFFLOAD_OUTBOUND_SA
指定出站 SA。
NumSAs
SecAssoc 数组中的元素数。 数组中的每个元素都是 OFFLOAD_SECURITY_ASSOCIATION 结构。
SecAssoc[OFFLOAD_MAX_SAS]
一个可变长度数组,其中包含有关 SA 的 Internet 协议安全性(IPsec)作(AH 或 ESP)的信息。 每个 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中指定的封装类型和目标端口创建分析程序条目,将分析器条目添加到分析器条目列表,并卸载指定的 CA。 微型端口驱动程序应返回 EncapTypeEntryOffldHandle 中标识新创建分析程序条目的句柄。 如果指定的分析程序条目已在分析器条目列表中,则微型端口应仅返回现有分析程序条目的 EncapTypeEntryOffldHandle 中的句柄。
当 标志= OFFLOAD_INBOUND_SA 和 EncapTypeEntryOffldHandle 为非NULL时,EncapTypeEntryOffldHandle 包含已位于 NIC 分析程序条目列表中的分析程序条目的句柄。 在这种情况下,微型端口驱动程序应只卸载指定的 CA。
当 标志= OFFLOAD_OUTBOUND_SA时,微型端口驱动程序应忽略 EncapTypeEntryOffldHandle 参数。
KeyLen
KeyMat处缓冲区的长度(以字节为单位)。
KeyMat[1]
一个可变长度数组,其中包含在 SecAssoc指定的 SA 的键。 如果机密性(加密/解密)算法和完整性(身份验证)算法均由 ConfAlgo 和 IntegrityAlgo 指定 OFFLOAD_SECURITY_ASSOCIATION 结构,KeyMat 的缓冲区首先包含确认算法的关键信息,紧接着是完整性算法的关键信息。
KeyMat 缓冲区中每个密钥的长度由指定机密性或完整性算法的 OFFLOAD_ALGO_INFO 结构中的 algoKeyLen 指定。 (OFFLOAD_ALGO_INFO结构是OFFLOAD_SECURITY_ASSOCIATION结构的成员。
言论
OFFLOAD_IPSEC_ADD_UDPESP_SA结构与 OID_TCP_TASK_IPSEC_ADD_UDPESP_SA OID。
请注意,OFFLOAD_IPSEC_ADD_UDPESP_SA结构与 OID_TCP_TASK_IPSEC_ADD_SA 请求中使用的 OFFLOAD_IPSEC_ADD_SA 结构几乎相同。 唯一的区别是,OFFLOAD_IPSEC_ADD_UDPESP_SA结构包含 EncapTypeEntry 和 EncapTypeEntryOffldHandle 成员。
要求
要求 | 价值 |
---|---|
标头 | ntddndis.h (include Ndis.h) |