Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los siguientes tipos de llamadas se pueden usar con EL PMA:
Llamada de inspección insertada
Este tipo de llamada siempre devuelve FWP_ACTION_CONTINUE de la función classifyFn y no modifica el tráfico de red de ninguna manera. Una llamada que recopila estadísticas de red es un ejemplo de este tipo de llamada.
Para este tipo de llamada, el tipo de acción de filtro (especificado por el miembro Type de la estructura FWPS_ACTION0 ) debe establecerse en FWP_ACTION_CALLOUT_INSPECTION.
Llamada de inspección fuera de banda
Este tipo de llamada no modifica el tráfico de red. En su lugar, aplaza cualquier inspección que se deba realizar fuera de la función classifyFn al dejar los datos indicados en estado de "pendiente", y luego reinjecta esos datos en la pila TCP/IP utilizando una de las funciones de inyección de paquetes. Pendiente se implementa clonando primero los datos indicados, seguido de devolver FWP_ACTION_BLOCK de la función classifyFn que tiene el bit FWPS_CLASSIFY_OUT_FLAG_ABSORB establecido.
Llamada de modificación insertada
Este tipo de llamada modifica el tráfico de red realizando primero un clon de los datos indicados, modificando el clon y, finalmente, insertando el clon modificado en la pila TCP/IP de la función classifyFn . Este tipo de llamada también devuelve FWP_ACTION_BLOCK de la función classifyFn que tiene el FWPS_CLASSIFY_OUT_FLAG_ABSORB conjunto de bits.
El tipo de acción de filtro para este tipo de llamada debe establecerse en FWP_ACTION_CALLOUT_TERMINATING.
Llamada de modificación fuera de banda
Este tipo de llamada hace referencia primero al paquete indicado mediante la función FwpsReferenceNetBufferList0 que tiene el parámetro intentToModify establecido en TRUE. A continuación, la llamada devuelve FWP_ACTION_BLOCK con el bit FWPS_CLASSIFY_OUT_FLAG_ABSORB establecido desde la función classifyFn. Cuando el paquete está listo para modificarse fuera de classifyFn, la llamada clona el paquete al que se hace referencia (en cuanto se clona, el paquete original se puede desreferenciar). Luego, la llamada modifica el clon e inyecta el paquete modificado de nuevo en la pila TCP/IP.
El tipo de acción de filtro para este tipo de llamada debe configurarse como FWP_ACTION_CALLOUT_TERMINATING.
Llamada de redireccionamiento
Para obtener más información sobre este tipo de llamada, consulte Using Bind or Connect Redirection (Usar el redireccionamiento de enlace o conexión).
Hay dos tipos de llamadas de redireccionamiento:
- Una llamada de redirección de enlace permite al controlador de llamada modificar la dirección local y el puerto local de un socket.
- Una llamada de redirección de conexión permite al controlador de llamada modificar la dirección remota y el puerto remoto de una conexión.
El tipo de acción de filtro para este tipo de llamada se debe establecer en FWP_ACTION_PERMIT.
Para obtener más información sobre FWPS_CLASSIFY_OUT_FLAG_ABSORB, consulte FWPS_CLASSIFY_OUT0. Esta marca no es válida en ninguna capa de descarte del PMA. Devolver FWP_ACTION_BLOCK con el indicador FWPS_CLASSIFY_OUT_FLAG_ABSORB establecido desde la función classifyFn hace que el paquete se descarte silentemente, de tal forma que el paquete no alcance ninguna de las capas de descarte del WFP, y tampoco generará eventos de auditoría.
Aunque las listas de búferes netos clonadas se pueden modificar, por ejemplo, agregando o quitando búferes netos o MDL, o ambas, las llamadas deben deshacer dichas modificaciones antes de llamar a la función FwpsFreeCloneNetBufferList0 .
Para coexistir con otras llamadas extendidas que realizan inspección de paquetes, modificación de paquetes o redireccionamiento de conexión, antes de que un paquete se maneje con el mecanismo de referencia, clonación o reinyección, una llamada debe descartar firmemente el paquete original eliminando la marca FWPS_RIGHT_ACTION_WRITE en el miembro rights de la estructura FWPS_CLASSIFY_OUT0 devuelta por la función classifyFn. Si se establece la marca de FWPS_RIGHT_ACTION_WRITE cuando se llama a classifyFn (lo que significa que el paquete podría quedar pendiente y luego ser reinyectado o modificado), el controlador no debe dejar pendiente la indicación y no debe cambiar el tipo de acción actual; y debe esperar a que un controlador de mayor prioridad inyecte el clon que podría ser modificado.
La marca FWPS_RIGHT_ACTION_WRITE debe establecerse cada vez que una llamada escribe una clasificación. El controlador de callout debe verificar la marca FWPS_RIGHT_ACTION_WRITE para comprobar los permisos de su callout para devolver una acción. Si no se establece esta marca, su callout todavía puede devolver una acción FWP_ACTION_BLOCK con el fin de vetar una acción FWP_ACTION_PERMIT que devolvió un callout anterior. En el ejemplo que se muestra en Using a Callout for Deep Inspection (Usar una llamada para inspección profunda), la función simplemente sale si no se establece la marca.
La función FwpsPendOperation0 se usa para posponer los paquetes que se originan en las FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX, o FWPM_LAYER_ALE_AUTH_CONNECT_XXXcapas de filtrado de administración.
La función FwpsPendClassify0 se usa para posponer paquetes que se originan en las siguientes capas de filtrado de tiempo de ejecución:
FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6