mirror of
https://github.com/tailscale/tailscale.git
synced 2026-03-03 04:22:42 +01:00
WIP
Change-Id: I242111289aeb0c9a0ff843d698bc26168e336165 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
0cc1b2ff76
commit
032d425a41
@ -75,6 +75,9 @@ import (
|
||||
|
||||
// defaultTunName returns the default tun device name for the platform.
|
||||
func defaultTunName() string {
|
||||
if runtime.GOOS == "linux" && distro.Get() == distro.ISH {
|
||||
return "userspace-networking"
|
||||
}
|
||||
switch runtime.GOOS {
|
||||
case "openbsd":
|
||||
return "tun"
|
||||
@ -207,6 +210,8 @@ func main() {
|
||||
os.Args = []string{"tailscaled", "be-child", "plan9-netshell"}
|
||||
}
|
||||
|
||||
println("XX distro:", distro.Get())
|
||||
|
||||
if len(os.Args) > 1 {
|
||||
sub := os.Args[1]
|
||||
if fp, ok := subCommands[sub]; ok {
|
||||
|
||||
@ -9,6 +9,7 @@ package netmon
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/netip"
|
||||
"runtime"
|
||||
"sync"
|
||||
@ -18,6 +19,7 @@ import (
|
||||
"tailscale.com/util/clientmetric"
|
||||
"tailscale.com/util/eventbus"
|
||||
"tailscale.com/util/set"
|
||||
"tailscale.com/version/distro"
|
||||
)
|
||||
|
||||
// pollWallTimeInterval is how often we check the time to check
|
||||
@ -118,6 +120,9 @@ type ChangeDelta struct {
|
||||
// The returned monitor is inactive until it's started by the Start method.
|
||||
// Use RegisterChangeCallback to get notified of network changes.
|
||||
func New(bus *eventbus.Bus, logf logger.Logf) (*Monitor, error) {
|
||||
if distro.Get() == distro.ISH {
|
||||
return NewStatic(), nil // netlink doesn't work in iSH
|
||||
}
|
||||
logf = logger.WithPrefix(logf, "monitor: ")
|
||||
m := &Monitor{
|
||||
logf: logf,
|
||||
@ -129,7 +134,7 @@ func New(bus *eventbus.Bus, logf logger.Logf) (*Monitor, error) {
|
||||
m.changed = eventbus.Publish[*ChangeDelta](m.b)
|
||||
st, err := m.interfaceStateUncached()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("interface state: %w", err)
|
||||
}
|
||||
m.ifState = st
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ import (
|
||||
"tailscale.com/net/tsaddr"
|
||||
"tailscale.com/types/logger"
|
||||
"tailscale.com/util/eventbus"
|
||||
"tailscale.com/version/distro"
|
||||
)
|
||||
|
||||
var debugNetlinkMessages = envknob.RegisterBool("TS_DEBUG_NETLINK")
|
||||
@ -57,6 +58,10 @@ type nlConn struct {
|
||||
}
|
||||
|
||||
func newOSMon(bus *eventbus.Bus, logf logger.Logf, m *Monitor) (osMon, error) {
|
||||
if distro.Get() == distro.ISH {
|
||||
println("XXX hi from ish")
|
||||
return newPollingMon(logf, m)
|
||||
}
|
||||
conn, err := netlink.Dial(unix.NETLINK_ROUTE, &netlink.Config{
|
||||
// Routes get us most of the events of interest, but we need
|
||||
// address as well to cover things like DHCP deciding to give
|
||||
|
||||
@ -33,6 +33,7 @@ const (
|
||||
Alpine = Distro("alpine")
|
||||
UBNT = Distro("ubnt") // Ubiquiti Networks
|
||||
JetKVM = Distro("jetkvm")
|
||||
ISH = Distro("ish") // iOS iSH app
|
||||
)
|
||||
|
||||
var distro lazy.SyncValue[Distro]
|
||||
@ -102,6 +103,11 @@ func linuxDistro() Distro {
|
||||
return WDMyCloud
|
||||
case have("/etc/unraid-version"):
|
||||
return Unraid
|
||||
case runtime.GOARCH == "386":
|
||||
v, _ := os.ReadFile("/proc/cpuinfo")
|
||||
if bytes.Contains(v, []byte(": iSH")) {
|
||||
return ISH
|
||||
}
|
||||
case have("/etc/alpine-release"):
|
||||
return Alpine
|
||||
case runtime.GOARCH == "arm" && isDeviceModel("JetKVM"):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user