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  )