diff --git a/src/dns.rs b/src/dns.rs index 8fb5f7f..515d446 100644 --- a/src/dns.rs +++ b/src/dns.rs @@ -21,6 +21,7 @@ const DNS_TYPE_TXT: u16 = 16; const DNS_CLASS_INET: u16 = 1; const DNS_RCODE_SERVFAIL: u8 = 2; +const DNS_RCODE_REFUSED: u8 = 5; #[inline] pub fn rcode(packet: &[u8]) -> u8 { @@ -42,6 +43,16 @@ pub fn set_rcode_servfail(packet: &mut [u8]) { set_rcode(packet, DNS_RCODE_SERVFAIL) } +#[inline] +pub fn rcode_refused(packet: &[u8]) -> bool { + rcode(packet) == DNS_RCODE_REFUSED +} + +#[inline] +pub fn set_rcode_refused(packet: &mut [u8]) { + set_rcode(packet, DNS_RCODE_REFUSED) +} + #[inline] pub fn qdcount(packet: &[u8]) -> u16 { BigEndian::read_u16(&packet[4..])