mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2024-09-16 13:52:32 +00:00
222 lines
8.7 KiB
Go
222 lines
8.7 KiB
Go
//go:build windows && (amd64 || arm64)
|
|
// +build windows
|
|
// +build amd64 arm64
|
|
|
|
/* SPDX-License-Identifier: MIT
|
|
*
|
|
* Copyright (C) 2019-2021 WireGuard LLC. All Rights Reserved.
|
|
*/
|
|
|
|
package winipcfg
|
|
|
|
import (
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
// IPAdapterWINSServerAddress structure stores a single Windows Internet Name Service (WINS) server address in a linked list of WINS server addresses for a particular adapter.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_adapter_wins_server_address_lh
|
|
type IPAdapterWINSServerAddress struct {
|
|
Length uint32
|
|
_ uint32
|
|
Next *IPAdapterWINSServerAddress
|
|
Address windows.SocketAddress
|
|
}
|
|
|
|
// IPAdapterGatewayAddress structure stores a single gateway address in a linked list of gateway addresses for a particular adapter.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_adapter_gateway_address_lh
|
|
type IPAdapterGatewayAddress struct {
|
|
Length uint32
|
|
_ uint32
|
|
Next *IPAdapterGatewayAddress
|
|
Address windows.SocketAddress
|
|
}
|
|
|
|
// IPAdapterAddresses structure is the header node for a linked list of addresses for a particular adapter. This structure can simultaneously be used as part of a linked list of IP_ADAPTER_ADDRESSES structures.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_adapter_addresses_lh
|
|
// This is a modified and extended version of windows.IpAdapterAddresses.
|
|
type IPAdapterAddresses struct {
|
|
Length uint32
|
|
IfIndex uint32
|
|
Next *IPAdapterAddresses
|
|
adapterName *byte
|
|
FirstUnicastAddress *windows.IpAdapterUnicastAddress
|
|
FirstAnycastAddress *windows.IpAdapterAnycastAddress
|
|
FirstMulticastAddress *windows.IpAdapterMulticastAddress
|
|
FirstDNSServerAddress *windows.IpAdapterDnsServerAdapter
|
|
dnsSuffix *uint16
|
|
description *uint16
|
|
friendlyName *uint16
|
|
physicalAddress [windows.MAX_ADAPTER_ADDRESS_LENGTH]byte
|
|
physicalAddressLength uint32
|
|
Flags IPAAFlags
|
|
MTU uint32
|
|
IfType IfType
|
|
OperStatus IfOperStatus
|
|
IPv6IfIndex uint32
|
|
ZoneIndices [16]uint32
|
|
FirstPrefix *windows.IpAdapterPrefix
|
|
TransmitLinkSpeed uint64
|
|
ReceiveLinkSpeed uint64
|
|
FirstWINSServerAddress *IPAdapterWINSServerAddress
|
|
FirstGatewayAddress *IPAdapterGatewayAddress
|
|
Ipv4Metric uint32
|
|
Ipv6Metric uint32
|
|
LUID LUID
|
|
DHCPv4Server windows.SocketAddress
|
|
CompartmentID uint32
|
|
NetworkGUID windows.GUID
|
|
ConnectionType NetIfConnectionType
|
|
TunnelType TunnelType
|
|
DHCPv6Server windows.SocketAddress
|
|
dhcpv6ClientDUID [maxDHCPv6DUIDLength]byte
|
|
dhcpv6ClientDUIDLength uint32
|
|
DHCPv6IAID uint32
|
|
FirstDNSSuffix *IPAdapterDNSSuffix
|
|
}
|
|
|
|
// MibIPInterfaceRow structure stores interface management information for a particular IP address family on a network interface.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_ipinterface_row
|
|
type MibIPInterfaceRow struct {
|
|
Family AddressFamily
|
|
InterfaceLUID LUID
|
|
InterfaceIndex uint32
|
|
MaxReassemblySize uint32
|
|
InterfaceIdentifier uint64
|
|
MinRouterAdvertisementInterval uint32
|
|
MaxRouterAdvertisementInterval uint32
|
|
AdvertisingEnabled bool
|
|
ForwardingEnabled bool
|
|
WeakHostSend bool
|
|
WeakHostReceive bool
|
|
UseAutomaticMetric bool
|
|
UseNeighborUnreachabilityDetection bool
|
|
ManagedAddressConfigurationSupported bool
|
|
OtherStatefulConfigurationSupported bool
|
|
AdvertiseDefaultRoute bool
|
|
RouterDiscoveryBehavior RouterDiscoveryBehavior
|
|
DadTransmits uint32
|
|
BaseReachableTime uint32
|
|
RetransmitTime uint32
|
|
PathMTUDiscoveryTimeout uint32
|
|
LinkLocalAddressBehavior LinkLocalAddressBehavior
|
|
LinkLocalAddressTimeout uint32
|
|
ZoneIndices [ScopeLevelCount]uint32
|
|
SitePrefixLength uint32
|
|
Metric uint32
|
|
NLMTU uint32
|
|
Connected bool
|
|
SupportsWakeUpPatterns bool
|
|
SupportsNeighborDiscovery bool
|
|
SupportsRouterDiscovery bool
|
|
ReachableTime uint32
|
|
TransmitOffload OffloadRod
|
|
ReceiveOffload OffloadRod
|
|
DisableDefaultRoutes bool
|
|
}
|
|
|
|
// mibIPInterfaceTable structure contains a table of IP interface entries.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_ipinterface_table
|
|
type mibIPInterfaceTable struct {
|
|
numEntries uint32
|
|
table [anySize]MibIPInterfaceRow
|
|
}
|
|
|
|
// MibIfRow2 structure stores information about a particular interface.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_if_row2
|
|
type MibIfRow2 struct {
|
|
InterfaceLUID LUID
|
|
InterfaceIndex uint32
|
|
InterfaceGUID windows.GUID
|
|
alias [ifMaxStringSize + 1]uint16
|
|
description [ifMaxStringSize + 1]uint16
|
|
physicalAddressLength uint32
|
|
physicalAddress [ifMaxPhysAddressLength]byte
|
|
permanentPhysicalAddress [ifMaxPhysAddressLength]byte
|
|
MTU uint32
|
|
Type IfType
|
|
TunnelType TunnelType
|
|
MediaType NdisMedium
|
|
PhysicalMediumType NdisPhysicalMedium
|
|
AccessType NetIfAccessType
|
|
DirectionType NetIfDirectionType
|
|
InterfaceAndOperStatusFlags InterfaceAndOperStatusFlags
|
|
OperStatus IfOperStatus
|
|
AdminStatus NetIfAdminStatus
|
|
MediaConnectState NetIfMediaConnectState
|
|
NetworkGUID windows.GUID
|
|
ConnectionType NetIfConnectionType
|
|
TransmitLinkSpeed uint64
|
|
ReceiveLinkSpeed uint64
|
|
InOctets uint64
|
|
InUcastPkts uint64
|
|
InNUcastPkts uint64
|
|
InDiscards uint64
|
|
InErrors uint64
|
|
InUnknownProtos uint64
|
|
InUcastOctets uint64
|
|
InMulticastOctets uint64
|
|
InBroadcastOctets uint64
|
|
OutOctets uint64
|
|
OutUcastPkts uint64
|
|
OutNUcastPkts uint64
|
|
OutDiscards uint64
|
|
OutErrors uint64
|
|
OutUcastOctets uint64
|
|
OutMulticastOctets uint64
|
|
OutBroadcastOctets uint64
|
|
OutQLen uint64
|
|
}
|
|
|
|
// mibIfTable2 structure contains a table of logical and physical interface entries.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_if_table2
|
|
type mibIfTable2 struct {
|
|
numEntries uint32
|
|
table [anySize]MibIfRow2
|
|
}
|
|
|
|
// MibUnicastIPAddressRow structure stores information about a unicast IP address.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_unicastipaddress_row
|
|
type MibUnicastIPAddressRow struct {
|
|
Address RawSockaddrInet
|
|
InterfaceLUID LUID
|
|
InterfaceIndex uint32
|
|
PrefixOrigin PrefixOrigin
|
|
SuffixOrigin SuffixOrigin
|
|
ValidLifetime uint32
|
|
PreferredLifetime uint32
|
|
OnLinkPrefixLength uint8
|
|
SkipAsSource bool
|
|
DadState DadState
|
|
ScopeID uint32
|
|
CreationTimeStamp int64
|
|
}
|
|
|
|
// mibUnicastIPAddressTable structure contains a table of unicast IP address entries.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_unicastipaddress_table
|
|
type mibUnicastIPAddressTable struct {
|
|
numEntries uint32
|
|
table [anySize]MibUnicastIPAddressRow
|
|
}
|
|
|
|
// MibAnycastIPAddressRow structure stores information about an anycast IP address.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_anycastipaddress_row
|
|
type MibAnycastIPAddressRow struct {
|
|
Address RawSockaddrInet
|
|
InterfaceLUID LUID
|
|
InterfaceIndex uint32
|
|
ScopeID uint32
|
|
}
|
|
|
|
// mibAnycastIPAddressTable structure contains a table of anycast IP address entries.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-mib_anycastipaddress_table
|
|
type mibAnycastIPAddressTable struct {
|
|
numEntries uint32
|
|
table [anySize]MibAnycastIPAddressRow
|
|
}
|
|
|
|
// mibIPforwardTable2 structure contains a table of IP route entries.
|
|
// https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/ns-netioapi-_mib_ipforward_table2
|
|
type mibIPforwardTable2 struct {
|
|
numEntries uint32
|
|
table [anySize]MibIPforwardRow2
|
|
}
|