caddyserver/caddy · error
parsing CIDR expression: %v
Error message
parsing CIDR expression: %v
What it means
Error "parsing CIDR expression: %v" thrown in caddyserver/caddy.
Source
Thrown at modules/caddytls/matchers.go:376
ipStr = remoteAddr // weird; maybe no port?
}
ipAddr, err := netip.ParseAddr(ipStr)
if err != nil {
if c := m.logger.Check(zapcore.ErrorLevel, "invalid client IP address"); c != nil {
c.Write(zap.String("ip", ipStr))
}
return false
}
return (len(m.cidrs) == 0 || m.matches(ipAddr, m.cidrs)) &&
(len(m.notCidrs) == 0 || !m.matches(ipAddr, m.notCidrs))
}
func (MatchRemoteIP) parseIPRange(str string) ([]netip.Prefix, error) {
var cidrs []netip.Prefix
if strings.Contains(str, "/") {
ipNet, err := netip.ParsePrefix(str)
if err != nil {
return nil, fmt.Errorf("parsing CIDR expression: %v", err)
}
cidrs = append(cidrs, ipNet)
} else {
ipAddr, err := netip.ParseAddr(str)
if err != nil {
return nil, fmt.Errorf("invalid IP address: '%s': %v", str, err)
}
ip := netip.PrefixFrom(ipAddr, ipAddr.BitLen())
cidrs = append(cidrs, ip)
}
return cidrs, nil
}
func (MatchRemoteIP) matches(ip netip.Addr, ranges []netip.Prefix) bool {
return slices.ContainsFunc(ranges, func(prefix netip.Prefix) bool {
return prefix.Contains(ip)
})
}View on GitHub (pinned to 50e54ee279)
Solutions
- Fix the CIDR expression, e.g. '192.168.0.0/16'; the wrapped error explains the parse failure.
When it happens
Trigger: Thrown at modules/caddytls/matchers.go:376 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of caddyserver/caddy@50e54ee279 (2026-08-15).
Data as JSON: /api/errors/5941f76ca2b9c6d4.
Report an issue: GitHub.