slackhq/nebula · error
entry %v.route in tun.unsafe_routes is not present
Error message
entry %v.route in tun.unsafe_routes is not present
What it means
Config validation error in parseUnsafeRoutes: the i+1-th entry lacks the mandatory `route` key, so there is no destination CIDR for the unsafe route. via/mtu/metric were validated but the route prefix itself is missing.
Source
Thrown at overlay/route.go:271
return nil, fmt.Errorf("entry .weight in tun.unsafe_routes[%v].via[%v] is not an integer", i+1, ig+1)
}
}
if gatewayWeight < 1 || gatewayWeight > math.MaxInt32 {
return nil, fmt.Errorf("entry .weight in tun.unsafe_routes[%v].via[%v] is not in range (1-%d) : %v", i+1, ig+1, math.MaxInt32, gatewayWeight)
}
gateways[ig] = routing.NewGateway(gatewayIp, gatewayWeight)
}
default:
return nil, fmt.Errorf("entry %v.via in tun.unsafe_routes is not a string or list of gateways: found %T", i+1, rVia)
}
rRoute, ok := m["route"]
if !ok {
return nil, fmt.Errorf("entry %v.route in tun.unsafe_routes is not present", i+1)
}
install := true
rInstall, ok := m["install"]
if ok {
install, err = strconv.ParseBool(fmt.Sprintf("%v", rInstall))
if err != nil {
return nil, fmt.Errorf("entry %v.install in tun.unsafe_routes is not a boolean: %v", i+1, err)
}
}
r := Route{
Via: gateways,
MTU: mtu,
Metric: metric,
Install: install,
}
View on GitHub (pinned to dd8f660c0a)
Solutions
- Add route: <CIDR> (e.g. 10.0.0.0/8) to the entry
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at overlay/route.go:271 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of slackhq/nebula@dd8f660c0a (2026-09-03).
Data as JSON: /api/errors/0f0798d24e21ef65.
Report an issue: GitHub.