wintun: expose version
This commit is contained in:
parent
f2501aa6c8
commit
1f146a5e7a
@ -244,6 +244,11 @@ func (tun *NativeTun) LUID() uint64 {
|
||||
return tun.wt.LUID()
|
||||
}
|
||||
|
||||
// Version returns the version of the Wintun driver and NDIS system currently loaded.
|
||||
func (tun *NativeTun) Version() (driverVersion string, ndisVersion string, err error) {
|
||||
return tun.wt.Version()
|
||||
}
|
||||
|
||||
func (rate *rateJuggler) update(packetLen uint64) {
|
||||
now := nanotime()
|
||||
total := atomic.AddUint64(&rate.nextByteCount, packetLen)
|
||||
|
@ -671,11 +671,39 @@ func (wintun *Interface) tcpipAdapterRegKeyName() string {
|
||||
return fmt.Sprintf("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Adapters\\%v", wintun.cfgInstanceID)
|
||||
}
|
||||
|
||||
// deviceRegKeyName returns the device-level registry key name
|
||||
// deviceRegKeyName returns the device-level registry key name.
|
||||
func (wintun *Interface) deviceRegKeyName() string {
|
||||
return fmt.Sprintf("SYSTEM\\CurrentControlSet\\Enum\\%v", wintun.devInstanceID)
|
||||
}
|
||||
|
||||
// Version returns the version of the Wintun driver and NDIS system currently loaded.
|
||||
func (wintun *Interface) Version() (driverVersion string, ndisVersion string, err error) {
|
||||
key, err := registry.OpenKey(registry.LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Wintun", registry.QUERY_VALUE)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer key.Close()
|
||||
driverMajor, _, err := key.GetIntegerValue("DriverMajorVersion")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
driverMinor, _, err := key.GetIntegerValue("DriverMinorVersion")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ndisMajor, _, err := key.GetIntegerValue("NdisMajorVersion")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ndisMinor, _, err := key.GetIntegerValue("NdisMinorVersion")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
driverVersion = fmt.Sprintf("%d.%d", driverMajor, driverMinor)
|
||||
ndisVersion = fmt.Sprintf("%d.%d", ndisMajor, ndisMinor)
|
||||
return
|
||||
}
|
||||
|
||||
// tcpipInterfaceRegKeyName returns the interface-specific TCP/IP network registry key name.
|
||||
func (wintun *Interface) tcpipInterfaceRegKeyName() (path string, err error) {
|
||||
key, err := registry.OpenKey(registry.LOCAL_MACHINE, wintun.tcpipAdapterRegKeyName(), registry.QUERY_VALUE)
|
||||
|
Loading…
Reference in New Issue
Block a user