Skip to content

Commit 1d87c38

Browse files
committed
tunnel: add routes even when no corresponding address
Apparently this works now, but it didn't used to. Reported-by: Christoph Loesch <[email protected]> Signed-off-by: Jason A. Donenfeld <[email protected]>
1 parent 3135854 commit 1d87c38

File tree

1 file changed

+3
-16
lines changed

1 file changed

+3
-16
lines changed

tunnel/addressconfig.go

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,11 @@ startOver:
6262
estimatedRouteCount += len(peer.AllowedIPs)
6363
}
6464
routes := make(map[winipcfg.RouteData]bool, estimatedRouteCount)
65-
addresses := make([]netip.Prefix, len(conf.Interface.Addresses))
66-
var haveV4Address, haveV6Address bool
67-
for i, addr := range conf.Interface.Addresses {
68-
addresses[i] = addr
69-
if addr.Addr().Is4() {
70-
haveV4Address = true
71-
} else if addr.Addr().Is6() {
72-
haveV6Address = true
73-
}
74-
}
7565

7666
foundDefault4 := false
7767
foundDefault6 := false
7868
for _, peer := range conf.Peers {
7969
for _, allowedip := range peer.AllowedIPs {
80-
if (allowedip.Addr().Is4() && !haveV4Address) || (allowedip.Addr().Is6() && !haveV6Address) {
81-
continue
82-
}
8370
route := winipcfg.RouteData{
8471
Destination: allowedip.Masked(),
8572
Metric: 0,
@@ -114,10 +101,10 @@ startOver:
114101
}
115102
}
116103

117-
err = luid.SetIPAddressesForFamily(family, addresses)
104+
err = luid.SetIPAddressesForFamily(family, conf.Interface.Addresses)
118105
if err == windows.ERROR_OBJECT_ALREADY_EXISTS {
119-
cleanupAddressesOnDisconnectedInterfaces(family, addresses)
120-
err = luid.SetIPAddressesForFamily(family, addresses)
106+
cleanupAddressesOnDisconnectedInterfaces(family, conf.Interface.Addresses)
107+
err = luid.SetIPAddressesForFamily(family, conf.Interface.Addresses)
121108
}
122109
if err == windows.ERROR_NOT_FOUND && retryOnFailure {
123110
goto startOver

0 commit comments

Comments
 (0)