6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 #pragma GCC system_header
34 #define DD_IPFLTRDRVR_DEVICE_NAME L"\\Device\\IPFILTERDRIVER"
36 #define INVALID_PF_IF_INDEX 0xffffffff
37 #define ZERO_PF_IP_ADDR 0
41 typedef enum _PF_FORWARD_ACTION
{
48 typedef PF_FORWARD_ACTION STDCALL
49 (*PacketFilterExtensionPtr
)(
50 IN
unsigned char *PacketHeader
,
51 IN
unsigned char *Packet
,
52 IN
unsigned int PacketLength
,
53 IN
unsigned int RecvInterfaceIndex
,
54 IN
unsigned int SendInterfaceIndex
,
55 IN IPAddr RecvLinkNextHop
,
56 IN IPAddr SendLinkNextHop
);
58 typedef struct _PF_SET_EXTENSION_HOOK_INFO
{
59 PacketFilterExtensionPtr ExtensionPointer
;
60 } PF_SET_EXTENSION_HOOK_INFO
, *PPF_SET_EXTENSION_HOOK_INFO
;
62 #define FSCTL_IPFLTRDRVR_BASE FILE_DEVICE_NETWORK
64 #define _IPFLTRDRVR_CTL_CODE(function, method, access) \
65 CTL_CODE(FSCTL_IPFLTRDRVR_BASE, function, method, access)
67 #define IOCTL_PF_SET_EXTENSION_POINTER \
68 _IPFLTRDRVR_CTL_CODE(22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
74 #endif /* __PFHOOK_H */