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