summaryrefslogtreecommitdiffhomepage
path: root/wgengine/netstack/netstack.go
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2023-02-08 01:53:31 +0000
committerBrad Fitzpatrick <bradfitz@tailscale.com>2023-02-08 01:53:31 +0000
commitcf5fb33e84e97923a88b34dded17e9ac85f39d3f (patch)
tree9d97e646087210067a52742e4e5d85a0658c9f00 /wgengine/netstack/netstack.go
parentcab2b2b59ec9d97edf5f7f67ea2811ec34429858 (diff)
downloadtailscale-bradfitz/sassy.tar.xz
tailscale-bradfitz/sassy.zip
WIP: sassy demobradfitz/sassy
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
Diffstat (limited to 'wgengine/netstack/netstack.go')
-rw-r--r--wgengine/netstack/netstack.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/wgengine/netstack/netstack.go b/wgengine/netstack/netstack.go
index e2fc5e0c1..f8aff38d4 100644
--- a/wgengine/netstack/netstack.go
+++ b/wgengine/netstack/netstack.go
@@ -535,6 +535,8 @@ func (ns *Impl) shouldProcessInbound(p *packet.Parsed, t *tstun.Wrapper) bool {
// Handle TCP connection to the Tailscale IP(s) in some cases:
if ns.lb != nil && p.IPProto == ipproto.TCP && isLocal {
+ return true // XXX sassy test
+
var peerAPIPort uint16
if p.TCPFlags&packet.TCPSynAck == packet.TCPSyn {
@@ -885,6 +887,18 @@ func (ns *Impl) acceptTCP(r *tcp.ForwarderRequest) {
ns.lb.HandleQuad100Port80Conn(c)
return
}
+ if ns.isLocalIP(dialIP) {
+ getTCPConn := func() (_ net.Conn, ok bool) {
+ c := createConn()
+ return c, c != nil
+ }
+ sendRST := func() {
+ r.Complete(true)
+ }
+ ns.lb.HandleSassyTCPConn(reqDetails.LocalPort, clientRemoteAddrPort, getTCPConn, sendRST)
+ return
+
+ }
if ns.lb.ShouldInterceptTCPPort(reqDetails.LocalPort) && ns.isLocalIP(dialIP) {
getTCPConn := func() (_ net.Conn, ok bool) {
c := createConn()
@@ -896,6 +910,7 @@ func (ns *Impl) acceptTCP(r *tcp.ForwarderRequest) {
ns.lb.HandleInterceptedTCPConn(reqDetails.LocalPort, clientRemoteAddrPort, getTCPConn, sendRST)
return
}
+ return
}
if ns.ForwardTCPIn != nil {