mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-26 02:00:30 +08:00
add go-tun2socks code
This commit is contained in:
102
common/lsof/windows/iphlpapi.go
Normal file
102
common/lsof/windows/iphlpapi.go
Normal file
@@ -0,0 +1,102 @@
|
||||
// +build windows
|
||||
|
||||
package windows
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
var (
|
||||
iphlpapi = syscall.NewLazyDLL("iphlpapi.dll")
|
||||
|
||||
procGetTcpStatistics = iphlpapi.NewProc("GetTcpStatistics")
|
||||
procGetExtendedTcpTable = iphlpapi.NewProc("GetExtendedTcpTable")
|
||||
procGetExtendedUdpTable = iphlpapi.NewProc("GetExtendedUdpTable")
|
||||
procGetBestRoute = iphlpapi.NewProc("GetBestRoute")
|
||||
procGetIpForwardTable = iphlpapi.NewProc("GetIpForwardTable")
|
||||
procGetInterfaceInfo = iphlpapi.NewProc("GetInterfaceInfo")
|
||||
procGetIfTable = iphlpapi.NewProc("GetIfTable")
|
||||
procDeleteIpForwardEntry = iphlpapi.NewProc("DeleteIpForwardEntry")
|
||||
procCreateIpForwardEntry = iphlpapi.NewProc("CreateIpForwardEntry")
|
||||
)
|
||||
|
||||
func GetTcpStatistics(statistics *MIB_TCPSTATS) int {
|
||||
ret, _, _ := procGetTcpStatistics.Call(
|
||||
uintptr(unsafe.Pointer(statistics)),
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetExtendedTcpTable(tcpTable uintptr, size *uint32, order int32, af uint32, tableClass TCP_TABLE_CLASS) int {
|
||||
ret, _, _ := procGetExtendedTcpTable.Call(
|
||||
tcpTable,
|
||||
uintptr(unsafe.Pointer(size)),
|
||||
uintptr(order),
|
||||
uintptr(af),
|
||||
uintptr(tableClass),
|
||||
0,
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetExtendedUdpTable(udpTable uintptr, size *uint32, order int32, af uint32, tableClass UDP_TABLE_CLASS) int {
|
||||
ret, _, _ := procGetExtendedUdpTable.Call(
|
||||
udpTable,
|
||||
uintptr(unsafe.Pointer(size)),
|
||||
uintptr(order),
|
||||
uintptr(af),
|
||||
uintptr(tableClass),
|
||||
0,
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetBestRoute(destAddr, sourceAddr uint32, bestRoute *MIB_IPFORWARDROW) int {
|
||||
ret, _, _ := procGetBestRoute.Call(
|
||||
uintptr(destAddr),
|
||||
uintptr(sourceAddr),
|
||||
uintptr(unsafe.Pointer(bestRoute)),
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetIpForwardTable(table *MIB_IPFORWARDTABLE, size *uint32, order int32) int {
|
||||
ret, _, _ := procGetIpForwardTable.Call(
|
||||
uintptr(unsafe.Pointer(table)),
|
||||
uintptr(unsafe.Pointer(size)),
|
||||
uintptr(order),
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetInterfaceInfo(ifTable *IP_INTERFACE_INFO, outBufLen *uint32) int {
|
||||
ret, _, _ := procGetInterfaceInfo.Call(
|
||||
uintptr(unsafe.Pointer(ifTable)),
|
||||
uintptr(unsafe.Pointer(outBufLen)),
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func GetIfTable(table *MIB_IFTABLE, size *uint32, order int32) int {
|
||||
ret, _, _ := procGetIfTable.Call(
|
||||
uintptr(unsafe.Pointer(table)),
|
||||
uintptr(unsafe.Pointer(size)),
|
||||
uintptr(order),
|
||||
)
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func DeleteIpForwardEntry(route *MIB_IPFORWARDROW) uint32 {
|
||||
ret, _, _ := procDeleteIpForwardEntry.Call(
|
||||
uintptr(unsafe.Pointer(route)),
|
||||
)
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func CreateIpForwardEntry(route *MIB_IPFORWARDROW) uint32 {
|
||||
ret, _, _ := procCreateIpForwardEntry.Call(
|
||||
uintptr(unsafe.Pointer(route)),
|
||||
)
|
||||
return uint32(ret)
|
||||
}
|
||||
Reference in New Issue
Block a user