fwpmtypes.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_FWPMTYPES
  7. #define _INC_FWPMTYPES
  8. #include <fwptypes.h>
  9. #include <ipsectypes.h>
  10. #include <iketypes.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #if (_WIN32_WINNT >= 0x0600)
  15. typedef enum FWPM_PROVIDER_CONTEXT_TYPE_ {
  16. FWPM_IPSEC_KEYING_CONTEXT,
  17. FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT,
  18. FWPM_IPSEC_IKE_QM_TUNNEL_CONTEXT,
  19. FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT,
  20. FWPM_IPSEC_AUTHIP_QM_TUNNEL_CONTEXT,
  21. FWPM_IPSEC_IKE_MM_CONTEXT,
  22. FWPM_IPSEC_AUTHIP_MM_CONTEXT,
  23. FWPM_CLASSIFY_OPTIONS_CONTEXT,
  24. FWPM_GENERAL_CONTEXT,
  25. FWPM_IPSEC_IKEV2_QM_TUNNEL_CONTEXT,
  26. FWPM_IPSEC_IKEV2_MM_CONTEXT,
  27. FWPM_DOSP_CONTEXT,
  28. FWPM_PROVIDER_CONTEXT_TYPE_MAX
  29. } FWPM_PROVIDER_CONTEXT_TYPE;
  30. typedef enum FWPM_NET_EVENT_TYPE_ {
  31. FWPM_NET_EVENT_TYPE_IKEEXT_MM_FAILURE,
  32. FWPM_NET_EVENT_TYPE_IKEEXT_QM_FAILURE,
  33. FWPM_NET_EVENT_TYPE_IKEEXT_EM_FAILURE,
  34. FWPM_NET_EVENT_TYPE_CLASSIFY_DROP,
  35. FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP,
  36. FWPM_NET_EVENT_TYPE_IPSEC_DOSP_DROP,
  37. FWPM_NET_EVENT_TYPE_MAX
  38. } FWPM_NET_EVENT_TYPE;
  39. typedef struct FWPM_ACTION0_ {
  40. FWP_ACTION_TYPE type;
  41. __C89_NAMELESS union {
  42. GUID filterType;
  43. GUID calloutKey;
  44. };
  45. } FWPM_ACTION0;
  46. typedef struct FWPM_DISPLAY_DATA0_ {
  47. wchar_t *name;
  48. wchar_t *description;
  49. } FWPM_DISPLAY_DATA0;
  50. typedef struct FWPM_SESSION0_ {
  51. GUID sessionKey;
  52. FWPM_DISPLAY_DATA0 displayData;
  53. UINT32 flags;
  54. UINT32 txnWaitTimeoutInMSec;
  55. DWORD processId;
  56. SID *sid;
  57. wchar_t *username;
  58. WINBOOL kernelMode;
  59. } FWPM_SESSION0;
  60. typedef struct FWPM_CALLOUT_ENUM_TEMPLATE0_ {
  61. GUID *providerKey;
  62. GUID layerKey;
  63. } FWPM_CALLOUT_ENUM_TEMPLATE0;
  64. typedef struct FWPM_CALLOUT_SUBSCRIPTION0_ {
  65. FWPM_CALLOUT_ENUM_TEMPLATE0 *enumTemplate;
  66. UINT32 flags;
  67. GUID sessionKey;
  68. } FWPM_CALLOUT_SUBSCRIPTION0;
  69. typedef enum FWPM_CHANGE_TYPE_ {
  70. FWPM_CHANGE_ADD = 1,
  71. FWPM_CHANGE_DELETE,
  72. FWPM_CHANGE_TYPE_MAX
  73. } FWPM_CHANGE_TYPE;
  74. typedef struct FWPM_CALLOUT_CHANGE0_ {
  75. FWPM_CHANGE_TYPE changeType;
  76. GUID calloutKey;
  77. UINT32 calloutId;
  78. } FWPM_CALLOUT_CHANGE0;
  79. typedef struct FWPM_CALLOUT0_ {
  80. GUID calloutKey;
  81. FWPM_DISPLAY_DATA0 displayData;
  82. UINT32 flags;
  83. GUID *providerKey;
  84. FWP_BYTE_BLOB providerData;
  85. GUID applicableLayer;
  86. UINT32 calloutId;
  87. } FWPM_CALLOUT0;
  88. typedef struct FWPM_CLASSIFY_OPTION0_ {
  89. FWP_CLASSIFY_OPTION_TYPE type;
  90. FWP_VALUE0 value;
  91. } FWPM_CLASSIFY_OPTION0;
  92. typedef struct FWPM_CLASSIFY_OPTIONS0_ {
  93. UINT32 numOptions;
  94. FWPM_CLASSIFY_OPTION0 *options;
  95. } FWPM_CLASSIFY_OPTIONS0;
  96. typedef enum FWPM_ENGINE_OPTION_ {
  97. FWPM_ENGINE_COLLECT_NET_EVENTS,
  98. FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS,
  99. FWPM_ENGINE_NAME_CACHE,
  100. FWPM_ENGINE_OPTION_MAX
  101. } FWPM_ENGINE_OPTION;
  102. typedef enum FWPM_FIELD_TYPE_ {
  103. FWPM_FIELD_RAW_DATA,
  104. FWPM_FIELD_IP_ADDRESS,
  105. FWPM_FIELD_FLAGS,
  106. FWPM_FIELD_TYPE_MAX
  107. } FWPM_FIELD_TYPE;
  108. typedef struct FWPM_FIELD0_ {
  109. GUID *fieldKey;
  110. FWPM_FIELD_TYPE type;
  111. FWP_DATA_TYPE dataType;
  112. } FWPM_FIELD0;
  113. typedef struct FWPM_FILTER_CHANGE0_ {
  114. FWPM_CHANGE_TYPE changeType;
  115. GUID filterKey;
  116. UINT64 filterId;
  117. } FWPM_FILTER_CHANGE0;
  118. typedef struct FWPM_FILTER_CONDITION0_ {
  119. GUID fieldKey;
  120. FWP_MATCH_TYPE matchType;
  121. FWP_CONDITION_VALUE0 conditionValue;
  122. } FWPM_FILTER_CONDITION0;
  123. typedef struct FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0_ {
  124. GUID *providerKey;
  125. FWPM_PROVIDER_CONTEXT_TYPE providerContextType;
  126. } FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0;
  127. typedef struct FWPM_FILTER_ENUM_TEMPLATE0_ {
  128. GUID *providerKey;
  129. GUID layerKey;
  130. FWP_FILTER_ENUM_TYPE enumType;
  131. UINT32 flags;
  132. FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *providerContextTemplate;
  133. UINT32 numFilterConditions;
  134. FWPM_FILTER_CONDITION0 *filterCondition;
  135. UINT32 actionMask;
  136. GUID *calloutKey;
  137. } FWPM_FILTER_ENUM_TEMPLATE0;
  138. typedef struct FWPM_FILTER_SUBSCRIPTION0_ {
  139. FWPM_FILTER_ENUM_TEMPLATE0 *enumTemplate;
  140. UINT32 flags;
  141. GUID sessionKey;
  142. } FWPM_FILTER_SUBSCRIPTION0;
  143. typedef struct FWPM_FILTER0_ {
  144. GUID filterKey;
  145. FWPM_DISPLAY_DATA0 displayData;
  146. UINT32 flags;
  147. GUID *providerKey;
  148. FWP_BYTE_BLOB providerData;
  149. GUID layerKey;
  150. GUID subLayerKey;
  151. FWP_VALUE0 weight;
  152. UINT32 numFilterConditions;
  153. FWPM_FILTER_CONDITION0 *filterCondition;
  154. FWPM_ACTION0 action;
  155. __C89_NAMELESS union {
  156. UINT64 rawContext;
  157. GUID providerContextKey;
  158. };
  159. GUID *reserved;
  160. UINT64 filterId;
  161. FWP_VALUE0 effectiveWeight;
  162. } FWPM_FILTER0;
  163. typedef struct FWPM_LAYER_ENUM_TEMPLATE0_ {
  164. UINT64 reserved;
  165. } FWPM_LAYER_ENUM_TEMPLATE0;
  166. typedef struct FWPM_LAYER0_ {
  167. GUID layerKey;
  168. FWPM_DISPLAY_DATA0 displayData;
  169. UINT32 flags;
  170. UINT32 numFields;
  171. FWPM_FIELD0 *field;
  172. GUID defaultSubLayerKey;
  173. UINT16 layerId;
  174. } FWPM_LAYER0;
  175. typedef struct FWPM_NET_EVENT_CLASSIFY_DROP0_ {
  176. UINT64 filterId;
  177. UINT16 layerId;
  178. } FWPM_NET_EVENT_CLASSIFY_DROP0;
  179. typedef struct FWPM_NET_EVENT_ENUM_TEMPLATE0_ {
  180. FILETIME startTime;
  181. FILETIME endTime;
  182. UINT32 numFilterConditions;
  183. FWPM_FILTER_CONDITION0 *filterCondition;
  184. } FWPM_NET_EVENT_ENUM_TEMPLATE0;
  185. typedef struct FWPM_NET_EVENT_HEADER0_ {
  186. FILETIME timeStamp;
  187. UINT32 flags;
  188. FWP_IP_VERSION ipVersion;
  189. UINT8 ipProtocol;
  190. __C89_NAMELESS union {
  191. UINT32 localAddrV4;
  192. FWP_BYTE_ARRAY16 localAddrV6;
  193. };
  194. __C89_NAMELESS union {
  195. UINT32 remoteAddrV4;
  196. FWP_BYTE_ARRAY16 remoteAddrV6;
  197. };
  198. UINT16 localPort;
  199. UINT16 remotePort;
  200. UINT32 scopeId;
  201. FWP_BYTE_BLOB appId;
  202. SID *userId;
  203. } FWPM_NET_EVENT_HEADER0;
  204. #define IKEEXT_CERT_HASH_LEN 20
  205. typedef struct FWPM_NET_EVENT_IKEEXT_UM_FAILURE0_ {
  206. UINT32 failureErrorCode;
  207. IPSEC_FAILURE_POINT failurePoint;
  208. UINT32 flags;
  209. IKEEXT_EM_SA_STATE emState;
  210. IKEEXT_SA_ROLE saRole;
  211. IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod;
  212. UINT8 endCertHash[IKEEXT_CERT_HASH_LEN];
  213. UINT64 mmId;
  214. UINT64 qmFilterId;
  215. } FWPM_NET_EVENT_IKEEXT_UM_FAILURE0;
  216. typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE0_ {
  217. UINT32 failureErrorCode;
  218. IPSEC_FAILURE_POINT failurePoint;
  219. UINT32 flags;
  220. IKEEXT_KEY_MODULE_TYPE keyingModuleType;
  221. IKEEXT_MM_SA_STATE mmState;
  222. IKEEXT_SA_ROLE saRole;
  223. IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod;
  224. UINT8 endCertHash[IKEEXT_CERT_HASH_LEN];
  225. UINT64 mmId;
  226. UINT64 mmFilterId;
  227. } FWPM_NET_EVENT_IKEEXT_MM_FAILURE0;
  228. typedef struct FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 {
  229. UINT32 failureErrorCode;
  230. IPSEC_FAILURE_POINT failurePoint;
  231. IKEEXT_KEY_MODULE_TYPE keyingModuleType;
  232. IKEEXT_QM_SA_STATE qmState;
  233. IKEEXT_SA_ROLE saRole;
  234. IPSEC_TRAFFIC_TYPE saTrafficType;
  235. __C89_NAMELESS union {
  236. FWP_CONDITION_VALUE0 localSubNet;
  237. };
  238. __C89_NAMELESS union {
  239. FWP_CONDITION_VALUE0 remoteSubNet;
  240. };
  241. UINT64 qmFilterId;
  242. } FWPM_NET_EVENT_IKEEXT_QM_FAILURE0;
  243. typedef UINT32 IPSEC_SA_SPI;
  244. typedef struct FWPM_NET_EVENT_IPSEC_KERNEL_DROP0_ {
  245. INT32 failureStatus;
  246. FWP_DIRECTION direction;
  247. IPSEC_SA_SPI spi;
  248. UINT64 filterId;
  249. UINT16 layerId;
  250. } FWPM_NET_EVENT_IPSEC_KERNEL_DROP0;
  251. #if (_WIN32_WINNT >= 0x0601)
  252. typedef struct FWPM_NET_EVENT_IPSEC_DOSP_DROP0_ {
  253. FWP_IP_VERSION ipVersion;
  254. __C89_NAMELESS union {
  255. UINT32 publicHostV4Addr;
  256. UINT8 publicHostV6Addr[16];
  257. };
  258. __C89_NAMELESS union {
  259. UINT32 internalHostV4Addr;
  260. UINT8 internalHostV6Addr[16];
  261. };
  262. INT32 failureStatus;
  263. FWP_DIRECTION direction;
  264. } FWPM_NET_EVENT_IPSEC_DOSP_DROP0;
  265. #endif /*(_WIN32_WINNT >= 0x0601)*/
  266. typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE0_ {
  267. UINT32 failureErrorCode;
  268. IPSEC_FAILURE_POINT failurePoint;
  269. UINT32 flags;
  270. IKEEXT_EM_SA_STATE emState;
  271. IKEEXT_SA_ROLE saRole;
  272. IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod;
  273. UINT8 endCertHash[IKEEXT_CERT_HASH_LEN];
  274. UINT64 mmId;
  275. UINT64 qmFilterId;
  276. } FWPM_NET_EVENT_IKEEXT_EM_FAILURE0;
  277. typedef struct FWPM_NET_EVENT0_ {
  278. FWPM_NET_EVENT_HEADER0 header;
  279. FWPM_NET_EVENT_TYPE type;
  280. __C89_NAMELESS union {
  281. FWPM_NET_EVENT_IKEEXT_MM_FAILURE0 *ikeMmFailure;
  282. FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
  283. FWPM_NET_EVENT_IKEEXT_EM_FAILURE0 *ikeEmFailure;
  284. FWPM_NET_EVENT_CLASSIFY_DROP0 *classifyDrop;
  285. FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
  286. #if (_WIN32_WINNT >= 0x0601)
  287. FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
  288. #endif /*(_WIN32_WINNT >= 0x0601)*/
  289. };
  290. } FWPM_NET_EVENT0;
  291. typedef struct FWPM_PROVIDER_CHANGE0_ {
  292. FWPM_CHANGE_TYPE changeType;
  293. GUID providerKey;
  294. } FWPM_PROVIDER_CHANGE0;
  295. typedef struct FWPM_PROVIDER_CONTEXT_CHANGE0_ {
  296. FWPM_CHANGE_TYPE changeType;
  297. GUID providerContextKey;
  298. UINT64 providerContextId;
  299. } FWPM_PROVIDER_CONTEXT_CHANGE0;
  300. typedef struct FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0_ {
  301. FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *enumTemplate;
  302. UINT32 flags;
  303. GUID sessionKey;
  304. } FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0;
  305. typedef struct FWPM_PROVIDER_CONTEXT0_ {
  306. GUID providerContextKey;
  307. FWPM_DISPLAY_DATA0 displayData;
  308. UINT32 flags;
  309. GUID *providerKey;
  310. FWP_BYTE_BLOB providerData;
  311. FWPM_PROVIDER_CONTEXT_TYPE type;
  312. __C89_NAMELESS union {
  313. IPSEC_KEYING_POLICY0 *keyingPolicy;
  314. IPSEC_TRANSPORT_POLICY0 *ikeQmTransportPolicy;
  315. IPSEC_TUNNEL_POLICY0 *ikeQmTunnelPolicy;
  316. IPSEC_TRANSPORT_POLICY0 *authipQmTransportPolicy;
  317. IPSEC_TUNNEL_POLICY0 *authipQmTunnelPolicy;
  318. IKEEXT_POLICY0 *ikeMmPolicy;
  319. IKEEXT_POLICY0 *authIpMmPolicy;
  320. FWP_BYTE_BLOB *dataBuffer;
  321. FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
  322. };
  323. UINT64 providerContextId;
  324. } FWPM_PROVIDER_CONTEXT0;
  325. typedef struct FWPM_PROVIDER_ENUM_TEMPLATE0_ {
  326. UINT64 reserved;
  327. } FWPM_PROVIDER_ENUM_TEMPLATE0;
  328. typedef struct FWPM_PROVIDER_SUBSCRIPTION0_ {
  329. FWPM_PROVIDER_ENUM_TEMPLATE0 *enumTemplate;
  330. UINT32 flags;
  331. GUID sessionKey;
  332. } FWPM_PROVIDER_SUBSCRIPTION0;
  333. typedef struct FWPM_PROVIDER0_ {
  334. GUID providerKey;
  335. FWPM_DISPLAY_DATA0 displayData;
  336. UINT32 flags;
  337. FWP_BYTE_BLOB providerData;
  338. wchar_t *serviceName;
  339. } FWPM_PROVIDER0;
  340. typedef struct FWPM_SESSION_ENUM_TEMPLATE0_ {
  341. UINT64 reserved;
  342. } FWPM_SESSION_ENUM_TEMPLATE0;
  343. typedef struct FWPM_SUBLAYER_CHANGE0_ {
  344. FWPM_CHANGE_TYPE changeType;
  345. GUID subLayerKey;
  346. } FWPM_SUBLAYER_CHANGE0;
  347. typedef struct FWPM_SUBLAYER_ENUM_TEMPLATE0_ {
  348. GUID *providerKey;
  349. } FWPM_SUBLAYER_ENUM_TEMPLATE0;
  350. typedef struct FWPM_SUBLAYER_SUBSCRIPTION0_ {
  351. FWPM_SUBLAYER_ENUM_TEMPLATE0 *enumTemplate;
  352. UINT32 flags;
  353. GUID sessionKey;
  354. } FWPM_SUBLAYER_SUBSCRIPTION0;
  355. typedef struct FWPM_SUBLAYER0_ {
  356. GUID subLayerKey;
  357. FWPM_DISPLAY_DATA0 displayData;
  358. UINT16 flags;
  359. GUID *providerKey;
  360. FWP_BYTE_BLOB providerData;
  361. UINT16 weight;
  362. } FWPM_SUBLAYER0;
  363. #endif /*(_WIN32_WINNT >= 0x0600)*/
  364. #if (_WIN32_WINNT >= 0x0601)
  365. typedef enum FWPM_SYSTEM_PORT_TYPE_ {
  366. FWPM_SYSTEM_PORT_RPC_EPMAP,
  367. FWPM_SYSTEM_PORT_TEREDO,
  368. FWPM_SYSTEM_PORT_IPHTTPS_IN,
  369. FWPM_SYSTEM_PORT_IPHTTPS_OUT,
  370. FWPM_SYSTEM_PORT_TYPE_MAX
  371. } FWPM_SYSTEM_PORT_TYPE;
  372. typedef enum {
  373. DlUnicast,
  374. DlMulticast,
  375. DlBroadcast
  376. } DL_ADDRESS_TYPE, *PDL_ADDRESS_TYPE;
  377. typedef struct FWPM_PROVIDER_CONTEXT1_ {
  378. GUID providerContextKey;
  379. FWPM_DISPLAY_DATA0 displayData;
  380. UINT32 flags;
  381. GUID *providerKey;
  382. FWP_BYTE_BLOB providerData;
  383. FWPM_PROVIDER_CONTEXT_TYPE type;
  384. __C89_NAMELESS union {
  385. IPSEC_KEYING_POLICY0 *keyingPolicy;
  386. IPSEC_TRANSPORT_POLICY1 *ikeQmTransportPolicy;
  387. IPSEC_TUNNEL_POLICY1 *ikeQmTunnelPolicy;
  388. IPSEC_TRANSPORT_POLICY1 *authipQmTransportPolicy;
  389. IPSEC_TUNNEL_POLICY1 *authipQmTunnelPolicy;
  390. IKEEXT_POLICY1 *ikeMmPolicy;
  391. IKEEXT_POLICY1 *authIpMmPolicy;
  392. FWP_BYTE_BLOB *dataBuffer;
  393. FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
  394. IPSEC_TUNNEL_POLICY1 *ikeV2QmTunnelPolicy;
  395. IKEEXT_POLICY1 *ikeV2MmPolicy;
  396. IPSEC_DOSP_OPTIONS0 *idpOptions;
  397. };
  398. UINT64 providerContextId;
  399. } FWPM_PROVIDER_CONTEXT1;
  400. typedef struct FWPM_NET_EVENT_HEADER1_ {
  401. FILETIME timeStamp;
  402. UINT32 flags;
  403. FWP_IP_VERSION ipVersion;
  404. UINT8 ipProtocol;
  405. __C89_NAMELESS union {
  406. UINT32 localAddrV4;
  407. FWP_BYTE_ARRAY16 localAddrV6;
  408. };
  409. __C89_NAMELESS union {
  410. UINT32 remoteAddrV4;
  411. FWP_BYTE_ARRAY16 remoteAddrV6;
  412. };
  413. UINT16 localPort;
  414. UINT16 remotePort;
  415. UINT32 scopeId;
  416. FWP_BYTE_BLOB appId;
  417. SID *userId;
  418. __C89_NAMELESS union {
  419. __C89_NAMELESS struct {
  420. FWP_AF addressFamily;
  421. __C89_NAMELESS union {
  422. __C89_NAMELESS struct {
  423. FWP_BYTE_ARRAY6 dstAddrEth;
  424. FWP_BYTE_ARRAY6 srcAddrEth;
  425. DL_ADDRESS_TYPE addrType;
  426. FWP_ETHER_ENCAP_METHOD encapMethod;
  427. UINT16 etherType;
  428. UINT32 snapControl;
  429. UINT32 snapOui;
  430. UINT16 vlanTag;
  431. UINT64 ifLuid;
  432. };
  433. };
  434. };
  435. };
  436. } FWPM_NET_EVENT_HEADER1;
  437. #define IKEEXT_CERT_HASH_LEN 20
  438. typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE1_ {
  439. UINT32 failureErrorCode;
  440. IPSEC_FAILURE_POINT failurePoint;
  441. UINT32 flags;
  442. IKEEXT_KEY_MODULE_TYPE keyingModuleType;
  443. IKEEXT_MM_SA_STATE mmState;
  444. IKEEXT_SA_ROLE saRole;
  445. IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod;
  446. UINT8 endCertHash[IKEEXT_CERT_HASH_LEN];
  447. UINT64 mmId;
  448. UINT64 mmFilterId;
  449. wchar_t *localPrincipalNameForAuth;
  450. wchar_t *remotePrincipalNameForAuth;
  451. UINT32 numLocalPrincipalGroupSids;
  452. LPWSTR *localPrincipalGroupSids;
  453. UINT32 numRemotePrincipalGroupSids;
  454. LPWSTR *remotePrincipalGroupSids;
  455. } FWPM_NET_EVENT_IKEEXT_MM_FAILURE1;
  456. typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE1_ {
  457. UINT32 failureErrorCode;
  458. IPSEC_FAILURE_POINT failurePoint;
  459. UINT32 flags;
  460. IKEEXT_EM_SA_STATE emState;
  461. IKEEXT_SA_ROLE saRole;
  462. IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod;
  463. UINT8 endCertHash[IKEEXT_CERT_HASH_LEN];
  464. UINT64 mmId;
  465. UINT64 qmFilterId;
  466. wchar_t *localPrincipalNameForAuth;
  467. wchar_t *remotePrincipalNameForAuth;
  468. UINT32 numLocalPrincipalGroupSids;
  469. LPWSTR *localPrincipalGroupSids;
  470. UINT32 numRemotePrincipalGroupSids;
  471. LPWSTR *remotePrincipalGroupSids;
  472. IPSEC_TRAFFIC_TYPE saTrafficType;
  473. } FWPM_NET_EVENT_IKEEXT_EM_FAILURE1;
  474. typedef struct FWPM_NET_EVENT_CLASSIFY_DROP1_ {
  475. UINT64 filterId;
  476. UINT16 layerId;
  477. UINT32 reauthReason;
  478. UINT32 originalProfile;
  479. UINT32 currentProfile;
  480. UINT32 msFwpDirection;
  481. BOOL isLoopback;
  482. } FWPM_NET_EVENT_CLASSIFY_DROP1;
  483. typedef struct FWPM_NET_EVENT1_ {
  484. FWPM_NET_EVENT_HEADER1 header;
  485. FWPM_NET_EVENT_TYPE type;
  486. __C89_NAMELESS union {
  487. FWPM_NET_EVENT_IKEEXT_MM_FAILURE1 *ikeMmFailure;
  488. FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
  489. FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
  490. FWPM_NET_EVENT_CLASSIFY_DROP1 *classifyDrop;
  491. FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
  492. FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
  493. };
  494. } FWPM_NET_EVENT1;
  495. typedef struct FWPM_NET_EVENT_SUBSCRIPTION0_ {
  496. FWPM_NET_EVENT_ENUM_TEMPLATE0 *enumTemplate;
  497. UINT32 flags;
  498. GUID sessionKey;
  499. } FWPM_NET_EVENT_SUBSCRIPTION0;
  500. typedef struct FWPM_SYSTEM_PORTS_BY_TYPE0_ {
  501. FWPM_SYSTEM_PORT_TYPE type;
  502. UINT32 numPorts;
  503. UINT16 *ports;
  504. } FWPM_SYSTEM_PORTS_BY_TYPE0;
  505. typedef struct FWPM_SYSTEM_PORTS0_ {
  506. UINT32 numTypes;
  507. FWPM_SYSTEM_PORTS_BY_TYPE0 *types;
  508. } FWPM_SYSTEM_PORTS0;
  509. #endif /*(_WIN32_WINNT >= 0x0601)*/
  510. #ifdef __cplusplus
  511. }
  512. #endif
  513. #endif /*_INC_FWPMTYPES*/