summaryrefslogtreecommitdiff
path: root/packet/src
diff options
context:
space:
mode:
Diffstat (limited to 'packet/src')
-rw-r--r--packet/src/buffer.rs12
-rw-r--r--packet/src/header.rs6
-rw-r--r--packet/src/lib.rs9
-rw-r--r--packet/src/query.rs26
-rw-r--r--packet/src/question.rs4
-rw-r--r--packet/src/record.rs38
-rw-r--r--packet/src/result.rs14
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