diff options
| author | Jordan Whited <jordan@tailscale.com> | 2024-06-18 14:06:00 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-18 14:06:00 -0700 |
| commit | a93173b56ae0d732ec00c8acfe7c95b2f5db5dd2 (patch) | |
| tree | 50e3d9397c9760c312ba2723f0515af3d48f72a5 /cmd | |
| parent | d55b105dae295818e0cd705b48c7aaac36dd8333 (diff) | |
| download | tailscale-a93173b56ae0d732ec00c8acfe7c95b2f5db5dd2.tar.xz tailscale-a93173b56ae0d732ec00c8acfe7c95b2f5db5dd2.zip | |
cmd/xdpderper,derp/xdp: implement mode that drops STUN packets (#12527)
This is useful during maintenance as a method for shedding home client
load.
Updates tailscale/corp#20689
Signed-off-by: Jordan Whited <jordan@tailscale.com>
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/xdpderper/xdpderper.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/cmd/xdpderper/xdpderper.go b/cmd/xdpderper/xdpderper.go index 8d52e9353..1af9c9d5a 100644 --- a/cmd/xdpderper/xdpderper.go +++ b/cmd/xdpderper/xdpderper.go @@ -5,6 +5,7 @@ package main import ( "flag" + "io" "log" "net/http" "os" @@ -57,7 +58,26 @@ func main() { log.Println("XDP STUN server started") mux := http.NewServeMux() - tsweb.Debugger(mux) + debug := tsweb.Debugger(mux) + debug.KVFunc("Drop STUN", func() any { + return server.GetDropSTUN() + }) + debug.Handle("drop-stun-on", "Drop STUN packets", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + err := server.SetDropSTUN(true) + if err != nil { + http.Error(w, err.Error(), 500) + } else { + io.WriteString(w, "STUN packets are now being dropped.") + } + })) + debug.Handle("drop-stun-off", "Handle STUN packets", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + err := server.SetDropSTUN(false) + if err != nil { + http.Error(w, err.Error(), 500) + } else { + io.WriteString(w, "STUN packets are now being handled.") + } + })) errCh := make(chan error, 1) go func() { err := http.ListenAndServe(*flagHTTP, mux) |
