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) 。 Protocol 的编码与 IP 标头中“协议”字段的编码相同。 如果 Protocol 设置为零,则 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 还是出站 SA,如下所示:

OFFLOAD_INBOUND_SA

指定入站 SA。

OFFLOAD_OUTBOUND_SA

指定出站 SA。

NumSAs

SecAssoc 数组中的元素数。 数组中的每个元素都是 OFFLOAD_SECURITY_ASSOCIATION 结构。

SecAssoc[OFFLOAD_MAX_SAS]

一个长度可变的数组,其中包含有关适用于 SA (AH 或 ESP) 的 Internet 协议安全 (IPsec) 操作的信息。 每个 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 的键。 如果机密性 (加密/解密) 算法和完整性 (身份验证) 算法由 的 ConfAlgoIntegrityAlgo 成员指定 OFFLOAD_SECURITY_ASSOCIATION 结构中, KeyMat 中的缓冲区首先包含确认算法的密钥信息,紧接着包含完整性算法的关键信息。

KeyMat 缓冲区中每个密钥的长度由 algoKeylen 在指定机密性或完整性算法的OFFLOAD_ALGO_INFO结构中指定。 (OFFLOAD_ALGO_INFO 结构是OFFLOAD_SECURITY_ASSOCIATION结构的成员。)

注解

OID_TCP_TASK_IPSEC_ADD_SA OID 中使用 OFFLOAD_IPSEC_ADD_SA 结构。

要求

要求
Header ntddndis.h (包括 Ndis.h)

另请参阅

NDIS_IPSEC_PACKET_INFO

OFFLOAD_ALGO_INFO

OFFLOAD_SECURITY_ASSOCIATION

OID_TCP_TASK_IPSEC_ADD_SA

OID_TCP_TASK_IPSEC_DELETE_SA