Skip to content

Commit 1912667

Browse files
committed
[breaking] Add type_code method for RData
The breaking change is storing type code in `RData::Unknown` (which is a public type) Fixes #39
1 parent dfe8bc3 commit 1912667

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

src/rdata/mod.rs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub enum RData<'a> {
5555
SRV(Srv<'a>),
5656
TXT(Txt<'a>),
5757
/// Anything that can't be parsed yet
58-
Unknown(&'a [u8]),
58+
Unknown(Type, &'a [u8]),
5959
}
6060

6161
pub (crate) trait Record<'a> {
@@ -77,7 +77,25 @@ impl<'a> RData<'a> {
7777
Type::SOA => Soa::parse(rdata, original),
7878
Type::SRV => Srv::parse(rdata, original),
7979
Type::TXT => Txt::parse(rdata, original),
80-
_ => Ok(RData::Unknown(rdata)),
80+
_ => Ok(RData::Unknown(typ, rdata)),
81+
}
82+
}
83+
84+
/// Returns packet type as enum
85+
///
86+
/// Code can be converted to an integer `packet.type_code() as isize`
87+
pub fn type_code(self) -> Type {
88+
match self {
89+
RData::A(..) => Type::A,
90+
RData::AAAA(..) => Type::AAAA,
91+
RData::CNAME(..) => Type::CNAME,
92+
RData::NS(..) => Type::NS,
93+
RData::MX(..) => Type::MX,
94+
RData::PTR(..) => Type::PTR,
95+
RData::SOA(..) => Type::SOA,
96+
RData::SRV(..) => Type::SRV,
97+
RData::TXT(..) => Type::TXT,
98+
RData::Unknown(t, _) => t,
8199
}
82100
}
83101
}

0 commit comments

Comments
 (0)