diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-09-09 22:59:42 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-09-09 23:51:14 +0200 |
commit | 198177d6e6b5f861f3be0f79cae1afd745dcf4cb (patch) | |
tree | 57687fe0becd64540080981f5e37ef8a004e9a9a /tunnel | |
parent | winipcfg: disable DAD so that IP becomes useful sooner (diff) | |
download | wireguard-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.go | 21 |
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 |