diff options
Diffstat (limited to '')
-rw-r--r-- | packet/src/buffer.rs | 12 | ||||
-rw-r--r-- | packet/src/header.rs | 6 | ||||
-rw-r--r-- | packet/src/lib.rs | 9 | ||||
-rw-r--r-- | packet/src/query.rs | 26 | ||||
-rw-r--r-- | packet/src/question.rs | 4 | ||||
-rw-r--r-- | packet/src/record.rs | 38 | ||||
-rw-r--r-- | packet/src/result.rs | 14 |
7 files changed, 54 insertions, 55 deletions
diff --git a/packet/src/buffer.rs b/packet/src/buffer.rs index 3809781..4394705 100644 --- a/packet/src/buffer.rs +++ b/packet/src/buffer.rs @@ -6,8 +6,8 @@ pub struct PacketBuffer { } impl PacketBuffer { - pub fn new() -> PacketBuffer { - PacketBuffer { + pub fn new() -> Self { + Self { buf: [0; 512], pos: 0, } @@ -50,7 +50,7 @@ impl PacketBuffer { if start + len >= 512 { return Err("End of buffer".into()); } - Ok(&self.buf[start..start + len as usize]) + Ok(&self.buf[start..start + len]) } pub fn read_u16(&mut self) -> Result<u16> { @@ -63,7 +63,7 @@ impl PacketBuffer { let res = ((self.read()? as u32) << 24) | ((self.read()? as u32) << 16) | ((self.read()? as u32) << 8) - | ((self.read()? as u32) << 0); + | (self.read()? as u32); Ok(res) } @@ -80,7 +80,7 @@ impl PacketBuffer { // can craft a packet with a cycle in the jump instructions. This guards // against such packets. if jumps_performed > max_jumps { - return Err(format!("Limit of {} jumps exceeded", max_jumps).into()); + return Err(format!("Limit of {max_jumps} jumps exceeded").into()); } let len = self.get(pos)?; @@ -154,7 +154,7 @@ impl PacketBuffer { self.write(((val >> 24) & 0xFF) as u8)?; self.write(((val >> 16) & 0xFF) as u8)?; self.write(((val >> 8) & 0xFF) as u8)?; - self.write(((val >> 0) & 0xFF) as u8)?; + self.write((val & 0xFF) as u8)?; Ok(()) } diff --git a/packet/src/header.rs b/packet/src/header.rs index c636619..b2bf1a1 100644 --- a/packet/src/header.rs +++ b/packet/src/header.rs @@ -23,8 +23,8 @@ pub struct DnsHeader { } impl DnsHeader { - pub fn new() -> DnsHeader { - DnsHeader { + pub fn new() -> Self { + Self { id: 0, recursion_desired: false, @@ -81,7 +81,7 @@ impl DnsHeader { | ((self.truncated_message as u8) << 1) | ((self.authoritative_answer as u8) << 2) | (self.opcode << 3) - | ((self.response as u8) << 7) as u8, + | ((self.response as u8) << 7), )?; buffer.write_u8( diff --git a/packet/src/lib.rs b/packet/src/lib.rs index 6c9a097..c7a8eb9 100644 --- a/packet/src/lib.rs +++ b/packet/src/lib.rs @@ -28,8 +28,8 @@ pub use query::QueryType as PacketType; pub use question::DnsQuestion as PacketQuestion; impl Packet { - pub fn new() -> Packet { - Packet { + pub fn new() -> Self { + Self { header: DnsHeader::new(), questions: Vec::new(), answers: Vec::new(), @@ -38,8 +38,8 @@ impl Packet { } } - pub fn from_buffer(buffer: &mut PacketBuffer) -> Result<Packet> { - let mut result = Packet::new(); + pub fn from_buffer(buffer: &mut PacketBuffer) -> Result<Self> { + let mut result = Self::new(); result.header.read(buffer)?; for _ in 0..result.header.questions { @@ -138,7 +138,6 @@ impl Packet { _ => None, }) }) - .map(|addr| addr) // Finally, pick the first valid entry .next() } diff --git a/packet/src/query.rs b/packet/src/query.rs index ac993bd..8804d15 100644 --- a/packet/src/query.rs +++ b/packet/src/query.rs @@ -11,23 +11,23 @@ pub enum QueryType { impl QueryType { pub fn to_num(&self) -> u16 { match *self { - QueryType::UNKNOWN(x) => x, - QueryType::A => 1, - QueryType::NS => 2, - QueryType::CNAME => 5, - QueryType::MX => 15, - QueryType::AAAA => 28, + Self::UNKNOWN(x) => x, + Self::A => 1, + Self::NS => 2, + Self::CNAME => 5, + Self::MX => 15, + Self::AAAA => 28, } } - pub fn from_num(num: u16) -> QueryType { + pub fn from_num(num: u16) -> Self { match num { - 1 => QueryType::A, - 2 => QueryType::NS, - 5 => QueryType::CNAME, - 15 => QueryType::MX, - 28 => QueryType::AAAA, - _ => QueryType::UNKNOWN(num), + 1 => Self::A, + 2 => Self::NS, + 5 => Self::CNAME, + 15 => Self::MX, + 28 => Self::AAAA, + _ => Self::UNKNOWN(num), } } }
\ No newline at end of file diff --git a/packet/src/question.rs b/packet/src/question.rs index ccb5c92..076de00 100644 --- a/packet/src/question.rs +++ b/packet/src/question.rs @@ -7,8 +7,8 @@ pub struct DnsQuestion { } impl DnsQuestion { - pub fn new(name: String, qtype: QueryType) -> DnsQuestion { - DnsQuestion { name, qtype } + pub fn new(name: String, qtype: QueryType) -> Self { + Self { name, qtype } } pub fn read(&mut self, buffer: &mut PacketBuffer) -> Result<()> { diff --git a/packet/src/record.rs b/packet/src/record.rs index bc9b694..c7ff1ac 100644 --- a/packet/src/record.rs +++ b/packet/src/record.rs @@ -40,7 +40,7 @@ pub enum DnsRecord { } impl DnsRecord { - pub fn read(buffer: &mut PacketBuffer) -> Result<DnsRecord> { + pub fn read(buffer: &mut PacketBuffer) -> Result<Self> { let mut domain = String::new(); buffer.read_qname(&mut domain)?; @@ -57,10 +57,10 @@ impl DnsRecord { ((raw_addr >> 24) & 0xFF) as u8, ((raw_addr >> 16) & 0xFF) as u8, ((raw_addr >> 8) & 0xFF) as u8, - ((raw_addr >> 0) & 0xFF) as u8, + (raw_addr & 0xFF) as u8, ); - Ok(DnsRecord::A { domain, addr, ttl }) + Ok(Self::A { domain, addr, ttl }) } QueryType::AAAA => { let raw_addr1 = buffer.read_u32()?; @@ -69,22 +69,22 @@ impl DnsRecord { let raw_addr4 = buffer.read_u32()?; let addr = Ipv6Addr::new( ((raw_addr1 >> 16) & 0xFFFF) as u16, - ((raw_addr1 >> 0) & 0xFFFF) as u16, + (raw_addr1 & 0xFFFF) as u16, ((raw_addr2 >> 16) & 0xFFFF) as u16, - ((raw_addr2 >> 0) & 0xFFFF) as u16, + (raw_addr2 & 0xFFFF) as u16, ((raw_addr3 >> 16) & 0xFFFF) as u16, - ((raw_addr3 >> 0) & 0xFFFF) as u16, + (raw_addr3 & 0xFFFF) as u16, ((raw_addr4 >> 16) & 0xFFFF) as u16, - ((raw_addr4 >> 0) & 0xFFFF) as u16, + (raw_addr4 & 0xFFFF) as u16, ); - Ok(DnsRecord::AAAA { domain, addr, ttl }) + Ok(Self::AAAA { domain, addr, ttl }) } QueryType::NS => { let mut ns = String::new(); buffer.read_qname(&mut ns)?; - Ok(DnsRecord::NS { + Ok(Self::NS { domain, host: ns, ttl, @@ -94,7 +94,7 @@ impl DnsRecord { let mut cname = String::new(); buffer.read_qname(&mut cname)?; - Ok(DnsRecord::CNAME { + Ok(Self::CNAME { domain, host: cname, ttl, @@ -105,7 +105,7 @@ impl DnsRecord { let mut mx = String::new(); buffer.read_qname(&mut mx)?; - Ok(DnsRecord::MX { + Ok(Self::MX { domain, priority, host: mx, @@ -115,7 +115,7 @@ impl DnsRecord { QueryType::UNKNOWN(_) => { buffer.step(data_len as usize)?; - Ok(DnsRecord::UNKNOWN { + Ok(Self::UNKNOWN { domain, qtype: qtype_num, data_len, @@ -129,7 +129,7 @@ impl DnsRecord { let start_pos = buffer.pos(); match *self { - DnsRecord::A { + Self::A { ref domain, ref addr, ttl, @@ -146,7 +146,7 @@ impl DnsRecord { buffer.write_u8(octets[2])?; buffer.write_u8(octets[3])?; } - DnsRecord::NS { + Self::NS { ref domain, ref host, ttl, @@ -164,7 +164,7 @@ impl DnsRecord { let size = buffer.pos() - (pos + 2); buffer.set_u16(pos, size as u16)?; } - DnsRecord::CNAME { + Self::CNAME { ref domain, ref host, ttl, @@ -182,7 +182,7 @@ impl DnsRecord { let size = buffer.pos() - (pos + 2); buffer.set_u16(pos, size as u16)?; } - DnsRecord::MX { + Self::MX { ref domain, priority, ref host, @@ -202,7 +202,7 @@ impl DnsRecord { let size = buffer.pos() - (pos + 2); buffer.set_u16(pos, size as u16)?; } - DnsRecord::AAAA { + Self::AAAA { ref domain, ref addr, ttl, @@ -217,8 +217,8 @@ impl DnsRecord { buffer.write_u16(*octet)?; } } - DnsRecord::UNKNOWN { .. } => { - println!("Skipping record: {:?}", self); + Self::UNKNOWN { .. } => { + println!("Skipping record: {self:?}"); } } diff --git a/packet/src/result.rs b/packet/src/result.rs index 66108b8..f33bd7d 100644 --- a/packet/src/result.rs +++ b/packet/src/result.rs @@ -9,14 +9,14 @@ pub enum ResultCode { } impl ResultCode { - pub fn from_num(num: u8) -> ResultCode { + pub fn from_num(num: u8) -> Self { match num { - 1 => ResultCode::FORMERR, - 2 => ResultCode::SERVFAIL, - 3 => ResultCode::NXDOMAIN, - 4 => ResultCode::NOTIMP, - 5 => ResultCode::REFUSED, - 0 | _ => ResultCode::NOERROR, + 1 => Self::FORMERR, + 2 => Self::SERVFAIL, + 3 => Self::NXDOMAIN, + 4 => Self::NOTIMP, + 5 => Self::REFUSED, + 0 | _ => Self::NOERROR, } } }
\ No newline at end of file |