/rust/registry/src/index.crates.io-1949cf8c6b5b557f/snmp-parser-0.10.0/src/error.rs
Line | Count | Source |
1 | | use asn1_rs::Error; |
2 | | use nom::error::{ErrorKind, ParseError}; |
3 | | use std::convert::From; |
4 | | |
5 | | #[derive(Debug, PartialEq, thiserror::Error)] |
6 | | pub enum SnmpError { |
7 | | #[error("Invalid message: not a DER sequence, or unexpected number of items, etc.")] |
8 | | InvalidMessage, |
9 | | #[error("Invalid version: not a number, or not in supported range (1, 2 or 3)")] |
10 | | InvalidVersion, |
11 | | #[error("Unknown or invalid PDU type")] |
12 | | InvalidPduType, |
13 | | #[error("Invalid PDU: content does not match type, or content cannot be decoded")] |
14 | | InvalidPdu, |
15 | | #[error("Invalid SNMPv3 header data")] |
16 | | InvalidHeaderData, |
17 | | #[error("Invalid SNMPv3 scoped PDU")] |
18 | | InvalidScopedPduData, |
19 | | #[error("Invalid SNMPv3 security model")] |
20 | | InvalidSecurityModel, |
21 | | #[error("Nom error")] |
22 | | NomError(ErrorKind), |
23 | | #[error("BER error")] |
24 | | BerError(Error), |
25 | | } |
26 | | |
27 | | impl<I> ParseError<I> for SnmpError { |
28 | 0 | fn from_error_kind(_input: I, kind: ErrorKind) -> Self { |
29 | 0 | SnmpError::NomError(kind) |
30 | 0 | } |
31 | 0 | fn append(_input: I, kind: ErrorKind, _other: Self) -> Self { |
32 | 0 | SnmpError::NomError(kind) |
33 | 0 | } |
34 | | } |
35 | | |
36 | | impl From<Error> for SnmpError { |
37 | 40.8k | fn from(e: Error) -> SnmpError { |
38 | 40.8k | SnmpError::BerError(e) |
39 | 40.8k | } |
40 | | } |
41 | | |
42 | | impl From<SnmpError> for nom::Err<SnmpError> { |
43 | 0 | fn from(e: SnmpError) -> nom::Err<SnmpError> { |
44 | 0 | nom::Err::Error(e) |
45 | 0 | } |
46 | | } |