tailscale/tailscale · error
missing 'ip' parameter
Error message
missing 'ip' parameter
What it means
Sent as 400 by servePing when the 'ip' parameter is absent.
Source
Thrown at ipn/localapi/localapi.go:1271
}
err := h.b.SetExpirySooner(r.Context(), expiryTime)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
w.Header().Set("Content-Type", "text/plain")
io.WriteString(w, "done\n")
}
func (h *Handler) servePing(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
if r.Method != httpm.POST {
http.Error(w, "want POST", http.StatusBadRequest)
return
}
ipStr := r.FormValue("ip")
if ipStr == "" {
http.Error(w, "missing 'ip' parameter", http.StatusBadRequest)
return
}
ip, err := netip.ParseAddr(ipStr)
if err != nil {
http.Error(w, "invalid IP", http.StatusBadRequest)
return
}
pingTypeStr := r.FormValue("type")
if pingTypeStr == "" {
http.Error(w, "missing 'type' parameter", http.StatusBadRequest)
return
}
size := 0
sizeStr := r.FormValue("size")
if sizeStr != "" {
size, err = strconv.Atoi(sizeStr)
if err != nil {
http.Error(w, "invalid 'size' parameter", http.StatusBadRequest)View on GitHub (pinned to 6e0912f979)
Solutions
- Include the 'ip' parameter (e.g. ip=100.64.1.2)
- Check parameter spelling and form encoding
- Use the tailscale CLI ping command which sets it correctly
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at ipn/localapi/localapi.go:1271 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/a5b78bd59867088e.
Report an issue: GitHub.