Compare commits
1 Commits
dns-body-m
...
d491ea12a5
Author | SHA1 | Date | |
---|---|---|---|
d491ea12a5 |
64
src/proto.rs
64
src/proto.rs
@ -156,47 +156,11 @@ pub struct DNSHeader {
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum DNSClass {
|
||||
Internet = 1,
|
||||
Any = 255,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum DNSType {
|
||||
HostAddress = 1,
|
||||
NameServer = 2,
|
||||
CanonicalName = 5,
|
||||
StartOfZoneAuthority = 6,
|
||||
WellKnownServiceDescription = 11,
|
||||
DomainNamePointer = 12,
|
||||
HostInformation = 13,
|
||||
MailListInformation = 14,
|
||||
MailExchange = 15,
|
||||
TextStrings = 16,
|
||||
Any = 255,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DNSQuestion {
|
||||
pub struct DNSQuery {
|
||||
pub hdr: DNSHeader,
|
||||
pub name: String,
|
||||
pub r#type: DNSType,
|
||||
pub class: DNSClass,
|
||||
}
|
||||
|
||||
pub struct DNSResourceRecord {
|
||||
pub name: String,
|
||||
pub r#type: DNSType,
|
||||
pub class: DNSClass,
|
||||
pub ttl: u32,
|
||||
pub data: String,
|
||||
}
|
||||
|
||||
pub struct DNSMessage {
|
||||
pub header: DNSHeader,
|
||||
pub questions: Vec<DNSQuestion>,
|
||||
pub answers: Vec<DNSResourceRecord>,
|
||||
pub authorities: Vec<DNSResourceRecord>,
|
||||
pub additionals: Vec<DNSResourceRecord>,
|
||||
pub qclass: u16,
|
||||
pub qtype: u16,
|
||||
}
|
||||
|
||||
impl DNSHeader {
|
||||
@ -368,7 +332,7 @@ mod tests {
|
||||
let invalid_rcodes = [11, 12, 13, 14, 15];
|
||||
|
||||
for rcode in invalid_rcodes {
|
||||
dns_query[3] = (rcode as u8) << 0;
|
||||
dns_query[3] = rcode;
|
||||
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
|
||||
@ -404,7 +368,7 @@ mod tests {
|
||||
];
|
||||
|
||||
for (rcode, parsed_rcode) in valid_rcodes {
|
||||
dns_query[3] = rcode << 0;
|
||||
dns_query[3] = rcode;
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(
|
||||
parse_result?.response_code, parsed_rcode,
|
||||
@ -561,7 +525,7 @@ mod tests {
|
||||
0xff, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.authorative_answer, true);
|
||||
assert!(parse_result?.authorative_answer);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -571,7 +535,7 @@ mod tests {
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.authorative_answer, false);
|
||||
assert!(!parse_result?.authorative_answer);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@ -585,7 +549,7 @@ mod tests {
|
||||
0xff, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.truncated, true);
|
||||
assert!(parse_result?.truncated);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -595,7 +559,7 @@ mod tests {
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.truncated, false);
|
||||
assert!(!parse_result?.truncated);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@ -609,7 +573,7 @@ mod tests {
|
||||
0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.recursion_desired, true);
|
||||
assert!(parse_result?.recursion_desired);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -619,7 +583,7 @@ mod tests {
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.recursion_desired, false);
|
||||
assert!(!parse_result?.recursion_desired);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@ -633,7 +597,7 @@ mod tests {
|
||||
0xff, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.recursion_available, true);
|
||||
assert!(parse_result?.recursion_available);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -643,7 +607,7 @@ mod tests {
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parse_result = DNSHeader::from_udp_datagram(&dns_query);
|
||||
assert_eq!(parse_result?.recursion_available, false);
|
||||
assert!(!parse_result?.recursion_available);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user