Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
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
|