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 프로토콜입니다. 프로토콜 인코딩은 IP 헤더의 프로토콜 필드와 동일합니다. 값은 UDP를 지정하는 11(16진수)이어야 합니다.
SrcPort
원본 TCP 또는 UDP 포트입니다. SrcPort가 0으로 설정된 경우 SA는 모든 원본 TCP/UDP 포트에 적용됩니다.
DstPort
대상 TCP 또는 UDP 포트입니다. DestPort가 0으로 설정된 경우 SA는 모든 원본 TCP/UDP 포트에 적용됩니다.
SrcTunnelAddr
터널의 원본 엔드포인트(예: 커넥터)의 IP 주소입니다. 미니포트 드라이버에서
SA에서 보낸 패킷의 터널 IP 헤더에 대한 원본 주소인 SrcTunnelAddr입니다.
SrcTunnelAddr 은 패킷의 터널 부분에 적용되는 SA에 대해서만 지정됩니다.
SrcTunnelAddr 은 패킷의 전송 부분에 적용되는 SA에 대해 0으로 설정됩니다.
DstTunnelAddr
터널의 대상 엔드포인트(예: 커넥터)의 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 요청.
EncapTypeEntry
파서 항목의 UDP-ESP 캡슐화 형식 및 대상 포트입니다. 이 정보는 형식으로 지정됩니다. OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY 구조체입니다.
EncapTypeEntryOffldHandle
Flags= OFFLOAD_INBOUND_SA 및 EncapTypeEntryOffldHandle이 NULL인 경우 미니포트 드라이버는 EncapTypeEntry로 지정된 파서 항목이 NIC의 파서 항목 목록에 있는지 여부를 검사 합니다. 그렇지 않은 경우 미니포트 드라이버는 EncapTypeEntry에 지정된 캡슐화 형식 및 대상 포트를 사용하여 파서 항목을 만들고 파서 항목 목록에 파서 항목을 추가하고 지정된 SA를 오프로드해야 합니다. 미니포트 드라이버는 새로 만든 파서 항목을 식별하는 EncapTypeEntryOffldHandle 에서 핸들을 반환해야 합니다. 지정된 파서 항목이 이미 파서 항목 목록에 있는 경우 미니포트는 기존 파서 항목에 대한 EncapTypeEntryOffldHandle 의 핸들을 반환해야 합니다.
Flags= OFFLOAD_INBOUND_SA 및 EncapTypeEntryOffldHandle이 NULL이 아닌 경우 EncapTypeEntryOffldHandle은 NIC의 파서 항목 목록에 이미 있는 파서 항목에 대한 핸들을 포함합니다. 이 경우 미니포트 드라이버는 지정된 SAS를 오프로드하기만 하면 됩니다.
플래그= 가 OFFLOAD_OUTBOUND_SA 미니포트 드라이버는 EncapTypeEntryOffldHandle 매개 변수를 무시해야 합니다.
KeyLen
KeyMat에서 버퍼의 길이(바이트)입니다.
KeyMat[1]
SecAssoc에 지정된 SAS에 대한 키를 포함하는 가변 길이 배열입니다. 기밀성(암호화/암호 해독) 알고리즘과 무결성(인증) 알고리즘이 모두 의 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(Ndis.h 포함) |