pfhook.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * pfhook.h
  3. *
  4. * Packet filter API
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  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.
  20. *
  21. */
  22. #ifndef __PFHOOK_H
  23. #define __PFHOOK_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. #define DD_IPFLTRDRVR_DEVICE_NAME L"\\Device\\IPFILTERDRIVER"
  28. #define INVALID_PF_IF_INDEX 0xffffffff
  29. #define ZERO_PF_IP_ADDR 0
  30. typedef ULONG IPAddr;
  31. typedef enum _PF_FORWARD_ACTION {
  32. PF_FORWARD = 0,
  33. PF_DROP = 1,
  34. PF_PASS = 2,
  35. PF_ICMP_ON_DROP = 3
  36. } PF_FORWARD_ACTION;
  37. typedef PF_FORWARD_ACTION
  38. (NTAPI *PacketFilterExtensionPtr)(
  39. IN unsigned char *PacketHeader,
  40. IN unsigned char *Packet,
  41. IN unsigned int PacketLength,
  42. IN unsigned int RecvInterfaceIndex,
  43. IN unsigned int SendInterfaceIndex,
  44. IN IPAddr RecvLinkNextHop,
  45. IN IPAddr SendLinkNextHop);
  46. typedef struct _PF_SET_EXTENSION_HOOK_INFO {
  47. PacketFilterExtensionPtr ExtensionPointer;
  48. } PF_SET_EXTENSION_HOOK_INFO, *PPF_SET_EXTENSION_HOOK_INFO;
  49. #define FSCTL_IPFLTRDRVR_BASE FILE_DEVICE_NETWORK
  50. #define _IPFLTRDRVR_CTL_CODE(function, method, access) \
  51. CTL_CODE(FSCTL_IPFLTRDRVR_BASE, function, method, access)
  52. #define IOCTL_PF_SET_EXTENSION_POINTER \
  53. _IPFLTRDRVR_CTL_CODE(22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
  54. #ifdef __cplusplus
  55. }
  56. #endif
  57. #endif /* __PFHOOK_H */