diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-05-28 23:43:18 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-06-02 11:55:31 +0200 |
| commit | d8b7ba86ec0ebe6c696a899885e5f96e44fc0609 (patch) | |
| tree | 936161b218d83d6816d6124139adfa264f1a006b /wireguard | |
| parent | 8dfba41e2d7e29a192e22f9533dfcffbdb285172 (diff) | |
| download | mullvadvpn-d8b7ba86ec0ebe6c696a899885e5f96e44fc0609.tar.xz mullvadvpn-d8b7ba86ec0ebe6c696a899885e5f96e44fc0609.zip | |
Give more time to IP interface setup on Windows, and make it abortable
Diffstat (limited to 'wireguard')
| -rw-r--r-- | wireguard/libwg/libwg_windows.go | 48 |
1 files changed, 4 insertions, 44 deletions
diff --git a/wireguard/libwg/libwg_windows.go b/wireguard/libwg/libwg_windows.go index 42f27148b3..2cf04ed140 100644 --- a/wireguard/libwg/libwg_windows.go +++ b/wireguard/libwg/libwg_windows.go @@ -21,9 +21,7 @@ import ( "golang.zx2c4.com/wireguard/device" "golang.zx2c4.com/wireguard/tun" "golang.zx2c4.com/wireguard/tun/wintun" - "golang.zx2c4.com/wireguard/windows/tunnel/winipcfg" - "github.com/mullvad/mullvadvpn-app/wireguard/libwg/interfacewatcher" "github.com/mullvad/mullvadvpn-app/wireguard/libwg/logging" "github.com/mullvad/mullvadvpn-app/wireguard/libwg/tunnelcontainer" ) @@ -43,30 +41,8 @@ func init() { } } -func createInterfaceWatcherEvents(waitOnIpv6 bool, tunLuid uint64) []interfacewatcher.Event { - if waitOnIpv6 { - return []interfacewatcher.Event{ - { - Luid: winipcfg.LUID(tunLuid), - Family: windows.AF_INET, - }, - interfacewatcher.Event { - Luid: winipcfg.LUID(tunLuid), - Family: windows.AF_INET6, - }, - } - } else { - return []interfacewatcher.Event{ - { - Luid: winipcfg.LUID(tunLuid), - Family: windows.AF_INET, - }, - } - } -} - //export wgTurnOn -func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, cIfaceNameOut **C.char, logSink LogSink, logContext LogContext) int32 { +func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, cIfaceNameOut **C.char, cLuidOut *uint64, logSink LogSink, logContext LogContext) int32 { logger := logging.NewLogger(logSink, logContext) if cIfaceNameOut != nil { *cIfaceNameOut = nil @@ -88,13 +64,6 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c // {AFE43773-E1F8-4EBB-8536-576AB86AFE9A} networkId := windows.GUID{0xafe43773, 0xe1f8, 0x4ebb, [8]byte{0x85, 0x36, 0x57, 0x6a, 0xb8, 0x6a, 0xfe, 0x9a}} - watcher, err := interfacewatcher.NewWatcher() - if err != nil { - logger.Errorf("%s\n", err) - return ERROR_GENERAL_FAILURE - } - defer watcher.Destroy() - if tun.WintunPool != MullvadPool { tun.WintunPool = MullvadPool } @@ -132,18 +101,6 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c device.Up() - interfaces := createInterfaceWatcherEvents(waitOnIpv6, nativeTun.LUID()) - - logger.Verbosef("Waiting for interfaces to attach\n") - - if !watcher.Join(interfaces, 5) { - logger.Errorf("Failed to wait for IP interfaces to become available\n") - device.Close() - return ERROR_GENERAL_FAILURE - } - - logger.Verbosef("Interfaces OK\n") - context := tunnelcontainer.Context{ Device: device, Logger: logger, @@ -159,6 +116,9 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c if cIfaceNameOut != nil { *cIfaceNameOut = C.CString(actualInterfaceName) } + if cLuidOut != nil { + *cLuidOut = nativeTun.LUID() + } return handle } |
