https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2adbfdf6cdb3fb1d02f61f6a12ded2320c663a0b

commit 2adbfdf6cdb3fb1d02f61f6a12ded2320c663a0b
Author:     Timo Kreuzer <timo.kreu...@reactos.org>
AuthorDate: Thu Aug 29 17:57:01 2019 +0200
Commit:     Timo Kreuzer <timo.kreu...@reactos.org>
CommitDate: Sun Sep 8 16:23:46 2019 +0200

    [PSDK] Add fltdefs.h
---
 sdk/include/psdk/fltdefs.h | 261 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 261 insertions(+)

diff --git a/sdk/include/psdk/fltdefs.h b/sdk/include/psdk/fltdefs.h
new file mode 100644
index 00000000000..673db5205a0
--- /dev/null
+++ b/sdk/include/psdk/fltdefs.h
@@ -0,0 +1,261 @@
+/*
+ * fltdefs.h
+ *
+ * This file is part of the ReactOS PSDK package.
+ *
+ * Contributors:
+ *   Created by Timo Kreuzer.
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _FLTDEFS_H
+#define _FLTDEFS_H
+
+#pragma once
+
+#ifdef __cplusplus
+#define EXTERNCDECL EXTERN_C
+#else
+#define EXTERNCDECL
+#endif
+
+#ifdef _M_CEE_PURE
+#define PFEXPORT
+#else
+#define PFEXPORT /* __declspec(dllexport) Native headers have this, but this 
breaks exports with GCC! */
+#endif
+
+#define PFAPIENTRY EXTERNCDECL DWORD PFEXPORT WINAPI
+
+#define ERROR_BASE 23000
+#define PFERROR_NO_PF_INTERFACE    (ERROR_BASE + 0)
+#define PFERROR_NO_FILTERS_GIVEN   (ERROR_BASE + 1)
+#define PFERROR_BUFFER_TOO_SMALL   (ERROR_BASE + 2)
+#define ERROR_IPV6_NOT_IMPLEMENTED (ERROR_BASE + 3)
+
+#define FD_FLAGS_NOSYN        0x1
+#define FD_FLAGS_ALLFLAGS     FD_FLAGS_NOSYN
+
+#define FILTER_PROTO(ProtoId)  MAKELONG(MAKEWORD((ProtoId), 0x00), 0x00000)
+#define FILTER_PROTO_ANY       FILTER_PROTO(0x00)
+#define FILTER_PROTO_ICMP      FILTER_PROTO(0x01)
+#define FILTER_PROTO_TCP       FILTER_PROTO(0x06)
+#define FILTER_PROTO_UDP       FILTER_PROTO(0x11)
+
+#define FILTER_TCPUDP_PORT_ANY ((WORD)0x0000)
+#define FILTER_ICMP_TYPE_ANY   ((BYTE)0xff)
+#define FILTER_ICMP_CODE_ANY   ((BYTE)0xff)
+
+#define LB_SRC_ADDR_USE_SRCADDR_FLAG 0x00000001
+#define LB_SRC_ADDR_USE_DSTADDR_FLAG 0x00000002
+#define LB_DST_ADDR_USE_SRCADDR_FLAG 0x00000004
+#define LB_DST_ADDR_USE_DSTADDR_FLAG 0x00000008
+#define LB_SRC_MASK_LATE_FLAG        0x00000010
+#define LB_DST_MASK_LATE_FLAG        0x00000020
+
+typedef PVOID FILTER_HANDLE, * PFILTER_HANDLE;
+typedef PVOID INTERFACE_HANDLE, * PINTERFACE_HANDLE;
+
+typedef enum _GlobalFilter
+{
+    GF_FRAGMENTS = 2,
+    GF_STRONGHOST = 8,
+    GF_FRAGCACHE = 9
+} GLOBAL_FILTER, *PGLOBAL_FILTER;
+
+typedef enum _PfAddresType
+{
+    PF_IPV4,
+    PF_IPV6
+} PFADDRESSTYPE, *PPFADDRESSTYPE;
+
+typedef enum _PfForwardAction
+{
+    PF_ACTION_FORWARD = 0,
+    PF_ACTION_DROP
+} PFFORWARD_ACTION, *PPFFORWARD_ACTION;
+
+typedef enum _PfFrameType
+{
+    PFFT_FILTER = 1,
+    PFFT_FRAG = 2,
+    PFFT_SPOOF = 3
+} PFFRAMETYPE, *PPFFRAMETYPE;
+
+typedef struct _pfLogFrame
+{
+    LARGE_INTEGER Timestamp;
+    PFFRAMETYPE pfeTypeOfFrame;
+    DWORD dwTotalSizeUsed;
+    DWORD dwFilterRule;
+    WORD wSizeOfAdditionalData;
+    WORD wSizeOfIpHeader;
+    DWORD dwInterfaceName;
+    DWORD dwIPIndex;
+    BYTE bPacketData[1];
+} PFLOGFRAME, *PPFLOGFRAME;
+
+typedef struct _PF_FILTER_DESCRIPTOR
+{
+    DWORD dwFilterFlags;
+    DWORD dwRule;
+    PFADDRESSTYPE pfatType;
+    PBYTE SrcAddr;
+    PBYTE SrcMask;
+    PBYTE DstAddr;
+    PBYTE DstMask;
+    DWORD dwProtocol;
+    DWORD fLateBound;
+    WORD wSrcPort;
+    WORD wDstPort;
+    WORD wSrcPortHighRange;
+    WORD wDstPortHighRange;
+} PF_FILTER_DESCRIPTOR, *PPF_FILTER_DESCRIPTOR;
+
+#define FILTERSIZE (sizeof(PF_FILTER_DESCRIPTOR) - 
(DWORD)FIELD_OFFSET(PF_FILTER_DESCRIPTOR, SrcAddr))
+
+typedef struct _PF_FILTER_STATS
+{
+    DWORD dwNumPacketsFiltered;
+    PF_FILTER_DESCRIPTOR info;
+} PF_FILTER_STATS, *PPF_FILTER_STATS;
+
+typedef struct _PF_INTERFACE_STATS
+{
+    PVOID pvDriverContext;
+    DWORD dwFlags;
+    DWORD dwInDrops;
+    DWORD dwOutDrops;
+    PFFORWARD_ACTION eaInAction;
+    PFFORWARD_ACTION eaOutAction;
+    DWORD dwNumInFilters;
+    DWORD dwNumOutFilters;
+    DWORD dwFrag;
+    DWORD dwSpoof;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+    LARGE_INTEGER liSYN;
+    LARGE_INTEGER liTotalLogged;
+    DWORD dwLostLogEntries;
+    PF_FILTER_STATS FilterInfo[1];
+} PF_INTERFACE_STATS, *PPF_INTERFACE_STATS;
+
+typedef struct _PF_LATEBIND_INFO
+{
+    PBYTE SrcAddr;
+    PBYTE DstAddr;
+    PBYTE Mask;
+} PF_LATEBIND_INFO, *PPF_LATEBIND_INFO;
+
+PFAPIENTRY
+PfAddFiltersToInterface(
+    INTERFACE_HANDLE ih,
+    DWORD cInFilters,
+    PPF_FILTER_DESCRIPTOR pfiltIn,
+    DWORD cOutFilters,
+    PPF_FILTER_DESCRIPTOR pfiltOut,
+    PFILTER_HANDLE pfHandle);
+
+PFAPIENTRY
+PfAddGlobalFilterToInterface(
+    INTERFACE_HANDLE pInterface,
+    GLOBAL_FILTER gfFilter);
+
+PFAPIENTRY
+PfBindInterfaceToIPAddress(
+    INTERFACE_HANDLE pInterface,
+    PFADDRESSTYPE pfatType,
+    PBYTE IPAddress);
+
+PFAPIENTRY
+PfBindInterfaceToIndex(
+    INTERFACE_HANDLE pInterface,
+    DWORD dwIndex,
+    PFADDRESSTYPE pfatLinkType,
+    PBYTE LinkIPAddress);
+
+PFAPIENTRY
+PfCreateInterface(
+    DWORD dwName,
+    PFFORWARD_ACTION inAction,
+    PFFORWARD_ACTION outAction,
+    BOOL bUseLog,
+    BOOL bMustBeUnique,
+    INTERFACE_HANDLE* ppInterface);
+
+PFAPIENTRY
+PfDeleteInterface(
+    INTERFACE_HANDLE pInterface);
+
+PFAPIENTRY
+PfDeleteLog(
+    VOID);
+
+PFAPIENTRY
+PfGetInterfaceStatistics(
+    INTERFACE_HANDLE pInterface,
+    PPF_INTERFACE_STATS ppfStats,
+    PDWORD pdwBufferSize,
+    BOOL fResetCounters);
+
+PFAPIENTRY
+PfMakeLog(
+    HANDLE hEvent);
+
+PFAPIENTRY
+PfRebindFilters(
+    INTERFACE_HANDLE pInterface,
+    PPF_LATEBIND_INFO pLateBindInfo);
+
+PFAPIENTRY
+PfRemoveFilterHandles(
+    INTERFACE_HANDLE pInterface,
+    DWORD cFilters,
+    PFILTER_HANDLE pvHandles);
+
+PFAPIENTRY
+PfRemoveFiltersFromInterface(
+    INTERFACE_HANDLE ih,
+    DWORD cInFilters,
+    PPF_FILTER_DESCRIPTOR pfiltIn,
+    DWORD cOutFilters,
+    PPF_FILTER_DESCRIPTOR pfiltOut);
+
+PFAPIENTRY
+PfRemoveGlobalFilterFromInterface(
+    INTERFACE_HANDLE pInterface,
+    GLOBAL_FILTER gfFilter);
+
+PFAPIENTRY
+PfSetLogBuffer(
+    PBYTE pbBuffer,
+    DWORD dwSize,
+    DWORD dwThreshold,
+    DWORD dwEntries,
+    PDWORD pdwLoggedEntries,
+    PDWORD pdwLostEntries,
+    PDWORD pdwSizeUsed);
+
+PFAPIENTRY
+PfTestPacket(
+    INTERFACE_HANDLE pInInterface  OPTIONAL,
+    INTERFACE_HANDLE pOutInterface OPTIONAL,
+    DWORD cBytes,
+    PBYTE pbPacket,
+    PPFFORWARD_ACTION ppAction);
+
+PFAPIENTRY
+PfUnBindInterface(
+    INTERFACE_HANDLE pInterface);
+
+#endif // _FLTDEFS_H

Reply via email to