aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-09-09 22:59:42 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-09-09 23:51:14 +0200
commit198177d6e6b5f861f3be0f79cae1afd745dcf4cb (patch)
tree57687fe0becd64540080981f5e37ef8a004e9a9a
parentwinipcfg: disable DAD so that IP becomes useful sooner (diff)
downloadwireguard-windows-198177d6e6b5f861f3be0f79cae1afd745dcf4cb.tar.xz
wireguard-windows-198177d6e6b5f861f3be0f79cae1afd745dcf4cb.zip
tunnel: set address after routes so that loopback works
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--tunnel/addressconfig.go21
1 files changed, 10 insertions, 11 deletions
diff --git a/tunnel/addressconfig.go b/tunnel/addressconfig.go
index bde868bb..f0537fc7 100644
--- a/tunnel/addressconfig.go
+++ b/tunnel/addressconfig.go
@@ -100,15 +100,6 @@ func configureInterface(family winipcfg.AddressFamily, conf *conf.Config, luid w
}
}
- err := luid.SetIPAddressesForFamily(family, addresses)
- if err == windows.ERROR_OBJECT_ALREADY_EXISTS {
- cleanupAddressesOnDisconnectedInterfaces(family, addresses)
- err = luid.SetIPAddressesForFamily(family, addresses)
- }
- if err != nil {
- return fmt.Errorf("unable to set ips %v: %w", addresses, err)
- }
-
deduplicatedRoutes := make([]*winipcfg.RouteData, 0, len(routes))
sort.Slice(routes, func(i, j int) bool {
if routes[i].Metric != routes[j].Metric {
@@ -136,13 +127,21 @@ func configureInterface(family winipcfg.AddressFamily, conf *conf.Config, luid w
}
if !conf.Interface.TableOff {
- err = luid.SetRoutesForFamily(family, deduplicatedRoutes)
+ err := luid.SetRoutesForFamily(family, deduplicatedRoutes)
if err != nil {
return fmt.Errorf("unable to set routes %v: %w", deduplicatedRoutes, err)
- return err
}
}
+ err := luid.SetIPAddressesForFamily(family, addresses)
+ if err == windows.ERROR_OBJECT_ALREADY_EXISTS {
+ cleanupAddressesOnDisconnectedInterfaces(family, addresses)
+ err = luid.SetIPAddressesForFamily(family, addresses)
+ }
+ if err != nil {
+ return fmt.Errorf("unable to set ips %v: %w", addresses, err)
+ }
+
ipif, err := luid.IPInterface(family)
if err != nil {
return err