Skip to main content

corevpn_protocol/
error.rs

1//! Protocol error types
2
3use thiserror::Error;
4
5/// Result type for protocol operations
6pub type Result<T> = std::result::Result<T, ProtocolError>;
7
8/// Protocol errors
9#[derive(Debug, Error)]
10pub enum ProtocolError {
11    /// Invalid packet format
12    #[error("invalid packet: {0}")]
13    InvalidPacket(String),
14
15    /// Unknown opcode
16    #[error("unknown opcode: {0}")]
17    UnknownOpcode(u8),
18
19    /// Packet too short
20    #[error("packet too short: expected at least {expected}, got {got}")]
21    PacketTooShort {
22        /// Expected minimum size
23        expected: usize,
24        /// Actual size received
25        got: usize,
26    },
27
28    /// Invalid session ID
29    #[error("invalid session ID")]
30    InvalidSessionId,
31
32    /// Session not found
33    #[error("session not found")]
34    SessionNotFound,
35
36    /// Handshake failed
37    #[error("handshake failed: {0}")]
38    HandshakeFailed(String),
39
40    /// TLS error
41    #[error("TLS error: {0}")]
42    TlsError(String),
43
44    /// Authentication failed
45    #[error("authentication failed: {0}")]
46    AuthFailed(String),
47
48    /// Replay attack detected
49    #[error("replay attack detected")]
50    ReplayDetected,
51
52    /// Key not available
53    #[error("key not available for key_id {0}")]
54    KeyNotAvailable(u8),
55
56    /// Cryptographic error
57    #[error("crypto error: {0}")]
58    CryptoError(#[from] corevpn_crypto::CryptoError),
59
60    /// Core error
61    #[error("core error: {0}")]
62    CoreError(#[from] corevpn_core::CoreError),
63
64    /// IO error
65    #[error("IO error: {0}")]
66    IoError(#[from] std::io::Error),
67
68    /// Timeout
69    #[error("operation timed out")]
70    Timeout,
71
72    /// Connection reset
73    #[error("connection reset by peer")]
74    ConnectionReset,
75}