XTLS/Xray-core · error
CIDR prefix length
Error message
CIDR prefix length
What it means
The prefix length parsed successfully as a number but exceeds the address-family maximum (32 for IPv4, 128 for IPv6). The message includes both the offending value and the max, e.g. 'CIDR prefix length 33 exceeds max 32'.
Source
Thrown at common/geodata/rule_parser.go:126
switch ipAddr.Family() {
case net.AddressFamilyIPv4:
maxPrefix = 32
case net.AddressFamilyIPv6:
maxPrefix = 128
default:
return nil, errors.New("unsupported address family")
}
prefixBits := maxPrefix
if prefixStr != "" {
parsedPrefix, err := strconv.ParseUint(prefixStr, 10, 32)
if err != nil {
return nil, errors.New("invalid CIDR prefix length: ", prefixStr).Base(err)
}
prefixBits = uint32(parsedPrefix)
}
if prefixBits > maxPrefix {
return nil, errors.New("CIDR prefix length ", prefixBits, " exceeds max ", maxPrefix)
}
return &CIDR{
Ip: []byte(ipAddr.IP()),
Prefix: prefixBits,
}, nil
}
func ParseDomainRule(r string, defaultType Domain_Type) (*DomainRule, error) {
if strings.HasPrefix(r, "geosite:") {
r = "ext:" + DefaultGeoSiteDat + ":" + r[len("geosite:"):]
}
prefix := 0
for _, ext := range [...]string{"ext:", "ext-domain:", "ext-site:"} {
if strings.HasPrefix(r, ext) {
prefix = len(ext)
breakView on GitHub (pinned to 7d214f8b09)
Solutions
- Clamp the prefix: IPv4 ≤ 32, IPv6 ≤ 128 (e.g. "10.0.0.0/24").
- Omit the prefix entirely to match the single address (it defaults to full length).
Example fix
// before "ip": ["192.168.1.0/33"] // after "ip": ["192.168.1.0/32"]
Defensive patterns
Strategy: validation
Validate before calling
p, err := netip.ParsePrefix(r)
if err != nil { return err }
max := 32
if p.Addr().Is6() { max = 128 }
if p.Bits() > max { return fmt.Errorf("%q: prefix %d exceeds %d", r, p.Bits(), max) } Prevention
- Validate every CIDR with netip.ParsePrefix in your config pipeline; it enforces family-correct bounds.
When it happens
Trigger: Rules like "192.168.1.0/33", "10.0.0.0/64", or "2001:db8::/129".
Common situations: Using IPv6-sized prefixes on IPv4 addresses by copy-paste; off-by-one typos.
Related errors
- empty domain rule list
- invalid CIDR prefix length:
- invalid geodata asset url:
- invalid geodata asset file:
- invalid geodata cron
AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15).
Data as JSON: /api/errors/115fc559d27f4638.
Report an issue: GitHub.