blob: 00e7b10ea300d08f2df2b4d78cfddd33192cd2de [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_FWTYPES
#define _INC_FWTYPES
#ifdef __cplusplus
extern "C" {
#endif
#if (_WIN32_WINNT >= 0x0600)
#define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x00000001
#define SOCKET_SETTINGS_ALLOW_INSECURE 0x00000002
typedef UINT32 FWP_ACTION_TYPE;
typedef enum FWP_CLASSIFY_OPTION_TYPE_ {
FWP_CLASSIFY_OPTION_MULTICAST_STATE = 0,
FWP_CLASSIFY_OPTION_LOOSE_SOURCE_MAPPING,
FWP_CLASSIFY_OPTION_UNICAST_LIFETIME,
FWP_CLASSIFY_OPTION_MCAST_BCAST_LIFETIME,
FWP_CLASSIFY_OPTION_SECURE_SOCKET_SECURITY_FLAGS,
FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_MM_POLICY_KEY,
FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_QM_POLICY_KEY,
FWP_CLASSIFY_OPTION_MAX
} FWP_CLASSIFY_OPTION_TYPE;
typedef enum FWP_DATA_TYPE_ {
FWP_EMPTY = 0,
FWP_UINT8,
FWP_UINT16,
FWP_UINT32,
FWP_UINT64,
FWP_INT8,
FWP_INT16,
FWP_INT32,
FWP_INT64,
FWP_FLOAT,
FWP_DOUBLE,
FWP_BYTE_ARRAY16_TYPE,
FWP_BYTE_BLOB_TYPE,
FWP_SID,
FWP_SECURITY_DESCRIPTOR_TYPE,
FWP_TOKEN_INFORMATION_TYPE ,
FWP_TOKEN_ACCESS_INFORMATION_TYPE ,
FWP_UNICODE_STRING_TYPE,
FWP_BYTE_ARRAY6_TYPE,
FWP_SINGLE_DATA_TYPE_MAX = 0xFF,
FWP_V4_ADDR_MASK,
FWP_V6_ADDR_MASK,
FWP_RANGE_TYPE,
FWP_DATA_TYPE_MAX
} FWP_DATA_TYPE;
typedef enum FWP_DIRECTION_ {
FWP_DIRECTION_OUTBOUND = 0,
FWP_DIRECTION_INBOUND,
FWP_DIRECTION_MAX
} FWP_DIRECTION;
typedef enum FWP_FILTER_ENUM_TYPE_ {
FWP_FILTER_ENUM_FULLY_CONTAINED = 0,
FWP_FILTER_ENUM_OVERLAPPING,
FWP_FILTER_ENUM_TYPE_MAX
} FWP_FILTER_ENUM_TYPE;
typedef enum FWP_IP_VERSION_ {
FWP_IP_VERSION_V4 = 0,
FWP_IP_VERSION_V6,
FWP_IP_VERSION_NONE,
FWP_IP_VERSION_MAX
} FWP_IP_VERSION;
typedef enum FWP_MATCH_TYPE_ {
FWP_MATCH_EQUAL = 0,
FWP_MATCH_GREATER,
FWP_MATCH_LESS,
FWP_MATCH_GREATER_OR_EQUAL,
FWP_MATCH_LESS_OR_EQUAL,
FWP_MATCH_RANGE,
FWP_MATCH_FLAGS_ALL_SET,
FWP_MATCH_FLAGS_ANY_SET,
FWP_MATCH_FLAGS_NONE_SET,
FWP_MATCH_EQUAL_CASE_INSENSITIVE,
FWP_MATCH_NOT_EQUAL,
FWP_MATCH_TYPE_MAX
} FWP_MATCH_TYPE;
typedef struct FWP_BYTE_ARRAY16_ {
UINT8 byteArray16[16];
} FWP_BYTE_ARRAY16;
typedef struct FWP_BYTE_BLOB_ {
UINT32 size;
UINT8 *data;
} FWP_BYTE_BLOB;
typedef struct FWP_BYTE_ARRAY6_ {
UINT8 byteArray6[6];
} FWP_BYTE_ARRAY6;
typedef struct FWP_V4_ADDR_AND_MASK_ {
UINT32 addr;
UINT32 mask;
} FWP_V4_ADDR_AND_MASK;
#define FWP_V6_ADDR_SIZE 16
typedef struct FWP_V6_ADDR_AND_MASK_ {
UINT8 addr[FWP_V6_ADDR_SIZE];
UINT8 prefixLength;
} FWP_V6_ADDR_AND_MASK;
typedef struct _FWP_TOKEN_INFORMATION {
ULONG sidCount;
PSID_AND_ATTRIBUTES sids;
ULONG restrictedSidCount;
PSID_AND_ATTRIBUTES restrictedSids;
} FWP_TOKEN_INFORMATION;
typedef struct FWP_VALUE0_ {
FWP_DATA_TYPE type;
__C89_NAMELESS union {
LPVOID EMPTY; // case(FWP_EMPTY)
UINT8 uint8;
UINT16 uint16;
UINT32 uint32;
UINT64 *uint64;
INT8 int8;
INT16 int16;
INT32 int32;
INT64 *int64;
float float32;
double *double64;
FWP_BYTE_ARRAY16 *byteArray16;
FWP_BYTE_BLOB *byteBlob;
SID *sid;
FWP_BYTE_BLOB *sd;
FWP_TOKEN_INFORMATION *tokenInformation;
FWP_BYTE_BLOB *tokenAccessInformation;
LPWSTR unicodeString;
FWP_BYTE_ARRAY6 *byteArray6;
};
} FWP_VALUE0;
typedef struct FWP_RANGE0_ {
FWP_VALUE0 valueLow;
FWP_VALUE0 valueHigh;
} FWP_RANGE0;
typedef struct FWP_CONDITION_VALUE0_ {
FWP_DATA_TYPE type;
__C89_NAMELESS union {
UINT8 uint8;
UINT16 uint16;
UINT32 uint32;
UINT64 *uint64;
INT8 int8;
INT16 int16;
INT32 int32;
INT64 *int64;
float float32;
double *double64;
FWP_BYTE_ARRAY16 *byteArray16;
FWP_BYTE_BLOB *byteBlob;
SID *sid;
FWP_BYTE_BLOB *sd;
FWP_BYTE_BLOB *tokenInformation;
FWP_BYTE_BLOB *tokenAccessInformation;
LPWSTR unicodeString;
FWP_BYTE_ARRAY6 *byteArray6;
FWP_V4_ADDR_AND_MASK *v4AddrMask;
FWP_V6_ADDR_AND_MASK *v6AddrMask;
FWP_RANGE0 *rangeValue;
};
} FWP_CONDITION_VALUE0;
#endif /*(_WIN32_WINNT >= 0x0600)*/
#if (_WIN32_WINNT >= 0x0601)
typedef enum FWP_NE_FAMILY_ {
FWP_AF_INET = FWP_IP_VERSION_V4,
FWP_AF_INET6 = FWP_IP_VERSION_V6,
FWP_AF_ETHER = FWP_IP_VERSION_NONE,
FWP_AF_NONE
} FWP_AF;
typedef enum FWP_ETHER_ENCAP_METHOD_ {
FWP_ETHER_ENCAP_METHOD_ETHER_V2 = 0,
FWP_ETHER_ENCAP_METHOD_SNAP = 1,
FWP_ETHER_ENCAP_METHOD_SNAP_W_OUI_ZERO = 3
} FWP_ETHER_ENCAP_METHOD;
#endif /*(_WIN32_WINNT >= 0x0601)*/
#ifdef __cplusplus
}
#endif
#endif /*_INC_FWTYPES*/