NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体 (ndis.h)

NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体は、TCP/IP トランスポートからミニポート ドライバーにインターネット プロトコル セキュリティ (IPsec) タスクをオフロードする際に使用される情報を指定します。

構文

typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO {
  union {
    struct {
      NDIS_HANDLE OffloadHandle;
    } Transmit;
    struct {
      USHORT SaDeleteReq : 1;
      USHORT CryptoDone : 1;
      USHORT NextCryptoDone : 1;
      USHORT Pad : 13;
      USHORT CryptoStatus;
    } Receive;
  };
} NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO;

メンバー

Transmit

次のメンバーを含む 構造体。

Transmit.OffloadHandle

そのペイロードがトランスポート (エンドツーエンド) 接続用かトンネル接続用かに関係なく、IPsec ペイロードが 1 つしかないパケットの送信セキュリティ アソシエーション (SA) へのハンドル。

Receive

次のメンバーを含む 構造体。

Receive.SaDeleteReq

設定時に TCP/IP トランスポートがを発行する必要があることを示す USHORT 値 OID_TCP_TASK_IPSEC_DELETE_SA OID は、パケットが受信した受信 SA を 1 回削除し、もう一度削除された受信 SA に対応する送信 SA を削除します。 ネットワーク インターフェイス カード (NIC) は、対応するOID_TCP_TASK_IPSEC_DELETE_SA要求を受信する前に、これらの CA のいずれかを削除することはできません。

Receive.CryptoDone

設定すると、NIC が受信パケット内の少なくとも 1 つの IPsec ペイロードに対して IPsec チェックを実行したことを示す USHORT 値。 この値がクリアされると、NIC がパケットに対して IPsec チェックを実行しなかったことを示します。

Receive.NextCryptoDone

設定時に、NIC が受信パケットのトンネル部分とトランスポート部分の両方で IPsec チェックを実行したことを示す USHORT 値。 この場合、CryptoDone も設定する必要があります。 NextCryptoDone は、パケットにトンネルとトランスポートの両方の IPsec ペイロードがある場合にのみ設定されます。それ以外の場合、 NextCryptoDone は 0 に設定されます。

Receive.Pad

NDIS 用に予約されています。

Receive.CryptoStatus

受信パケットに対して NIC が実行されたことを確認した IPsec の結果。 この結果は、次のいずれかの値として記述できます。

意味
CRYPTO_SUCCESS
必要に応じてパケットが正常に復号化され、認証ヘッダー (AH) チェックサム、セキュリティ ペイロード (ESP) チェックサム、またはパケット内の両方のチェックサムが検証されました。
CRYPTO_GENERIC_ERROR
パケットは、指定されていない理由で IPsec チェックに失敗しました。
CRYPTO_TRANSPORT_AH_AUTH_FAILED
パケットのトランスポート部分の AH チェックサムが無効でした。
CRYPTO_TRANSPORT_ESP_AUTH_FAILED
パケットのトランスポート部分の ESP チェックサムが無効です。
CRYPTO_TUNNEL_AH_AUTH_FAILED
パケットのトンネル部分の AH チェックサムが無効でした。
CRYPTO_TUNNEL_ESP_AUTH_FAILED
パケットのトンネル部分の ESP チェックサムが無効です。
CRYPTO_INVALID_PACKET_SYNTAX
受信パケットの長さが無効です。
CRYPTO_INVALID_PROTOCOL
パケットが受信された SA で指定された IPsec プロトコルが、パケットで見つかった IPsec プロトコルと一致しません。 たとえば、このエラーは、パケットが受信された SA が AH プロトコルを指定し、パケットに ESP ヘッダーのみが含まれている場合に発生します。

注釈

TCP/IP トランスポートは、NIC が NIC のミニポート ドライバーに IPsec タスクを実行する送信パケットを渡す前に、トランスポートは、NET_BUFFER_LIST構造体に関連付けられているNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体の IPsec 情報を更新します。

具体的には、TCP/IP トランスポートは、NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体の OffloadHandle メンバーの値を提供します。 OffloadHandle 値は、そのペイロードがトランスポート (エンドツーエンド) セキュリティ アソシエーションとトンネル セキュリティ アソシエーションのどちらに対するものであるかに関係なく、IPsec ペイロードが 1 つだけのパケットの送信セキュリティ アソシエーション (SA) へのハンドルを指定します。 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体で提供される OffloadHandle 値は、TCP/IP トランスポートが NIC に送信 SA を追加するようにミニポート ドライバーに要求OID_TCP_TASK_IPSEC_ADD_SA設定したときに指定された OffloadHandle 値と同じ値を持ちます。

ミニポート ドライバーは、1 つ以上の IPsec ペイロードを持つ受信パケットを示す前に、ドライバーは、次のように 、NET_BUFFER_LIST 構造体に関連付けられている NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体を 更新します。

  • NIC がパケット内の少なくとも 1 つの IPsec ペイロードに対して IPsec チェックを実行した場合、ミニポート ドライバーは CryptoDone メンバーを設定し、 CryptoStatus メンバーに適切な値を指定してチェックサム検証テストの結果を示します。
  • NIC が受信パケットのトンネル部分とトランスポート部分の両方で IPsec チェックを実行した場合、ミニポート ドライバーは NextCryptoDone メンバーも設定します。 NextCryptoDone は、パケットにトンネルとトランスポートの両方の IPsec ペイロードがある場合にのみ設定されます。それ以外の場合、 NextCryptoDone は 0 に設定されます。
  • NIC がパケットに対して IPsec チェックを実行しなかった場合、ミニポート ドライバーは CryptoDone または NextCryptoDone を設定せず 、CryptoStatus 値を指定しません。
NIC 上の別の SA の領域を作成するには、NIC のミニポート ドライバーは、受信パケットのNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体で SaDeleteReq を設定できます。 TCP/IP トランスポートは、その後 パケットが受信された受信 SA を削除するために 1 回OID_TCP_TASK_IPSEC_DELETE_SAを発行し、削除された受信 SA に対応する送信 SA を削除します。 NIC は、対応するOID_TCP_TASK_IPSEC_DELETE_SA要求を受信する前に、これらの CA のいずれかを削除しないでください。 NIC のミニポート ドライバーは、CryptoDone とは別に SaDeleteReq を設定できます。

IPsec 情報を設定して取得するには、NET_BUFFER_LIST_INFO マクロで IPsecOffloadV1NetBufferListInfo インデックスを使用します。 NET_BUFFER_LIST_INFOは、NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO構造体を返します。

要件

要件
サポートされている最小のクライアント NDIS 6.0 でサポートされています。 NDIS 6.1 以降の場合は、NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFOを使用します。
Header ndis.h (Ndis.h を含む)

こちらもご覧ください

NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

OID_TCP_TASK_IPSEC_ADD_SA

OID_TCP_TASK_IPSEC_DELETE_SA