use thiserror::Error;
#[derive(Debug, Error, PartialEq)]
pub enum Ipv6Error {
#[error("Invalid IPv6 packet length: expected at least {expected} bytes, got {actual} bytes")]
InvalidLength {
expected: usize,
actual: usize,
},
#[error("Invalid IP version: expected 6, got {0}")]
InvalidVersion(u8),
#[error(
"Invalid payload length: expected {expected} bytes, but packet only has {actual} bytes"
)]
InvalidPayloadLength {
expected: u16,
actual: usize,
},
#[error("Hop limit expired: {0}")]
HopLimitExpired(u8),
#[error("Unsupported next header: {0}")]
UnsupportedNextHeader(u8),
#[error("Invalid extension header: {0}")]
InvalidExtensionHeader(String),
#[error("Packet too large: {0} bytes (maximum allowed: {1} bytes)")]
PacketTooLarge(usize, usize),
#[error("Invalid IPv6 address: {0}")]
InvalidAddress(String),
}