summaryrefslogtreecommitdiffstats
path: root/private/ntos/tdi/isn/inc/ipxfltif.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/tdi/isn/inc/ipxfltif.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/private/ntos/tdi/isn/inc/ipxfltif.h b/private/ntos/tdi/isn/inc/ipxfltif.h
new file mode 100644
index 000000000..e02591e61
--- /dev/null
+++ b/private/ntos/tdi/isn/inc/ipxfltif.h
@@ -0,0 +1,151 @@
+/*++
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ private\inc\ipxfltif.h
+
+Abstract:
+ IPX Filter driver interface with forwarder
+
+
+Author:
+
+ Vadim Eydelman
+
+Revision History:
+
+--*/
+
+#ifndef _IPXFLTIF_
+#define _IPXFLTIF_
+
+ // No filter context means that packets should not
+ // be passed for filtering
+#define NO_FILTER_CONTEXT ((PVOID)0)
+
+
+ // Forwarder Driver Entry Points:
+ // ==============================
+/*++
+ S E T _ I F _ I N _ C O N T E X T _ H A N D L E R
+
+Routine Description:
+ Associates filter driver context with
+ the packets received on the interface
+Arguments:
+ InterfaceIndex - index of the interface
+ ifInContext - filter driver context
+Return Value:
+ STATUS_SUCCESS - context associated ok
+ STATUS_UNSUCCESSFUL - interface does not exist
+--*/
+typedef
+NTSTATUS
+(*PSET_IF_IN_CONTEXT_HANDLER) (
+ IN ULONG InterfaceIndex,
+ IN PVOID ifInContext
+ );
+
+/*++
+ S E T _ I F _ O U T _ C O N T E X T _ H A N D L E R
+
+Routine Description:
+ Associates filter driver context with
+ the packets sent on the interface
+Arguments:
+ InterfaceIndex - index of the interface
+ ifOutContext - filter driver context
+Return Value:
+ STATUS_SUCCESS - context associated ok
+ STATUS_UNSUCCESSFUL - interface does not exist
+--*/
+typedef
+NTSTATUS
+(*PSET_IF_OUT_CONTEXT_HANDLER) (
+ IN ULONG InterfaceIndex,
+ IN PVOID ifOutContext
+ );
+
+typedef enum {
+ FILTER_DENY_IN = -2,
+ FILTER_DENY_OUT = -1,
+ FILTER_DENY = 1,
+ FILTER_PERMIT = 0
+} FILTER_ACTION;
+#define NOT_FILTER_ACTION(action) (!action)
+#define IS_FILTERED(action) (action!=FILTER_PERMIT)
+
+
+ // Forwarder Driver Entry Points:
+ // ==============================
+/*++
+ F i l t e r H a n d l e r
+
+Routine Description:
+
+ Filters the packet supplied by the forwarder
+
+Arguments:
+ ipxHdr - pointer to packet header
+ ipxHdrLength - size of the header buffer (must be at least 30)
+ ifInContext - context associated with interface on which packet
+ was received
+ ifOutContext - context associated with interface on which packet
+ will be sent
+Return Value:
+ FILTER_PERMIT - packet should be passed on by the forwarder
+ FILTER_DENY_IN - packet should be dropped because of input filter
+ FILTER_DENY_OUT - packet should be dropped because of output filter
+
+--*/
+typedef
+FILTER_ACTION
+(*PFILTER_HANDLER) (
+ IN PUCHAR ipxHdr,
+ IN ULONG ipxHdrLength,
+ IN PVOID ifInContext,
+ IN PVOID ifOutContex
+ );
+
+/*++
+ I n t e r f a c e D e l e t e d H a n d l e r
+
+Routine Description:
+
+ Frees interface filters blocks when forwarder indicates that
+ interface is deleted
+Arguments:
+ ifInContext - context associated with input filters block
+ ifOutContext - context associated with output filters block
+Return Value:
+ None
+
+--*/
+typedef
+VOID
+(*PINTERFACE_DELETED_HANDLER) (
+ IN PVOID ifInContext,
+ IN PVOID ifOutContext
+ );
+
+// Binds filter driver to forwarder
+// IPX_FLT_BIND_INPUT should be passed in the input buffer and
+// IPX_FLT_BINF_OUTPUT will be returned in the output buffer
+#define IOCTL_FWD_INTERNAL_BIND_FILTER \
+ CTL_CODE(FILE_DEVICE_IPXFWD,IPXFWD_IOCTL_INDEX+16,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+typedef struct _IPX_FLT_BIND_INPUT {
+ PFILTER_HANDLER FilterHandler;
+ PINTERFACE_DELETED_HANDLER InterfaceDeletedHandler;
+} IPX_FLT_BIND_INPUT, *PIPX_FLT_BIND_INPUT;
+
+typedef struct _IPX_FLT_BIND_OUTPUT {
+ ULONG Size;
+ PSET_IF_IN_CONTEXT_HANDLER SetIfInContextHandler;
+ PSET_IF_OUT_CONTEXT_HANDLER SetIfOutContextHandler;
+} IPX_FLT_BIND_OUTPUT, *PIPX_FLT_BIND_OUTPUT;
+
+#endif
+