{"record":{"id":"31a6f7350bea83d2","repo":"cloudflare/cloudflared","slug":"icmp-proxy-is-not-implemented-on-s-s","errorCode":null,"errorMessage":"ICMP proxy is not implemented on %s %s","messagePattern":"ICMP proxy is not implemented on (.+?) (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"ingress/icmp_generic.go","lineNumber":17,"sourceCode":"//go:build !darwin && !linux && (!windows || !cgo)\n\npackage ingress\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/netip\"\n\t\"runtime\"\n\t\"time\"\n\n\t\"github.com/rs/zerolog\"\n\n\t\"github.com/cloudflare/cloudflared/packet\"\n)\n\nvar errICMPProxyNotImplemented = fmt.Errorf(\"ICMP proxy is not implemented on %s %s\", runtime.GOOS, runtime.GOARCH)\n\ntype icmpProxy struct{}\n\nfunc (ip icmpProxy) Request(ctx context.Context, pk *packet.ICMP, responder ICMPResponder) error {\n\treturn errICMPProxyNotImplemented\n}\n\nfunc (ip *icmpProxy) Serve(ctx context.Context) error {\n\treturn errICMPProxyNotImplemented\n}\n\nfunc newICMPProxy(listenIP netip.Addr, logger *zerolog.Logger, idleTimeout time.Duration) (*icmpProxy, error) {\n\treturn nil, errICMPProxyNotImplemented\n}\n","sourceCodeStart":1,"sourceCodeEnd":32,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/ingress/icmp_generic.go#L1-L32","documentation":"cloudflared builds a fallback ICMP proxy on platforms/ architectures where a native packet-socket ICMP proxy is not implemented. This stub proxy returns errICMPProxyNotImplemented for every Request and Serve call, so the error simply means 'ICMP proxying is unavailable on this platform' (message interpolates runtime.GOOS/GOARCH).","triggerScenarios":"Running cloudflared with ICMP/UDP proxy features on an OS/arch combination that has no native icmpProxy implementation (e.g. non-Linux/non-Windows/non-macOS builds, or unsupported architectures); any tunnel request that routes an ICMP packet to the stub icmpProxy.Request, or starting proxying via icmpProxy.Serve.","commonSituations":"Deploying cloudflared on unusual platforms (BSD, ARM variants without support) and using `cloudflared access` / WARP-style ICMP routing; building from source for an architecture where per-OS icmp_linux.go/icmp_windows.go/icmp_darwin.go files are excluded by build tags.","solutions":["Verify you are on a supported platform (linux/amd64, linux/arm64, windows, darwin); if not, rebuild cloudflared for a supported OS/arch.","Reinstall the official release binary matching your platform instead of a source build that compiled in the stub icmp_generic.go.","If ICMP proxying is genuinely unavailable, disable ICMP routing for the tunnel (remove icmp/UDP ingress rules) and route only TCP/HTTP traffic.","For Linux, ensure the runtime supports packet sockets and you have the needed capabilities (CAP_NET_RAW) so the real proxy is chosen at startup.","If the platform is required, contribute/implement a native icmpProxy for that GOOS/GOARCH; the stub is only a placeholder."],"exampleFix":"// before (unsupported platform, stub selected by build tags)\nGOOS=freebsd GOARCH=arm64 make cloudflared   # uses ingress/icmp_generic.go stub\n// after\nGOOS=linux GOARCH=amd64 make cloudflared     # real ICMP proxy implementation","handlingStrategy":"fallback","validationCode":"if strings.Contains(proxyErr.Error(), \"ICMP proxy is not implemented\") {\n    // platform lacks ICMP proxying; disable ICMP routing or rebuild for a supported GOOS/GOARCH\n}","typeGuard":"func icmpProxySupported(goos, goarch string) bool {\n    switch goos {\n    case \"linux\", \"windows\", \"darwin\":\n        return true\n    default:\n        return false\n    }\n}","tryCatchPattern":"if err := proxy.Request(ctx, pkt, responder); err != nil {\n    if errors.Is(err, errICMPProxyNotImplemented) {\n        log.Warn().Msg(\"ICMP proxying unavailable on this platform; skipping\")\n        return nil // or fallback to non-ICMP transport\n    }\n    return fmt.Errorf(\"icmp request failed: %w\", err)\n}","preventionTips":["Deploy only on platforms with a native ICMP proxy (linux/windows/darwin).","Check build tags per GOOS/GOARCH before building custom binaries.","Do not configure ICMP ingress rules on unsupported platforms.","Verify platform support at startup and log a warning instead of failing per-request."],"tags":["icmp","platform","unsupported-platform","cloudflared"],"backgroundTag":"unsupported-platform","analyzedSha":"2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f","analyzedAt":"2026-09-06T04:14:33.757Z","contentChangedAt":"2026-09-06T04:14:33.757Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}