Files
RemLink/internal/protocol/error_code.go
T
qsc20001102 142e5dc7d6
ci / Go checks (ubuntu-latest) (push) Has been cancelled
ci / Go checks (windows-latest) (push) Has been cancelled
初版功能完成
2026-08-29 13:12:17 +08:00

63 lines
1.9 KiB
Go

package protocol
// ErrorCode is a stable machine-readable RemLink failure identifier.
type ErrorCode string
const (
ErrorServerUnreachable ErrorCode = "SERVER_UNREACHABLE"
ErrorJoinTokenInvalid ErrorCode = "JOIN_TOKEN_INVALID"
ErrorNodeAuthFailed ErrorCode = "NODE_AUTH_FAILED"
ErrorOverlayLocalConflict ErrorCode = "OVERLAY_LOCAL_CONFLICT"
ErrorEngineerSessionExists ErrorCode = "ENGINEER_SESSION_EXISTS"
ErrorSiteOffline ErrorCode = "SITE_OFFLINE"
ErrorCIDRInvalid ErrorCode = "CIDR_INVALID"
ErrorCIDRLocalConflict ErrorCode = "CIDR_LOCAL_CONFLICT"
ErrorCIDROverlayConflict ErrorCode = "CIDR_OVERLAY_CONFLICT"
ErrorSiteNoRoute ErrorCode = "SITE_NO_ROUTE"
ErrorNetstackUnavailable ErrorCode = "NETSTACK_UNAVAILABLE"
ErrorFlowLimitReached ErrorCode = "FLOW_LIMIT_REACHED"
ErrorSessionTimeout ErrorCode = "SESSION_TIMEOUT"
ErrorSessionInjectFailed ErrorCode = "SESSION_INJECT_FAILED"
)
// ErrorCodes is the authoritative 14-code v1 baseline.
var ErrorCodes = [...]ErrorCode{
ErrorServerUnreachable,
ErrorJoinTokenInvalid,
ErrorNodeAuthFailed,
ErrorOverlayLocalConflict,
ErrorEngineerSessionExists,
ErrorSiteOffline,
ErrorCIDRInvalid,
ErrorCIDRLocalConflict,
ErrorCIDROverlayConflict,
ErrorSiteNoRoute,
ErrorNetstackUnavailable,
ErrorFlowLimitReached,
ErrorSessionTimeout,
ErrorSessionInjectFailed,
}
// Valid reports whether the code belongs to the v1 baseline.
func (c ErrorCode) Valid() bool {
switch c {
case ErrorServerUnreachable,
ErrorJoinTokenInvalid,
ErrorNodeAuthFailed,
ErrorOverlayLocalConflict,
ErrorEngineerSessionExists,
ErrorSiteOffline,
ErrorCIDRInvalid,
ErrorCIDRLocalConflict,
ErrorCIDROverlayConflict,
ErrorSiteNoRoute,
ErrorNetstackUnavailable,
ErrorFlowLimitReached,
ErrorSessionTimeout,
ErrorSessionInjectFailed:
return true
default:
return false
}
}