OFFLOAD_IPSEC_ADD_SA结构(ntddndis.h)
OFFLOAD_IPSEC_ADD_SA结构包含微型端口驱动程序添加到 NIC 的每个安全关联(SA)的信息。
语法
typedef struct _OFFLOAD_IPSEC_ADD_SA {
IPAddr SrcAddr;
IPMask SrcMask;
IPAddr DestAddr;
IPMask DestMask;
ULONG Protocol;
USHORT SrcPort;
USHORT DestPort;
IPAddr SrcTunnelAddr;
IPAddr DestTunnelAddr;
USHORT Flags;
SHORT NumSAs;
OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
HANDLE OffloadHandle;
ULONG KeyLen;
UCHAR KeyMat[1];
} OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
成员
SrcAddr
源主机的 IP 地址(发送数据包的主机)。
SrcMask
源 IP 地址的子网掩码。
DestAddr
目标主机的 IP 地址(接收数据包的主机)。
DestMask
目标 IP 地址的子网掩码。
Protocol
IP 协议。 可以指定 IP 协议类型(如 TCP、UDP 或 ICMP)的任意组合。 协议 的编码与 IP 标头中的“协议”字段的编码相同。 如果 协议 设置为零,则 SA 适用于任何 IP 协议。
SrcPort
源 TCP 或 UDP 端口。 如果 SrcPort 设置为零,则 SA 将应用于任何源 TCP/UDP 端口。
DestPort
目标 TCP 或 UDP 端口。 如果 DestPort 设置为零,SA 将应用于任何源 TCP/UDP 端口。
SrcTunnelAddr
隧道的源终结点(例如连接器)的 IP 地址。 微型端口驱动程序使用
SrcTunnelAddr 作为 SA 上发送的数据包的隧道 IP 标头的源地址。
SrcTunnelAddr 仅针对应用于数据包的隧道部分的 SA 指定。
对于应用于数据包的传输部分的 SA,SrcTunnelAddr 设置为零。
DestTunnelAddr
隧道的目标终结点(例如连接器)的 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 请求。
KeyLen
KeyMat 处缓冲区的长度(以字节为单位)。
KeyMat[1]
一个可变长度数组,其中包含在 SecAssoc 中指定的 SA 的键。 如果机密性(加密/解密)算法和完整性(身份验证)算法均由 ConfAlgo 和 IntegrityAlgo 成员指定 OFFLOAD_SECURITY_ASSOCIATION 结构,KeyMat 的缓冲区首先包含确认算法的关键信息,紧接着是完整性算法的关键信息。
KeyMat 缓冲区中每个密钥的长度由指定机密性或完整性算法的 OFFLOAD_ALGO_INFO 结构中的 algoKeylen 指定。 (OFFLOAD_ALGO_INFO结构是OFFLOAD_SECURITY_ASSOCIATION结构的成员。
言论
OID_TCP_TASK_IPSEC_ADD_SA OID 中使用OFFLOAD_IPSEC_ADD_SA结构。
要求
要求 | 价值 |
---|---|
标头 | ntddndis.h (include Ndis.h) |