]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
Unify interface-specific network registry key open
authorSimon Rozman <simon@rozman.si>
Mon, 4 Mar 2019 10:58:02 +0000 (11:58 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 4 Mar 2019 15:37:11 +0000 (16:37 +0100)
Signed-off-by: Simon Rozman <simon@rozman.si>
tun/wintun/wintun_windows.go

index a8fe3fac1e0cc24c6e7a8194edf7687bd28f4665..875ca3541c9ba614a1de6874f7726b7dc6abb0ad 100644 (file)
@@ -13,10 +13,10 @@ import (
        "time"
        "unsafe"
 
-       "golang.zx2c4.com/wireguard/tun/wintun/guid"
-       "golang.zx2c4.com/wireguard/tun/wintun/setupapi"
        "golang.org/x/sys/windows"
        "golang.org/x/sys/windows/registry"
+       "golang.zx2c4.com/wireguard/tun/wintun/guid"
+       "golang.zx2c4.com/wireguard/tun/wintun/setupapi"
 )
 
 type Wintun windows.GUID
@@ -422,11 +422,9 @@ func getInterfaceId(deviceInfoSet setupapi.DevInfo, deviceInfoData *setupapi.Dev
 // GetInterfaceName returns network interface name.
 //
 func (wintun *Wintun) GetInterfaceName() (string, error) {
-       ifid := (*windows.GUID)(wintun)
-       // Open network interface registry key.
-       key, err := registry.OpenKey(registry.LOCAL_MACHINE, fmt.Sprintf("SYSTEM\\CurrentControlSet\\Control\\Network\\%v\\%v\\Connection", guid.ToString(&deviceClassNetGUID), guid.ToString(ifid)), registry.QUERY_VALUE)
+       key, err := wintun.openNetRegKey(registry.QUERY_VALUE)
        if err != nil {
-               return "", errors.New("Network-specific registry key open failed: " + err.Error())
+               return "", err
        }
        defer key.Close()
 
@@ -438,11 +436,9 @@ func (wintun *Wintun) GetInterfaceName() (string, error) {
 // SetInterfaceName sets network interface name.
 //
 func (wintun *Wintun) SetInterfaceName(ifname string) error {
-       ifid := (*windows.GUID)(wintun)
-       // Open network interface registry key.
-       key, err := registry.OpenKey(registry.LOCAL_MACHINE, fmt.Sprintf("SYSTEM\\CurrentControlSet\\Control\\Network\\%v\\%v\\Connection", guid.ToString(&deviceClassNetGUID), guid.ToString(ifid)), registry.SET_VALUE)
+       key, err := wintun.openNetRegKey(registry.SET_VALUE)
        if err != nil {
-               return errors.New("Network-specific registry key open failed: " + err.Error())
+               return err
        }
        defer key.Close()
 
@@ -450,6 +446,19 @@ func (wintun *Wintun) SetInterfaceName(ifname string) error {
        return key.SetStringValue("Name", ifname)
 }
 
+//
+// openNetRegKey opens interface-specific network registry key.
+//
+func (wintun *Wintun) openNetRegKey(access uint32) (registry.Key, error) {
+       ifid := (*windows.GUID)(wintun)
+       key, err := registry.OpenKey(registry.LOCAL_MACHINE, fmt.Sprintf("SYSTEM\\CurrentControlSet\\Control\\Network\\%v\\%v\\Connection", guid.ToString(&deviceClassNetGUID), guid.ToString(ifid)), access)
+       if err != nil {
+               return 0, errors.New("Network-specific registry key open failed: " + err.Error())
+       }
+
+       return key, nil
+}
+
 //
 // getRegStringValue function reads a string value from registry.
 //