mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-25 19:15:34 +00:00
net/netns: add TS_FORCE_LINUX_BIND_TO_DEVICE for Linux
For debugging a macOS-specific magicsock issue. macOS runs in bind-to-interface mode always. This lets me force Linux into the same mode as macOS, even if the Linux kernel supports SO_MARK, as it usually does. Updates #2331 etc Change-Id: Iac9e4a7429c1781337e716ffc914443b7aa2869d Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
f3ce1e2536
commit
81bc4992f2
@ -15,6 +15,7 @@
|
|||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
|
"tailscale.com/envknob"
|
||||||
"tailscale.com/net/interfaces"
|
"tailscale.com/net/interfaces"
|
||||||
"tailscale.com/types/logger"
|
"tailscale.com/types/logger"
|
||||||
)
|
)
|
||||||
@ -62,9 +63,14 @@ func socketMarkWorks() bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var forceBindToDevice = envknob.Bool("TS_FORCE_LINUX_BIND_TO_DEVICE")
|
||||||
|
|
||||||
// useSocketMark reports whether SO_MARK works.
|
// useSocketMark reports whether SO_MARK works.
|
||||||
// If it doesn't, we have to use SO_BINDTODEVICE on our sockets instead.
|
// If it doesn't, we have to use SO_BINDTODEVICE on our sockets instead.
|
||||||
func useSocketMark() bool {
|
func useSocketMark() bool {
|
||||||
|
if forceBindToDevice {
|
||||||
|
return false
|
||||||
|
}
|
||||||
socketMarkWorksOnce.Do(func() {
|
socketMarkWorksOnce.Do(func() {
|
||||||
socketMarkWorksOnce.v = socketMarkWorks()
|
socketMarkWorksOnce.v = socketMarkWorks()
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user