rust_cni/libcni/
error.rs

1// Copyright (c) 2024 https://github.com/divinerapier/cni-rs
2use std::io;
3use std::result;
4use thiserror::Error;
5
6// const CODE_UNKNOWN: usize = 0;
7// const CODE_INCOMPATIBLE_CNI_VERSION: usize = 1;
8// const CODE_UNSUPPORTED_FIELD: usize = 2;
9// const CODE_UNKNOWN_CONTAINER: usize = 3;
10// const CODE_INVALID_ENVIRONMENT_VARIABLES: usize = 4;
11// const CODE_IO_FILURE: usize = 5;
12// const CODE_DECODING_FAILURE: usize = 6;
13// const CODE_INVALID_NETWORK_CONFIG: usize = 7;
14// const CODE_TRY_AGAIN_LATER: usize = 11;
15// const CODE_INTERNAL: usize = 999;
16
17#[derive(Debug, Error)]
18pub enum CNIError {
19    #[error("no net configuration with name {0:?} in {1}")]
20    NotFound(String, String),
21    #[error("no net configurations found in {0}")]
22    NoConfigsFound(String),
23    #[error("execute CNI error {0}")]
24    ExecuteError(String),
25    #[error("Invalid Configuration: {0}")]
26    Config(String),
27    #[error("IO error: {0}")]
28    Io(#[source] Box<io::Error>),
29    #[error("Empty key")]
30    EmptyKey,
31    #[error("{0}")]
32    TooLong(String),
33    #[error("Invalid checksum")]
34    InvalidChecksum(String),
35    #[error("Invalid filename")]
36    InvalidFilename(String),
37    // #[error("Invalid prost data: {0}")]
38    // Decode(#[source] Box<prost::DecodeError>),
39    #[error("Invalid data: {0}")]
40    VarDecode(String),
41    #[error("{0}")]
42    TableRead(String),
43    #[error("Database Closed")]
44    DBClosed,
45    #[error("{0}")]
46    LogRead(String),
47}
48
49impl From<io::Error> for CNIError {
50    #[inline]
51    fn from(e: io::Error) -> CNIError {
52        CNIError::Io(Box::new(e))
53    }
54}
55
56// impl From<prost::DecodeError> for Error {
57//     #[inline]
58//     fn from(e: prost::DecodeError) -> Error {
59//         Error::Decode(Box::new(e))
60//     }
61// }
62
63pub type Result<T> = result::Result<T, CNIError>;