@@ -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
6161pub ( 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