OFFLOAD_IPSEC_ADD_UDPESP_SA構造体 (ntddndis.h)
OFFLOAD_IPSEC_ADD_UDPESP_SA構造体には、NIC に UDP カプセル化 ESP パケットのミニポート ドライバーが追加する各セキュリティ アソシエーション (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 アドレス。 ミニポート ドライバーは、次を使用します。
srcTunnelAddr 、SA で送信されるパケットのトンネル IP ヘッダーの送信元アドレスとして されます。
srcTunnelAddr は、パケットのトンネル部分に適用される SA に対してのみ指定されます。
SrcTunnelAddr は、パケットのトランスポート部分に適用される SA に対して 0 に設定されます。
DstTunnelAddr
トンネルのコネクタなどの宛先エンドポイントの IP アドレス。 ミニポート ドライバーは、SA で送信 パケットのトンネル IP ヘッダーの宛先アドレスとして DestTunnelAddr を使用します。 DestTunnelAddr は、パケットのトンネル部分に適用される SA に対してのみ指定されます。 DestTunnelAddr は、パケットのトランスポート部分に適用される SA に対して 0 に設定されます。
Flags
追加される SA が受信 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 でバッファー内の 1 つまたは 2 つのOFFLOAD_SECURITY_ASSOCIATION構造体指定します。 各OFFLOAD_SECURITY_ASSOCIATION構造体は、操作の種類 (認証または暗号化/暗号化解除) を示します。この構造体で指定された SA が使用されます。 配列内のOFFLOAD_SECURITY_ASSOCIATION構造体の順序は、ミニポート ドライバーが各 SA の操作を実行する順序を示します。 サポートされている操作の組み合わせは、暗号化/復号化 (ESP) とそれに続く認証 (AH) の 1 つだけです。
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で指定され、パーサー エントリをパーサー エントリ リストに追加し、指定した CA をオフロードします。 ミニポート ドライバーは、新しく作成されたパーサー エントリ 識別する EncapTypeEntryOffldHandle でハンドルを返す必要があります。 指定したパーサー エントリが既にパーサー エントリ リストにある場合、ミニポートは、既存のパーサー エントリの EncapTypeEntryOffldHandle でハンドルを返す必要があります。
Flags= OFFLOAD_INBOUND_SA と EncapTypeEntryOffldHandle が nullでない場合、EncapTypeEntryOffldHandle には、NIC のパーサー エントリ リストに既にあるパーサー エントリへのハンドルが含まれます。 この場合、ミニポート ドライバーは、単に指定した CA をオフロードする必要があります。
フラグ = OFFLOAD_OUTBOUND_SA場合、ミニポート ドライバーは、EncapTypeEntryOffldHandle パラメーターを無視する必要があります。
KeyLen
KeyMat のバッファーの長さ (バイト単位)。
KeyMat[1]
SecAssoc で指定された CA のキー含む可変長配列。 機密性 (暗号化/暗号化解除) アルゴリズムと整合性 (認証) アルゴリズムの両方が、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 を含む) |