Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se o sinalizador NDIS_NBL_FLAGS_IS_LOOPBACK_PACKET no membro NblFlags da estrutura NET_BUFFER_LIST está definido, o pacote é um pacote de loopback. Drivers de protocolo e drivers de filtro podem verificar esse sinalizador para determinar se um pacote é um pacote de loopback.
O NDIS reencaminha pacotes de volta se todas as três condições seguintes forem satisfeitas:
O tipo de mídia do adaptador de miniporta subjacente é NdisMedium802_3 ou NdisMedium802_5.
Qualquer uma das três condições seguintes é satisfeita:
Uma vinculação de protocolo definiu a configuração NDIS_PACKET_TYPE_PROMISCUOUS com o OID OID_GEN_CURRENT_PACKET_FILTER para especificar o respetivo filtro de pacotes (e, para Windows 8 e posterior, não definiu NDIS_PACKET_TYPE_NO_LOCAL no mesmo OID) e pelo menos uma das seguintes condições é verdadeira:
- Há mais de uma ligação ao adaptador de miniporta.
- Há um módulo de filtro conectado ao adaptador de miniporta e o módulo de filtro registou um manipulador de recepção.
Uma associação de protocolo define a configuração NDIS_PACKET_TYPE_ALL_LOCAL com o OID_GEN_CURRENT_PACKET_FILTER OID para especificar seu filtro de pacotes e uma das seguintes opções é verdadeira.
- Há mais de uma ligação ao adaptador de miniporta.
- Há um módulo de filtro conectado ao adaptador de miniporta e o módulo de filtro registou um manipulador de recepção.
O chamador define o sinalizador NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK no parâmetro SendFlags da função NdisSendNetBufferLists.
O pacote é aceitável conforme determinado pelo filtro de pacotes definido com o OID OID_GEN_CURRENT_PACKET_FILTER para o miniport adapter. Seguem-se alguns exemplos:
- Se o pacote for um pacote direto, o endereço de destino no pacote deve corresponder ao endereço MAC do adaptador de miniporta.
- Se o pacote for um pacote de multicast, o filtro de pacotes deve ter NDIS_PACKET_TYPE_ALL_MULTICAST definido ou o endereço de destino corresponde a um dos endereços de multicast na lista de endereços de multicast do adaptador de miniporta e o filtro de pacotes tem NDIS_PACKET_TYPE_MULTICAST definido.
- Se o pacote for um pacote de difusão, o filtro de pacotes do adaptador de miniporta deve ter NDIS_PACKET_TYPE_BROADCAST definido.
- O filtro de pacotes do adaptador de miniporta tem NDIS_PACKET_TYPE_PROMISCUOUS ou NDIS_PACKET_TYPE_ALL_LOCAL definido.
Uma associação de protocolo recebe pacotes de loopback se uma das seguintes opções for verdadeira:
A ligação de protocolo é o remetente original do pacote, e o NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK está definido.
A associação de protocolo não define NDIS_PACKET_TYPE_NO_LOCAL no filtro de pacotes.
Uma associação de protocolo não receberá pacotes de loopback se uma das seguintes opções for verdadeira:
A associação de protocolo define NDIS_PACKET_TYPE_NO_LOCAL no filtro de pacotes e não é o remetente original do pacote.
A associação de protocolo é o remetente original, mas NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK não está definido no parâmetro SendFlags numa chamada para a função NdisSendNetBufferLists.
A figura a seguir mostra o fluxo lógico do algoritmo de loopback.