Поделиться через


структура NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO (ndis.h)

Структура NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO указывает сведения, используемые при разгрузке задач IPsec с транспорта TCP/IP в драйвер мини-порта.

Синтаксис

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

Дескриптор исходящей связи безопасности (SA) для пакета, который содержит только одну полезную нагрузку IPsec, независимо от того, является ли эта полезная нагрузка для транспортного (сквозного) или туннельного подключения.

Receive

Структура , содержащая следующие элементы:

Receive.SaDeleteReq

Значение USHORT, указывающее, что транспорт TCP/IP должен выдать OID_TCP_TASK_IPSEC_DELETE_SA OID один раз, чтобы удалить входящий sa, который был получен пакет, и еще раз, чтобы удалить исходящий SA, соответствующий удаленному входящие SA. Сетевой интерфейс карта (NIC) не должен удалять ни один из этих сетевых интерфейсов, прежде чем получит соответствующий запрос OID_TCP_TASK_IPSEC_DELETE_SA.

Receive.CryptoDone

Значение USHORT, указывающее, что сетевой адаптер выполнил проверку IPsec по крайней мере для одной полезных данных IPsec в пакете получения. Если это значение снято, это означает, что сетевой адаптер не выполнял проверку IPsec для пакета.

Receive.NextCryptoDone

Значение USHORT, указывающее, что сетевой адаптер выполнил проверку IPsec как для туннеля, так и для транспортных частей получающего пакета. В этом случае также необходимо задать CryptoDone. NextCryptoDone задается только в том случае, если пакет содержит полезные данные IPsec для туннеля и транспорта; в противном случае параметру NextCryptoDone присваивается нулевое значение.

Receive.Pad

Зарезервировано для NDIS.

Receive.CryptoStatus

Результат проверки 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
Протоколы IPsec, указанные в системе безопасности, в котором был получен пакет, не соответствуют протоколам IPsec, найденным в пакете. Например, эта ошибка возникает, если sa, в котором был получен пакет, указывает протокол AH, но пакет содержит только заголовок ESP.

Комментарии

Перед тем как транспорт TCP/IP передает пакет отправки, на который сетевой адаптер будет выполнять задачи IPsec, драйверу мини-порта сетевого адаптера, транспорт обновляет сведения IPsec в структуре NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, связанной со структурой NET_BUFFER_LIST .

В частности, транспорт TCP/IP предоставляет значение для элемента OffloadHandle в структуре NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO . Значение OffloadHandle указывает дескриптор исходящей связи безопасности (SA) для пакета, который содержит только одну полезную нагрузку IPsec, независимо от того, относится ли эта полезная нагрузка к транспортной (сквозной) связи безопасности или ассоциации безопасности туннеля. Значение OffloadHandle , указанное в структуре NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO , имеет то же значение, что и значение OffloadHandle , которое предоставляет транспорт TCP/IP при установке OID_TCP_TASK_IPSEC_ADD_SA , чтобы запросить у драйвера минипорта добавление исходящего sa на сетевой адаптер.

Прежде чем драйвер мини-порта укажет пакет получения с одной или несколькими полезными данными IPsec, драйвер обновляет структуру NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO , связанную со структурой NET_BUFFER_LIST , следующим образом:

  • Если сетевой адаптер выполнил проверку IPsec хотя бы на одну полезную нагрузку IPsec в пакете, драйвер мини-порта задает элемент CryptoDone и указывает результаты тестов проверки контрольной суммы, указывая соответствующее значение в элементе CryptoStatus .
  • Если сетевой адаптер выполнил проверку IPsec как для туннеля, так и для транспортных частей получающего пакета, драйвер мини-порта также задает элемент NextCryptoDone . NextCryptoDone задается только в том случае, если пакет содержит полезные данные IPsec для туннеля и транспорта; в противном случае параметру NextCryptoDone присваивается нулевое значение.
  • Если сетевой адаптер не выполнял проверки IPsec для пакета, драйвер мини-порта не устанавливает CryptoDone или NextCryptoDone и не предоставляет значение CryptoStatus .
Чтобы создать пространство для другого sa на сетевом адаптере, драйвер минипорта сетевого адаптера может задать SaDeleteReq в структуре NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO для получающего пакета. Транспорт TCP/IP впоследствии выдает OID_TCP_TASK_IPSEC_DELETE_SA один раз, чтобы удалить входящий sa, который был получен пакет, и еще раз удалить исходящий SA, соответствующий удаленному входящие SA. Сетевой адаптер не должен удалять ни один из этих SAS до получения соответствующего запроса OID_TCP_TASK_IPSEC_DELETE_SA. Драйвер мини-порта сетевого адаптера может устанавливать SaDeleteReq независимо от CryptoDone .

Чтобы задать и получить сведения об IPsec, используйте индекс IPsecOffloadV1NetBufferListInfo с макросом NET_BUFFER_LIST_INFO . 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.
Верхняя часть 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