1 use super::*; 2 use crate::error::Result; 3 use crate::message::name::*; 4 5 // A PTRResource is a PTR Resource record. 6 #[derive(Default, Debug, Clone, PartialEq, Eq)] 7 pub struct PtrResource { 8 pub ptr: Name, 9 } 10 11 impl fmt::Display for PtrResource { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result12 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 13 write!(f, "dnsmessage.PTRResource{{PTR: {}}}", self.ptr) 14 } 15 } 16 17 impl ResourceBody for PtrResource { real_type(&self) -> DnsType18 fn real_type(&self) -> DnsType { 19 DnsType::Ptr 20 } 21 22 // pack appends the wire format of the PTRResource to msg. pack( &self, msg: Vec<u8>, compression: &mut Option<HashMap<String, usize>>, compression_off: usize, ) -> Result<Vec<u8>>23 fn pack( 24 &self, 25 msg: Vec<u8>, 26 compression: &mut Option<HashMap<String, usize>>, 27 compression_off: usize, 28 ) -> Result<Vec<u8>> { 29 self.ptr.pack(msg, compression, compression_off) 30 } 31 unpack(&mut self, msg: &[u8], off: usize, _length: usize) -> Result<usize>32 fn unpack(&mut self, msg: &[u8], off: usize, _length: usize) -> Result<usize> { 33 self.ptr.unpack(msg, off) 34 } 35 } 36