estrutura OFFLOAD_IPSEC_ADD_UDPESP_SA (ntddndis.h)
A estrutura OFFLOAD_IPSEC_ADD_UDPESP_SA contém informações para cada SA (associação de segurança) que um driver de miniporto adiciona para pacotes ESP encapsulados por UDP a uma NIC.
Sintaxe
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;
Membros
SrcAddr
O endereço IP do host de origem (o host que envia os pacotes).
SrcMask
A máscara de sub-rede para o endereço IP de origem.
DstAddr
O endereço IP do host de destino (o host que recebe os pacotes).
DstMask
A máscara de sub-rede para o endereço IP de destino.
Protocol
O protocolo IP. A codificação de Protocolo é idêntica à do campo Protocolo em um cabeçalho IP. O valor deve ser 11 (hexadecimal), que especifica UDP.
SrcPort
Uma porta TCP ou UDP de origem. Se SrcPort estiver definido como zero, a SA se aplicará a qualquer porta TCP/UDP de origem.
DstPort
Uma porta TCP ou UDP de destino. Se DestPort for definido como zero, a SA se aplicará a qualquer porta TCP/UDP de origem.
SrcTunnelAddr
O endereço IP do ponto de extremidade de origem, como um conector, de um túnel. O driver de miniporte usa
SrcTunnelAddr como o endereço de origem do cabeçalho IP do túnel de pacotes enviados na SA.
SrcTunnelAddr é especificado apenas para uma SA que se aplica à parte do túnel de um pacote.
SrcTunnelAddr é definido como zero para uma SA que se aplica à parte de transporte de um pacote.
DstTunnelAddr
O endereço IP do ponto de extremidade de destino, como um conector, de um túnel. O driver de miniporto usa DestTunnelAddr como o endereço de destino para o cabeçalho IP do túnel de pacotes enviados na SA. DestTunnelAddr é especificado apenas para uma SA que se aplica à parte do túnel de um pacote. DestTunnelAddr é definido como zero para uma SA que se aplica à parte de transporte de um pacote.
Flags
Uma máscara de bits que indica se a SA que está sendo adicionada é uma SA de entrada ou saída da seguinte maneira:
OFFLOAD_INBOUND_SA
Especifica uma SA de entrada.
OFFLOAD_OUTBOUND_SA
Especifica uma SA de saída.
NumSAs
O número de elementos na matriz SecAssoc . Cada elemento na matriz é um OFFLOAD_SECURITY_ASSOCIATION estrutura.
SecAssoc[OFFLOAD_MAX_SAS]
Uma matriz de comprimento variável que contém as informações sobre as operações de segurança de protocolo IPsec (AH ou ESP) para a SA. As informações para cada operação IPsec são formatadas como uma estrutura OFFLOAD_SECURITY_ASSOCIATION.
O transporte TCP/IP especifica uma ou duas estruturas OFFLOAD_SECURITY_ASSOCIATION no buffer em SecAssoc. Cada estrutura OFFLOAD_SECURITY_ASSOCIATION indica o tipo de operação, autenticação ou criptografia/descriptografia, para o qual a SA especificada na estrutura deve ser usada. A ordem das estruturas de OFFLOAD_SECURITY_ASSOCIATION na matriz indica a ordem na qual o driver de miniporto deve executar as operações para cada SA. Há suporte apenas para uma combinação de operações: criptografia/descriptografia (ESP) seguida por AH (autenticação).
OffloadHandle
O identificador para a SA recém-criada. O driver de miniporte fornece esse identificador antes de concluir o
OID_TCP_TASK_IPSEC_ADD_SA solicitação.
O transporte TCP/IP deve especificar esse identificador na estrutura NDIS_IPSEC_PACKET_INFO antes de passar um pacote de envio para o driver de miniport. O transporte TCP/IP também deve especificar esse identificador ao excluir a SA com um OID_TCP_TASK_IPSEC_DELETE_SA solicitação.
EncapTypeEntry
O tipo de encapsulamento UDP-ESP e a porta de destino de uma entrada de analisador. Essas informações são formatadas como um OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY estrutura.
EncapTypeEntryOffldHandle
Quando Flags= OFFLOAD_INBOUND_SA e EncapTypeEntryOffldHandle for NULL, o driver de miniporto deverá marcar se a entrada do analisador especificada por EncapTypeEntry está na lista de entradas do analisador da NIC. Se não estiver, o driver de miniporto deverá criar uma entrada de analisador, usando o tipo de encapsulamento e a porta de destino especificada em EncapTypeEntry, adicionar a entrada do analisador à lista de entradas do analisador e descarregar os SAs especificados. O driver de miniporte deve retornar um identificador em EncapTypeEntryOffldHandle que identifica a entrada do analisador recém-criada. Se a entrada do analisador especificada já estiver na lista de entradas do analisador, o miniporto deverá simplesmente retornar o identificador em EncapTypeEntryOffldHandle para a entrada do analisador existente.
Quando Flags= OFFLOAD_INBOUND_SA e EncapTypeEntryOffldHandle não é NULL, EncapTypeEntryOffldHandle contém o identificador para uma entrada de analisador que já está na lista de entradas do analisador da NIC. Nesse caso, o driver de miniporte deve simplesmente descarregar os SAs especificados.
Quando Flags= OFFLOAD_OUTBOUND_SA, o driver de miniporto deve ignorar o parâmetro EncapTypeEntryOffldHandle .
KeyLen
O comprimento, em bytes, do buffer em KeyMat.
KeyMat[1]
Uma matriz de comprimento variável que contém chaves para os SAs especificados em SecAssoc. Se um algoritmo de confidencialidade (criptografia/descriptografia) e um algoritmo de integridade (autenticação) forem especificados pelo ConfAlgo e IntegrityAlgo de um OFFLOAD_SECURITY_ASSOCIATION estrutura, o buffer em KeyMat contém informações importantes para o algoritmo de confirmação primeiro, seguido imediatamente por informações de chave para o algoritmo de integridade.
O comprimento de cada chave no buffer em KeyMat é especificado por algoKeyLen na estrutura OFFLOAD_ALGO_INFO que especifica o algoritmo de confidencialidade ou integridade. (Uma estrutura OFFLOAD_ALGO_INFO é membro de uma estrutura OFFLOAD_SECURITY_ASSOCIATION.)
Comentários
A estrutura OFFLOAD_IPSEC_ADD_UDPESP_SA é usada com o OID_TCP_TASK_IPSEC_ADD_UDPESP_SA OID.
Observe que a estrutura de OFFLOAD_IPSEC_ADD_UDPESP_SA é quase idêntica à estrutura OFFLOAD_IPSEC_ADD_SA usada na solicitação de OID_TCP_TASK_IPSEC_ADD_SA . A única diferença é que a estrutura OFFLOAD_IPSEC_ADD_UDPESP_SA contém os membros EncapTypeEntry e EncapTypeEntryOffldHandle .
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddndis.h (inclua Ndis.h) |