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()
|
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) {
|
func (rate *rateJuggler) update(packetLen uint64) {
|
||||||
now := nanotime()
|
now := nanotime()
|
||||||
total := atomic.AddUint64(&rate.nextByteCount, packetLen)
|
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)
|
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 {
|
func (wintun *Interface) deviceRegKeyName() string {
|
||||||
return fmt.Sprintf("SYSTEM\\CurrentControlSet\\Enum\\%v", wintun.devInstanceID)
|
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.
|
// tcpipInterfaceRegKeyName returns the interface-specific TCP/IP network registry key name.
|
||||||
func (wintun *Interface) tcpipInterfaceRegKeyName() (path string, err error) {
|
func (wintun *Interface) tcpipInterfaceRegKeyName() (path string, err error) {
|
||||||
key, err := registry.OpenKey(registry.LOCAL_MACHINE, wintun.tcpipAdapterRegKeyName(), registry.QUERY_VALUE)
|
key, err := registry.OpenKey(registry.LOCAL_MACHINE, wintun.tcpipAdapterRegKeyName(), registry.QUERY_VALUE)
|
||||||
|
|
Loading…
Reference in a new issue