rust_ipmi/err/
ipmi.rs

1use std::{io, num::TryFromIntError};
2
3use thiserror::Error;
4
5use crate::parser::rmcp_open_session::StatusCode;
6
7use super::{CommandError, NetFnError, PacketError};
8
9#[derive(Error, Debug)]
10pub enum IPMIClientError {
11    #[error("Failed to bind due to: {0}")]
12    FailedBind(#[source] io::Error),
13    #[error("Failed to connect to IPMI Server due to: {0}")]
14    ConnectToIPMIServer(#[source] io::Error),
15    #[error("Failed to set the socket read timeout: {0}")]
16    SetReadTimeOutError(#[source] io::Error),
17    #[error("Failed to send packet due to: {0}")]
18    FailedSend(#[source] io::Error),
19    #[error("Failed to set the socket read timeout: {0}")]
20    FailedSetSocketReadTimeout(#[from] io::Error),
21    #[error("{0}")]
22    NetFnError(#[from] NetFnError),
23    #[error("{0}")]
24    CommandError(#[from] CommandError),
25    #[error("Didn't recieve a response from remote controller")]
26    NoResponse,
27    #[error("Received incorrect payload type from remote controller")]
28    MisformedResponse,
29    #[error("This library does not support IPMI v1.5")]
30    UnsupportedVersion,
31    // #[error("Failed to parse the ")]
32    #[error("Error from BMC when opening rmcp+ session: {0:?}")]
33    FailedToOpenSession(StatusCode),
34    #[error("Error while parsing response packet")]
35    PacketError(#[from] PacketError),
36    #[error("Failed to validate key exchange auth code")]
37    MismatchedKeyExchangeAuthCode,
38    #[error("Failed to validate RAKP Message 2. This could be due to an incorrect password.")]
39    FailedToValidateRAKP2,
40    #[error("Username too long")]
41    UsernameOver255InLength(#[from] TryFromIntError),
42    #[error("Session not established yet")]
43    SessionNotEstablishedYet,
44}