diff options
| author | Brad Fitzpatrick <bradfitz@tailscale.com> | 2023-02-08 01:53:31 +0000 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@tailscale.com> | 2023-02-08 01:53:31 +0000 |
| commit | cf5fb33e84e97923a88b34dded17e9ac85f39d3f (patch) | |
| tree | 9d97e646087210067a52742e4e5d85a0658c9f00 /wgengine/netstack/netstack.go | |
| parent | cab2b2b59ec9d97edf5f7f67ea2811ec34429858 (diff) | |
| download | tailscale-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.go | 15 |
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 { |
