golang.zx2c4.com/wireguard/windows@v0.5.4-0.20230123132234-dcc0eb72a04b/tunnel/firewall/types_windows.go (about) 1 /* SPDX-License-Identifier: MIT 2 * 3 * Copyright (C) 2019-2022 WireGuard LLC. All Rights Reserved. 4 */ 5 6 package firewall 7 8 import "golang.org/x/sys/windows" 9 10 const ( 11 anysizeArray = 1 // ANYSIZE_ARRAY defined in winnt.h 12 13 wtFwpBitmapArray64_Size = 8 14 15 wtFwpByteArray16_Size = 16 16 17 wtFwpByteArray6_Size = 6 18 19 wtFwpmAction0_Size = 20 20 wtFwpmAction0_filterType_Offset = 4 21 22 wtFwpV4AddrAndMask_Size = 8 23 wtFwpV4AddrAndMask_mask_Offset = 4 24 25 wtFwpV6AddrAndMask_Size = 17 26 wtFwpV6AddrAndMask_prefixLength_Offset = 16 27 ) 28 29 type wtFwpActionFlag uint32 30 31 const ( 32 cFWP_ACTION_FLAG_TERMINATING wtFwpActionFlag = 0x00001000 33 cFWP_ACTION_FLAG_NON_TERMINATING wtFwpActionFlag = 0x00002000 34 cFWP_ACTION_FLAG_CALLOUT wtFwpActionFlag = 0x00004000 35 ) 36 37 // FWP_ACTION_TYPE defined in fwptypes.h 38 type wtFwpActionType uint32 39 40 const ( 41 cFWP_ACTION_BLOCK wtFwpActionType = wtFwpActionType(0x00000001 | cFWP_ACTION_FLAG_TERMINATING) 42 cFWP_ACTION_PERMIT wtFwpActionType = wtFwpActionType(0x00000002 | cFWP_ACTION_FLAG_TERMINATING) 43 cFWP_ACTION_CALLOUT_TERMINATING wtFwpActionType = wtFwpActionType(0x00000003 | cFWP_ACTION_FLAG_CALLOUT | cFWP_ACTION_FLAG_TERMINATING) 44 cFWP_ACTION_CALLOUT_INSPECTION wtFwpActionType = wtFwpActionType(0x00000004 | cFWP_ACTION_FLAG_CALLOUT | cFWP_ACTION_FLAG_NON_TERMINATING) 45 cFWP_ACTION_CALLOUT_UNKNOWN wtFwpActionType = wtFwpActionType(0x00000005 | cFWP_ACTION_FLAG_CALLOUT) 46 cFWP_ACTION_CONTINUE wtFwpActionType = wtFwpActionType(0x00000006 | cFWP_ACTION_FLAG_NON_TERMINATING) 47 cFWP_ACTION_NONE wtFwpActionType = 0x00000007 48 cFWP_ACTION_NONE_NO_MATCH wtFwpActionType = 0x00000008 49 cFWP_ACTION_BITMAP_INDEX_SET wtFwpActionType = 0x00000009 50 ) 51 52 // FWP_BYTE_BLOB defined in fwptypes.h 53 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_byte_blob_) 54 type wtFwpByteBlob struct { 55 size uint32 56 data *uint8 57 } 58 59 // FWP_MATCH_TYPE defined in fwptypes.h 60 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ne-fwptypes-fwp_match_type_) 61 type wtFwpMatchType uint32 62 63 const ( 64 cFWP_MATCH_EQUAL wtFwpMatchType = 0 65 cFWP_MATCH_GREATER wtFwpMatchType = cFWP_MATCH_EQUAL + 1 66 cFWP_MATCH_LESS wtFwpMatchType = cFWP_MATCH_GREATER + 1 67 cFWP_MATCH_GREATER_OR_EQUAL wtFwpMatchType = cFWP_MATCH_LESS + 1 68 cFWP_MATCH_LESS_OR_EQUAL wtFwpMatchType = cFWP_MATCH_GREATER_OR_EQUAL + 1 69 cFWP_MATCH_RANGE wtFwpMatchType = cFWP_MATCH_LESS_OR_EQUAL + 1 70 cFWP_MATCH_FLAGS_ALL_SET wtFwpMatchType = cFWP_MATCH_RANGE + 1 71 cFWP_MATCH_FLAGS_ANY_SET wtFwpMatchType = cFWP_MATCH_FLAGS_ALL_SET + 1 72 cFWP_MATCH_FLAGS_NONE_SET wtFwpMatchType = cFWP_MATCH_FLAGS_ANY_SET + 1 73 cFWP_MATCH_EQUAL_CASE_INSENSITIVE wtFwpMatchType = cFWP_MATCH_FLAGS_NONE_SET + 1 74 cFWP_MATCH_NOT_EQUAL wtFwpMatchType = cFWP_MATCH_EQUAL_CASE_INSENSITIVE + 1 75 cFWP_MATCH_PREFIX wtFwpMatchType = cFWP_MATCH_NOT_EQUAL + 1 76 cFWP_MATCH_NOT_PREFIX wtFwpMatchType = cFWP_MATCH_PREFIX + 1 77 cFWP_MATCH_TYPE_MAX wtFwpMatchType = cFWP_MATCH_NOT_PREFIX + 1 78 ) 79 80 // FWPM_ACTION0 defined in fwpmtypes.h 81 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_action0_) 82 type wtFwpmAction0 struct { 83 _type wtFwpActionType 84 filterType windows.GUID // Windows type: GUID 85 } 86 87 // Defined in fwpmu.h. 4cd62a49-59c3-4969-b7f3-bda5d32890a4 88 var cFWPM_CONDITION_IP_LOCAL_INTERFACE = windows.GUID{ 89 Data1: 0x4cd62a49, 90 Data2: 0x59c3, 91 Data3: 0x4969, 92 Data4: [8]byte{0xb7, 0xf3, 0xbd, 0xa5, 0xd3, 0x28, 0x90, 0xa4}, 93 } 94 95 // Defined in fwpmu.h. b235ae9a-1d64-49b8-a44c-5ff3d9095045 96 var cFWPM_CONDITION_IP_REMOTE_ADDRESS = windows.GUID{ 97 Data1: 0xb235ae9a, 98 Data2: 0x1d64, 99 Data3: 0x49b8, 100 Data4: [8]byte{0xa4, 0x4c, 0x5f, 0xf3, 0xd9, 0x09, 0x50, 0x45}, 101 } 102 103 // Defined in fwpmu.h. 3971ef2b-623e-4f9a-8cb1-6e79b806b9a7 104 var cFWPM_CONDITION_IP_PROTOCOL = windows.GUID{ 105 Data1: 0x3971ef2b, 106 Data2: 0x623e, 107 Data3: 0x4f9a, 108 Data4: [8]byte{0x8c, 0xb1, 0x6e, 0x79, 0xb8, 0x06, 0xb9, 0xa7}, 109 } 110 111 // Defined in fwpmu.h. 0c1ba1af-5765-453f-af22-a8f791ac775b 112 var cFWPM_CONDITION_IP_LOCAL_PORT = windows.GUID{ 113 Data1: 0x0c1ba1af, 114 Data2: 0x5765, 115 Data3: 0x453f, 116 Data4: [8]byte{0xaf, 0x22, 0xa8, 0xf7, 0x91, 0xac, 0x77, 0x5b}, 117 } 118 119 // Defined in fwpmu.h. c35a604d-d22b-4e1a-91b4-68f674ee674b 120 var cFWPM_CONDITION_IP_REMOTE_PORT = windows.GUID{ 121 Data1: 0xc35a604d, 122 Data2: 0xd22b, 123 Data3: 0x4e1a, 124 Data4: [8]byte{0x91, 0xb4, 0x68, 0xf6, 0x74, 0xee, 0x67, 0x4b}, 125 } 126 127 // Defined in fwpmu.h. d78e1e87-8644-4ea5-9437-d809ecefc971 128 var cFWPM_CONDITION_ALE_APP_ID = windows.GUID{ 129 Data1: 0xd78e1e87, 130 Data2: 0x8644, 131 Data3: 0x4ea5, 132 Data4: [8]byte{0x94, 0x37, 0xd8, 0x09, 0xec, 0xef, 0xc9, 0x71}, 133 } 134 135 // af043a0a-b34d-4f86-979c-c90371af6e66 136 var cFWPM_CONDITION_ALE_USER_ID = windows.GUID{ 137 Data1: 0xaf043a0a, 138 Data2: 0xb34d, 139 Data3: 0x4f86, 140 Data4: [8]byte{0x97, 0x9c, 0xc9, 0x03, 0x71, 0xaf, 0x6e, 0x66}, 141 } 142 143 // d9ee00de-c1ef-4617-bfe3-ffd8f5a08957 144 var cFWPM_CONDITION_IP_LOCAL_ADDRESS = windows.GUID{ 145 Data1: 0xd9ee00de, 146 Data2: 0xc1ef, 147 Data3: 0x4617, 148 Data4: [8]byte{0xbf, 0xe3, 0xff, 0xd8, 0xf5, 0xa0, 0x89, 0x57}, 149 } 150 151 var ( 152 cFWPM_CONDITION_ICMP_TYPE = cFWPM_CONDITION_IP_LOCAL_PORT 153 cFWPM_CONDITION_ICMP_CODE = cFWPM_CONDITION_IP_REMOTE_PORT 154 ) 155 156 // 7bc43cbf-37ba-45f1-b74a-82ff518eeb10 157 var cFWPM_CONDITION_L2_FLAGS = windows.GUID{ 158 Data1: 0x7bc43cbf, 159 Data2: 0x37ba, 160 Data3: 0x45f1, 161 Data4: [8]byte{0xb7, 0x4a, 0x82, 0xff, 0x51, 0x8e, 0xeb, 0x10}, 162 } 163 164 type wtFwpmL2Flags uint32 165 166 const cFWP_CONDITION_L2_IS_VM2VM wtFwpmL2Flags = 0x00000010 167 168 var cFWPM_CONDITION_FLAGS = windows.GUID{ 169 Data1: 0x632ce23b, 170 Data2: 0x5167, 171 Data3: 0x435c, 172 Data4: [8]byte{0x86, 0xd7, 0xe9, 0x03, 0x68, 0x4a, 0xa8, 0x0c}, 173 } 174 175 type wtFwpmFlags uint32 176 177 const cFWP_CONDITION_FLAG_IS_LOOPBACK wtFwpmFlags = 0x00000001 178 179 // Defined in fwpmtypes.h 180 type wtFwpmFilterFlags uint32 181 182 const ( 183 cFWPM_FILTER_FLAG_NONE wtFwpmFilterFlags = 0x00000000 184 cFWPM_FILTER_FLAG_PERSISTENT wtFwpmFilterFlags = 0x00000001 185 cFWPM_FILTER_FLAG_BOOTTIME wtFwpmFilterFlags = 0x00000002 186 cFWPM_FILTER_FLAG_HAS_PROVIDER_CONTEXT wtFwpmFilterFlags = 0x00000004 187 cFWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT wtFwpmFilterFlags = 0x00000008 188 cFWPM_FILTER_FLAG_PERMIT_IF_CALLOUT_UNREGISTERED wtFwpmFilterFlags = 0x00000010 189 cFWPM_FILTER_FLAG_DISABLED wtFwpmFilterFlags = 0x00000020 190 cFWPM_FILTER_FLAG_INDEXED wtFwpmFilterFlags = 0x00000040 191 cFWPM_FILTER_FLAG_HAS_SECURITY_REALM_PROVIDER_CONTEXT wtFwpmFilterFlags = 0x00000080 192 cFWPM_FILTER_FLAG_SYSTEMOS_ONLY wtFwpmFilterFlags = 0x00000100 193 cFWPM_FILTER_FLAG_GAMEOS_ONLY wtFwpmFilterFlags = 0x00000200 194 cFWPM_FILTER_FLAG_SILENT_MODE wtFwpmFilterFlags = 0x00000400 195 cFWPM_FILTER_FLAG_IPSEC_NO_ACQUIRE_INITIATE wtFwpmFilterFlags = 0x00000800 196 ) 197 198 // FWPM_LAYER_ALE_AUTH_CONNECT_V4 (c38d57d1-05a7-4c33-904f-7fbceee60e82) defined in fwpmu.h 199 var cFWPM_LAYER_ALE_AUTH_CONNECT_V4 = windows.GUID{ 200 Data1: 0xc38d57d1, 201 Data2: 0x05a7, 202 Data3: 0x4c33, 203 Data4: [8]byte{0x90, 0x4f, 0x7f, 0xbc, 0xee, 0xe6, 0x0e, 0x82}, 204 } 205 206 // e1cd9fe7-f4b5-4273-96c0-592e487b8650 207 var cFWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4 = windows.GUID{ 208 Data1: 0xe1cd9fe7, 209 Data2: 0xf4b5, 210 Data3: 0x4273, 211 Data4: [8]byte{0x96, 0xc0, 0x59, 0x2e, 0x48, 0x7b, 0x86, 0x50}, 212 } 213 214 // FWPM_LAYER_ALE_AUTH_CONNECT_V6 (4a72393b-319f-44bc-84c3-ba54dcb3b6b4) defined in fwpmu.h 215 var cFWPM_LAYER_ALE_AUTH_CONNECT_V6 = windows.GUID{ 216 Data1: 0x4a72393b, 217 Data2: 0x319f, 218 Data3: 0x44bc, 219 Data4: [8]byte{0x84, 0xc3, 0xba, 0x54, 0xdc, 0xb3, 0xb6, 0xb4}, 220 } 221 222 // a3b42c97-9f04-4672-b87e-cee9c483257f 223 var cFWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6 = windows.GUID{ 224 Data1: 0xa3b42c97, 225 Data2: 0x9f04, 226 Data3: 0x4672, 227 Data4: [8]byte{0xb8, 0x7e, 0xce, 0xe9, 0xc4, 0x83, 0x25, 0x7f}, 228 } 229 230 // 94c44912-9d6f-4ebf-b995-05ab8a088d1b 231 var cFWPM_LAYER_OUTBOUND_MAC_FRAME_NATIVE = windows.GUID{ 232 Data1: 0x94c44912, 233 Data2: 0x9d6f, 234 Data3: 0x4ebf, 235 Data4: [8]byte{0xb9, 0x95, 0x05, 0xab, 0x8a, 0x08, 0x8d, 0x1b}, 236 } 237 238 // d4220bd3-62ce-4f08-ae88-b56e8526df50 239 var cFWPM_LAYER_INBOUND_MAC_FRAME_NATIVE = windows.GUID{ 240 Data1: 0xd4220bd3, 241 Data2: 0x62ce, 242 Data3: 0x4f08, 243 Data4: [8]byte{0xae, 0x88, 0xb5, 0x6e, 0x85, 0x26, 0xdf, 0x50}, 244 } 245 246 // FWP_BITMAP_ARRAY64 defined in fwtypes.h 247 type wtFwpBitmapArray64 struct { 248 bitmapArray64 [8]uint8 // Windows type: [8]UINT8 249 } 250 251 // FWP_BYTE_ARRAY6 defined in fwtypes.h 252 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_byte_array6_) 253 type wtFwpByteArray6 struct { 254 byteArray6 [6]uint8 // Windows type: [6]UINT8 255 } 256 257 // FWP_BYTE_ARRAY16 defined in fwptypes.h 258 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_byte_array16_) 259 type wtFwpByteArray16 struct { 260 byteArray16 [16]uint8 // Windows type [16]UINT8 261 } 262 263 // FWP_CONDITION_VALUE0 defined in fwptypes.h 264 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_condition_value0). 265 type wtFwpConditionValue0 wtFwpValue0 266 267 // FWP_DATA_TYPE defined in fwptypes.h 268 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ne-fwptypes-fwp_data_type_) 269 type wtFwpDataType uint 270 271 const ( 272 cFWP_EMPTY wtFwpDataType = 0 273 cFWP_UINT8 wtFwpDataType = cFWP_EMPTY + 1 274 cFWP_UINT16 wtFwpDataType = cFWP_UINT8 + 1 275 cFWP_UINT32 wtFwpDataType = cFWP_UINT16 + 1 276 cFWP_UINT64 wtFwpDataType = cFWP_UINT32 + 1 277 cFWP_INT8 wtFwpDataType = cFWP_UINT64 + 1 278 cFWP_INT16 wtFwpDataType = cFWP_INT8 + 1 279 cFWP_INT32 wtFwpDataType = cFWP_INT16 + 1 280 cFWP_INT64 wtFwpDataType = cFWP_INT32 + 1 281 cFWP_FLOAT wtFwpDataType = cFWP_INT64 + 1 282 cFWP_DOUBLE wtFwpDataType = cFWP_FLOAT + 1 283 cFWP_BYTE_ARRAY16_TYPE wtFwpDataType = cFWP_DOUBLE + 1 284 cFWP_BYTE_BLOB_TYPE wtFwpDataType = cFWP_BYTE_ARRAY16_TYPE + 1 285 cFWP_SID wtFwpDataType = cFWP_BYTE_BLOB_TYPE + 1 286 cFWP_SECURITY_DESCRIPTOR_TYPE wtFwpDataType = cFWP_SID + 1 287 cFWP_TOKEN_INFORMATION_TYPE wtFwpDataType = cFWP_SECURITY_DESCRIPTOR_TYPE + 1 288 cFWP_TOKEN_ACCESS_INFORMATION_TYPE wtFwpDataType = cFWP_TOKEN_INFORMATION_TYPE + 1 289 cFWP_UNICODE_STRING_TYPE wtFwpDataType = cFWP_TOKEN_ACCESS_INFORMATION_TYPE + 1 290 cFWP_BYTE_ARRAY6_TYPE wtFwpDataType = cFWP_UNICODE_STRING_TYPE + 1 291 cFWP_BITMAP_INDEX_TYPE wtFwpDataType = cFWP_BYTE_ARRAY6_TYPE + 1 292 cFWP_BITMAP_ARRAY64_TYPE wtFwpDataType = cFWP_BITMAP_INDEX_TYPE + 1 293 cFWP_SINGLE_DATA_TYPE_MAX wtFwpDataType = 0xff 294 cFWP_V4_ADDR_MASK wtFwpDataType = cFWP_SINGLE_DATA_TYPE_MAX + 1 295 cFWP_V6_ADDR_MASK wtFwpDataType = cFWP_V4_ADDR_MASK + 1 296 cFWP_RANGE_TYPE wtFwpDataType = cFWP_V6_ADDR_MASK + 1 297 cFWP_DATA_TYPE_MAX wtFwpDataType = cFWP_RANGE_TYPE + 1 298 ) 299 300 // FWP_V4_ADDR_AND_MASK defined in fwptypes.h 301 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_v4_addr_and_mask). 302 type wtFwpV4AddrAndMask struct { 303 addr uint32 304 mask uint32 305 } 306 307 // FWP_V6_ADDR_AND_MASK defined in fwptypes.h 308 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_v6_addr_and_mask). 309 type wtFwpV6AddrAndMask struct { 310 addr [16]uint8 311 prefixLength uint8 312 } 313 314 // FWP_VALUE0 defined in fwptypes.h 315 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwp_value0_) 316 type wtFwpValue0 struct { 317 _type wtFwpDataType 318 value uintptr 319 } 320 321 // FWPM_DISPLAY_DATA0 defined in fwptypes.h 322 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwptypes/ns-fwptypes-fwpm_display_data0). 323 type wtFwpmDisplayData0 struct { 324 name *uint16 // Windows type: *wchar_t 325 description *uint16 // Windows type: *wchar_t 326 } 327 328 // FWPM_FILTER_CONDITION0 defined in fwpmtypes.h 329 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_filter_condition0). 330 type wtFwpmFilterCondition0 struct { 331 fieldKey windows.GUID // Windows type: GUID 332 matchType wtFwpMatchType 333 conditionValue wtFwpConditionValue0 334 } 335 336 // FWPM_PROVIDER0 defined in fwpmtypes.h 337 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_provider0_) 338 type wtFwpProvider0 struct { 339 providerKey windows.GUID // Windows type: GUID 340 displayData wtFwpmDisplayData0 341 flags uint32 342 providerData wtFwpByteBlob 343 serviceName *uint16 // Windows type: *wchar_t 344 } 345 346 type wtFwpmSessionFlagsValue uint32 347 348 const ( 349 cFWPM_SESSION_FLAG_DYNAMIC wtFwpmSessionFlagsValue = 0x00000001 // FWPM_SESSION_FLAG_DYNAMIC defined in fwpmtypes.h 350 ) 351 352 // FWPM_SESSION0 defined in fwpmtypes.h 353 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_session0). 354 type wtFwpmSession0 struct { 355 sessionKey windows.GUID // Windows type: GUID 356 displayData wtFwpmDisplayData0 357 flags wtFwpmSessionFlagsValue // Windows type UINT32 358 txnWaitTimeoutInMSec uint32 359 processId uint32 // Windows type: DWORD 360 sid *windows.SID 361 username *uint16 // Windows type: *wchar_t 362 kernelMode uint8 // Windows type: BOOL 363 } 364 365 type wtFwpmSublayerFlags uint32 366 367 const ( 368 cFWPM_SUBLAYER_FLAG_PERSISTENT wtFwpmSublayerFlags = 0x00000001 // FWPM_SUBLAYER_FLAG_PERSISTENT defined in fwpmtypes.h 369 ) 370 371 // FWPM_SUBLAYER0 defined in fwpmtypes.h 372 // (https://docs.microsoft.com/en-us/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_sublayer0_) 373 type wtFwpmSublayer0 struct { 374 subLayerKey windows.GUID // Windows type: GUID 375 displayData wtFwpmDisplayData0 376 flags wtFwpmSublayerFlags 377 providerKey *windows.GUID // Windows type: *GUID 378 providerData wtFwpByteBlob 379 weight uint16 380 } 381 382 // Defined in rpcdce.h 383 type wtRpcCAuthN uint32 384 385 const ( 386 cRPC_C_AUTHN_NONE wtRpcCAuthN = 0 387 cRPC_C_AUTHN_WINNT wtRpcCAuthN = 10 388 cRPC_C_AUTHN_DEFAULT wtRpcCAuthN = 0xFFFFFFFF 389 ) 390 391 // FWPM_PROVIDER0 defined in fwpmtypes.h 392 // (https://docs.microsoft.com/sv-se/windows/desktop/api/fwpmtypes/ns-fwpmtypes-fwpm_provider0). 393 type wtFwpmProvider0 struct { 394 providerKey windows.GUID 395 displayData wtFwpmDisplayData0 396 flags uint32 397 providerData wtFwpByteBlob 398 serviceName *uint16 399 } 400 401 type wtIPProto uint32 402 403 const ( 404 cIPPROTO_ICMP wtIPProto = 1 405 cIPPROTO_ICMPV6 wtIPProto = 58 406 cIPPROTO_TCP wtIPProto = 6 407 cIPPROTO_UDP wtIPProto = 17 408 ) 409 410 const ( 411 cFWP_ACTRL_MATCH_FILTER = 1 412 )