1use std::fmt;
3#[derive(Debug, FromPrimitive)]
6pub enum RCode {
7 NoError,
9 FormErr,
11 ServFail,
13 NXDomain,
15 NotImp,
17 Refused,
19 YXDomain,
21 YXRRSet,
23 NXRRSet,
25 NotAuth,
27 NotZone,
29 DSOTYPENI,
31 Unassigned12,
33 Unassigned13,
35 Unassigned14,
37 Unassigned15,
39 BADVERS,
41 BADKEY,
43 BADTIME,
45 BADMODE,
47 BADNAME,
49 BADALG,
51 BADTRUNC,
53 BADCOOKIE,
55 Unknown,
57}
58
59impl fmt::Display for RCode {
60 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
61 match *self {
62 RCode::NoError => write!(f, "No Error"),
63 RCode::FormErr => write!(f, "Format Error"),
64 RCode::ServFail => write!(f, "Server Failure"),
65 RCode::NXDomain => write!(f, "Non-Existent Domain"),
66 RCode::NotImp => write!(f, "Not Implemented"),
67 RCode::Refused => write!(f, "Query Refused"),
68 RCode::YXDomain => write!(f, "Name Exists when it should not"),
69 RCode::YXRRSet => write!(f, "RR Set Exists when it should not"),
70 RCode::NXRRSet => write!(f, "RR Set that should exist does not"),
71 RCode::NotAuth => write!(f, "Server Not Authoritative for zone"),
72 RCode::NotZone => write!(f, "Name not contained in zone"),
73 RCode::DSOTYPENI => write!(f, "DSO-TYPE Not Implemented"),
74 RCode::Unassigned12
75 | RCode::Unassigned13
76 | RCode::Unassigned14
77 | RCode::Unassigned15 => write!(f, "Unassigned"),
78 RCode::BADVERS => write!(f, "Bad OPT Version"),
79 RCode::BADKEY => write!(f, "Key not recognized"),
80 RCode::BADTIME => write!(f, "Signature out of time window"),
81 RCode::BADMODE => write!(f, "Bad TKEY Mode"),
82 RCode::BADNAME => write!(f, "Duplicate key name"),
83 RCode::BADALG => write!(f, "Algorithm not supported"),
84 RCode::BADTRUNC => write!(f, "Bad Truncation"),
85 RCode::BADCOOKIE => write!(f, "Bad/missing Server Cookie"),
86 RCode::Unknown => write!(f, "Unknown"),
87 }
88 }
89}