version: add IsMobile func

And use it control/controlclient.
This commit is contained in:
Brad Fitzpatrick 2020-03-02 12:37:28 -08:00
parent 11489a6e67
commit 7172f3dbf4
3 changed files with 20 additions and 8 deletions

View File

@ -144,10 +144,9 @@ func hostinfoOS() string {
os := runtime.GOOS
switch os {
case "darwin":
switch runtime.GOARCH {
case "arm", "arm64":
if version.IsMobile() {
return "iOS"
default:
} else {
return "macOS"
}
default:

View File

@ -11,12 +11,12 @@ import (
"fmt"
"log"
"net"
"runtime"
"strings"
"time"
"github.com/tailscale/wireguard-go/wgcfg"
"tailscale.com/tailcfg"
"tailscale.com/version"
"tailscale.com/wgengine/filter"
)
@ -154,9 +154,6 @@ func (nm *NetworkMap) UserMap() map[string][]filter.IP {
return rev
}
var iOS = runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64")
var keepalive = !iOS
const (
UAllowSingleHosts = 1 << iota
UAllowSubnetRoutes
@ -278,7 +275,8 @@ func (nm *NetworkMap) _WireGuardConfig(uflags int, dnsOverride []wgcfg.IP, allEn
aips = append(aips, aip)
}
fmt.Fprintf(buf, "AllowedIPs = %s\n", strings.Join(aips, ", "))
if keepalive {
doKeepAlives := !version.IsMobile()
if doKeepAlives {
fmt.Fprintf(buf, "PersistentKeepalive = 25\n")
}
}

15
version/prop.go Normal file
View File

@ -0,0 +1,15 @@
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package version
import "runtime"
// IsMobile reports whether this is a mobile client build.
func IsMobile() bool {
// Good enough heuristic for now, at least until Apple makes
// ARM laptops...
return runtime.GOOS == "android" ||
(runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64"))
}