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)
			break

View on GitHub (pinned to 7d214f8b09)

Solutions

  1. Clamp the prefix: IPv4 ≤ 32, IPv6 ≤ 128 (e.g. "10.0.0.0/24").
  2. 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

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


AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15). Data as JSON: /api/errors/115fc559d27f4638. Report an issue: GitHub.