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 헤더의 프로토콜 필드와 동일합니다. 프로토콜이 0으로 설정된 경우 SA는 모든 IP 프로토콜에 적용됩니다.

SrcPort

원본 TCP 또는 UDP 포트입니다. SrcPort가 0으로 설정된 경우 SA는 모든 원본 TCP/UDP 포트에 적용됩니다.

DestPort

대상 TCP 또는 UDP 포트입니다. DestPort가 0으로 설정된 경우 SA는 모든 원본 TCP/UDP 포트에 적용됩니다.

SrcTunnelAddr

터널의 커넥터와 같은 원본 엔드포인트의 IP 주소입니다. 미니포트 드라이버에서 사용
SrcTunnelAddr 는 SA에서 전송되는 패킷의 터널 IP 헤더에 대한 원본 주소입니다. SrcTunnelAddr 은 패킷의 터널 부분에 적용되는 SA에 대해서만 지정됩니다. SrcTunnelAddr 은 패킷의 전송 부분에 적용되는 SA에 대해 0으로 설정됩니다.

DestTunnelAddr

터널의 커넥터와 같은 대상 엔드포인트의 IP 주소입니다. 미니포트 드라이버는 SA에서 보낸 패킷의 터널 IP 헤더에 대한 대상 주소로 DestTunnelAddr 를 사용합니다. DestTunnelAddr 은 패킷의 터널 부분에 적용되는 SA에 대해서만 지정됩니다. DestTunnelAddr 은 패킷의 전송 부분에 적용되는 SA에 대해 0으로 설정됩니다.

Flags

추가되는 SA가 다음과 같이 인바운드 또는 아웃바운드 SA인지 여부를 나타내는 비트 마스크입니다.

OFFLOAD_INBOUND_SA

인바운드 SA를 지정합니다.

OFFLOAD_OUTBOUND_SA

아웃바운드 SA를 지정합니다.

NumSAs

SecAssoc 배열의 요소 수입니다. 배열의 각 요소는 입니다. OFFLOAD_SECURITY_ASSOCIATION 구조체입니다.

SecAssoc[OFFLOAD_MAX_SAS]

SA에 대한 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 구조에서 이 핸들을 지정해야 합니다. 또한 TCP/IP 전송은 를 사용하여 SA를 삭제할 때 이 핸들을 지정해야 합니다. 요청을 OID_TCP_TASK_IPSEC_DELETE_SA .

KeyLen

KeyMat 에서 버퍼의 길이(바이트)입니다.

KeyMat[1]

SecAssoc 에 지정된 SA에 대한 키를 포함하는 가변 길이 배열입니다. 기밀성(암호화/암호 해독) 알고리즘과 무결성(인증) 알고리즘이 모두 ConfAlgoIntegrityAlgo 멤버에 의해 지정된 경우 OFFLOAD_SECURITY_ASSOCIATION 구조에 따라 KeyMat 의 버퍼에는 먼저 확인 알고리즘에 대한 주요 정보가 포함되고, 그 다음에는 무결성 알고리즘에 대한 키 정보가 즉시 포함됩니다.

KeyMat의 버퍼에 있는 각 키의 길이는 기밀성 또는 무결성 알고리즘을 지정하는 OFFLOAD_ALGO_INFO 구조의 algoKeylen에 의해 지정됩니다. (OFFLOAD_ALGO_INFO 구조체는 OFFLOAD_SECURITY_ASSOCIATION 구조체의 멤버입니다.)

설명

OFFLOAD_IPSEC_ADD_SA 구조체는 OID_TCP_TASK_IPSEC_ADD_SA OID에서 사용됩니다.

요구 사항

요구 사항
헤더 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