summaryrefslogtreecommitdiffhomepage
path: root/tun
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-05-17 16:06:02 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-17 16:06:02 +0200
commita6dbe4f4754de333a7ab4df6549d681edbb297fd (patch)
tree729056e339f5d90b1c806d2479a9667e0198bfa7 /tun
parentc718f3940d6546f83cc14c4f121d52470a705c31 (diff)
wintun: don't try to flush interface, but rather delete
Diffstat (limited to 'tun')
-rw-r--r--tun/tun_windows.go24
-rw-r--r--tun/wintun/wintun_windows.go9
2 files changed, 8 insertions, 25 deletions
diff --git a/tun/tun_windows.go b/tun/tun_windows.go
index 4ddf5fe..6215cc7 100644
--- a/tun/tun_windows.go
+++ b/tun/tun_windows.go
@@ -65,30 +65,22 @@ func CreateTUN(ifname string) (TUNDevice, error) {
// Does an interface with this name already exist?
wt, err = wintun.GetInterface(ifname, 0)
- if wt == nil {
- // Interface does not exist or an error occurred. Create one.
- wt, _, err = wintun.CreateInterface("WireGuard Tunnel Adapter", 0)
+ if err == nil {
+ // If so, we delete it, in case it has weird residual configuration.
+ _, _, err = wt.DeleteInterface(0)
if err != nil {
- return nil, fmt.Errorf("wintun.CreateInterface: %v", err)
+ return nil, fmt.Errorf("Unable to delete already existing Wintun interface: %v", err)
}
- } else if err != nil {
- // Foreign interface with the same name found.
- // We could create a Wintun interface under a temporary name. But, should our
- // process die without deleting this interface first, the interface would remain
- // orphaned.
- return nil, fmt.Errorf("wintun.GetInterface: %v", err)
}
-
- err = wt.SetInterfaceName(ifname)
+ wt, _, err = wintun.CreateInterface("WireGuard Tunnel Adapter", 0)
if err != nil {
- wt.DeleteInterface(0)
- return nil, fmt.Errorf("wintun.SetInterfaceName: %v", err)
+ return nil, fmt.Errorf("Unable to create Wintun interface: %v", err)
}
- err = wt.FlushInterface()
+ err = wt.SetInterfaceName(ifname)
if err != nil {
wt.DeleteInterface(0)
- return nil, fmt.Errorf("wintun.FlushInterface: %v", err)
+ return nil, fmt.Errorf("Unable to set name of Wintun interface: %v", err)
}
return &NativeTun{
diff --git a/tun/wintun/wintun_windows.go b/tun/wintun/wintun_windows.go
index 6d9c676..1eb0dd2 100644
--- a/tun/wintun/wintun_windows.go
+++ b/tun/wintun/wintun_windows.go
@@ -471,15 +471,6 @@ func (wintun *Wintun) DeleteInterface(hwndParent uintptr) (bool, bool, error) {
}
//
-// FlushInterface removes all properties from the interface and gives it only a very
-// vanilla IPv4 and IPv6 configuration with no addresses of any sort assigned.
-//
-func (wintun *Wintun) FlushInterface() error {
- //TODO: implement me!
- return nil
-}
-
-//
// checkReboot checks device install parameters if a system reboot is required.
//
func checkReboot(deviceInfoSet setupapi.DevInfo, deviceInfoData *setupapi.DevInfoData) (bool, error) {