summaryrefslogtreecommitdiff
path: root/src/packet/query.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/packet/query.rs')
-rw-r--r--src/packet/query.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/packet/query.rs b/src/packet/query.rs
new file mode 100644
index 0000000..cae6f09
--- /dev/null
+++ b/src/packet/query.rs
@@ -0,0 +1,51 @@
+#[derive(PartialEq, Eq, Debug, Clone, Hash, Copy)]
+pub enum QueryType {
+ UNKNOWN(u16),
+ A, // 1
+ NS, // 2
+ CNAME, // 5
+ SOA, // 6
+ PTR, // 12
+ MX, // 15
+ TXT, // 16
+ AAAA, // 28
+ SRV, // 33
+ OPT, // 41
+ CAA, // 257
+}
+
+impl QueryType {
+ pub fn to_num(&self) -> u16 {
+ match *self {
+ Self::UNKNOWN(x) => x,
+ Self::A => 1,
+ Self::NS => 2,
+ Self::CNAME => 5,
+ Self::SOA => 6,
+ Self::PTR => 12,
+ Self::MX => 15,
+ Self::TXT => 16,
+ Self::AAAA => 28,
+ Self::SRV => 33,
+ Self::OPT => 41,
+ Self::CAA => 257,
+ }
+ }
+
+ pub fn from_num(num: u16) -> Self {
+ match num {
+ 1 => Self::A,
+ 2 => Self::NS,
+ 5 => Self::CNAME,
+ 6 => Self::SOA,
+ 12 => Self::PTR,
+ 15 => Self::MX,
+ 16 => Self::TXT,
+ 28 => Self::AAAA,
+ 33 => Self::SRV,
+ 41 => Self::OPT,
+ 257 => Self::CAA,
+ _ => Self::UNKNOWN(num),
+ }
+ }
+}