net/tstun: return the real interface name at device creation.

This is usually the same as the requested interface, but on some
unixes can vary based on device number allocation, and on Windows
it's the GUID instead of the pretty name, since everything relating
to configuration wants the GUID.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson
2021-04-05 21:45:56 -07:00
committed by Dave Anderson
parent d2f838c058
commit bc4381447f
5 changed files with 39 additions and 14 deletions

View File

@@ -30,6 +30,7 @@ import (
"golang.zx2c4.com/wireguard/windows/tunnel/winipcfg"
"tailscale.com/ipn/ipnserver"
"tailscale.com/logpolicy"
"tailscale.com/net/dns"
"tailscale.com/net/tstun"
"tailscale.com/tempfork/wireguard-windows/firewall"
"tailscale.com/types/logger"
@@ -161,7 +162,7 @@ func startIPNServer(ctx context.Context, logid string) error {
var err error
getEngine := func() (wgengine.Engine, error) {
dev, err := tstun.New(logf, "Tailscale")
dev, devName, err := tstun.New(logf, "Tailscale")
if err != nil {
return nil, err
}
@@ -173,6 +174,7 @@ func startIPNServer(ctx context.Context, logid string) error {
eng, err := wgengine.NewUserspaceEngine(logf, wgengine.Config{
Tun: dev,
Router: r,
DNS: dns.NewOSConfigurator(logf, devName),
ListenPort: 41641,
})
if err != nil {