summaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
authorJordan Whited <jordan@tailscale.com>2024-06-18 14:06:00 -0700
committerGitHub <noreply@github.com>2024-06-18 14:06:00 -0700
commita93173b56ae0d732ec00c8acfe7c95b2f5db5dd2 (patch)
tree50e3d9397c9760c312ba2723f0515af3d48f72a5 /cmd
parentd55b105dae295818e0cd705b48c7aaac36dd8333 (diff)
downloadtailscale-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.go22
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)