summaryrefslogtreecommitdiffhomepage
path: root/ipn
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2022-05-05 13:37:18 -0700
committerBrad Fitzpatrick <bradfitz@tailscale.com>2022-05-06 11:07:33 -0700
commit2396a87871777aa1e3d1403559be4ee340c180ca (patch)
treeaefa27a21beb2f96a9129a5890326358fc76339f /ipn
parent025867fd0784da0458e0430e7209cdcf1a19f046 (diff)
downloadtailscale-bradfitz/tcp_flows.tar.xz
tailscale-bradfitz/tcp_flows.zip
wgengine/filter: do stateful TCP connection trackingbradfitz/tcp_flows
WIP Fixes #859 Change-Id: I34c077825248dcebf4283d63081e5bc152b7a58b Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
Diffstat (limited to 'ipn')
-rw-r--r--ipn/ipnlocal/local.go12
-rw-r--r--ipn/localapi/localapi.go2
2 files changed, 14 insertions, 0 deletions
diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go
index 2d2d0f90d..d6b1d9daa 100644
--- a/ipn/ipnlocal/local.go
+++ b/ipn/ipnlocal/local.go
@@ -9,6 +9,7 @@ import (
"errors"
"fmt"
"io"
+ "log"
"net"
"net/http"
"os"
@@ -3283,6 +3284,17 @@ func (b *LocalBackend) DebugReSTUN() error {
return nil
}
+func (b *LocalBackend) DebugKickAllTCPIn() error {
+ filt, ok := b.filterAtomic.Load().(*filter.Filter)
+ if !ok {
+ return errors.New("no filter")
+ }
+ for _, flow := range filt.OpenTCPFlows() {
+ log.Printf("XXX: flow open: %+v", flow)
+ }
+ return nil
+}
+
func (b *LocalBackend) magicConn() (*magicsock.Conn, error) {
ig, ok := b.e.(wgengine.InternalsGetter)
if !ok {
diff --git a/ipn/localapi/localapi.go b/ipn/localapi/localapi.go
index 699758d3e..286a54754 100644
--- a/ipn/localapi/localapi.go
+++ b/ipn/localapi/localapi.go
@@ -278,6 +278,8 @@ func (h *Handler) serveDebug(w http.ResponseWriter, r *http.Request) {
err = h.b.DebugRebind()
case "restun":
err = h.b.DebugReSTUN()
+ case "kick-all-tcp-in":
+ err = h.b.DebugKickAllTCPIn()
case "":
err = fmt.Errorf("missing parameter 'action'")
default: