1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
//! DNS implementation in Rust with no dependencies<br> //! See [DNS RFC Notes](https://github.com/willfleetw/rusty_dns/blob/main/docs/DNS_RFC_Notes.md) for notes on DNS protocols. /// DNS packet structures and operations. pub mod dns_packet; /// Default DNS protocol port. pub const DNS_PORT: u8 = 53; /// The size of a valid DNS packet header. pub const DNS_HEADER_SIZE: usize = 12; /// DNS OPCODE values. pub mod opcodes { /// A standard query (QUERY). pub const DNS_OPCODE_QUERY: u8 = 0; /// An inverse query (IQUERY). pub const DNS_OPCODE_IQUERY: u8 = 1; /// A server status request (STATUS). pub const DNS_OPCODE_STATUS: u8 = 2; } /// RCODE values. pub mod rcodes { /// No error condition. pub const DNS_RCODE_NO_ERROR: u8 = 0; /// Format error - The name server was uanble to interpret the query. pub const DNS_RCODE_FORMAT_ERROR: u8 = 1; /// Server failure - The name server was uanble to process this query. pub const DNS_RCODE_SERVER_ERROR: u8 = 2; /// Name error - Meaningful only for responses from an authoritative server. /// This code signifies that the domain name referenced in the query does not exist. pub const DNS_RCODE_NAME_ERROR: u8 = 3; /// Not implemented - The name server does not support the requested kind of query. pub const DNS_RCODE_NOT_IMPLEMENTED: u8 = 4; /// Refused - The name server refuses to perform the specified operation. pub const DNS_RCODE_REFUSED: u8 = 5; } /// CLASS values, all of which are a subset of QCLASS values. /// # NOTE /// All CLASS values are a subset of QCLASS values. pub mod classes { /// The Internet class. pub const DNS_CLASS_IN: u16 = 1; // The CSNET class (Obsolete). pub const DNS_CLASS_CS: u16 = 2; // The CHAOS class. pub const DNS_CLASS_CH: u16 = 3; // The HESIOD class. pub const DNS_CLASS_HS: u16 = 4; } /// QCLASS values, used in the question section of a DNS packet. /// # NOTE /// All CLASS values are a subset of QCLASS values. pub mod qclasses { /// QCLASS ANY can be used in a question to represent any possible desired class. pub const DNS_QCLASS_ANY: u16 = 255; } /// TYPE values, all of which are a subset of QTYPE values. /// # NOTE /// All TYPE values are a subset of QTYPES. pub mod types { /// An IPv4 host address. pub const DNS_TYPE_A: u16 = 1; /// An authoritative name server. pub const DNS_TYPE_NS: u16 = 2; /// A mail destination (Obsolete - replaced by MX). pub const DNS_TYPE_MD: u16 = 3; /// A mail forwarder (Obsolete - replaced by MX). pub const DNS_TYPE_MF: u16 = 4; /// The canonical name for an alias. pub const DNS_TYPE_CNAME: u16 = 5; /// Marks the start of a zone of authority. pub const DNS_TYPE_SOA: u16 = 6; /// A mailbox domain name. pub const DNS_TYPE_MB: u16 = 7; /// A mail group member. pub const DNS_TYPE_MG: u16 = 8; /// A mail rename domain name. pub const DNS_TYPE_MR: u16 = 9; /// A null RR. pub const DNS_TYPE_NULL: u16 = 10; /// A well known service description. pub const DNS_TYPE_WKS: u16 = 11; /// A domain name pointer. pub const DNS_TYPE_PTR: u16 = 12; /// Host information. pub const DNS_TYPE_HINFO: u16 = 13; /// Mailbox or mail list information. pub const DNS_TYPE_MINFO: u16 = 14; /// Mail exchange. pub const DNS_TYPE_MX: u16 = 15; /// Text strings. pub const DNS_TYPE_TXT: u16 = 16; /// An IPv6 host address. pub const DNS_TYPE_AAAA: u16 = 28; /// Specifies location of a service for a specific protocol. pub const DNS_TYPE_SRV: u16 = 33; } /// QTYPE values, used in the question section of a DNS packet. /// # NOTE /// All TYPE values are a subset of QTYPES. pub mod qtypes { /// A request for a transfer of an entire zone. pub const DNS_QTYPE_AXFR: u16 = 252; /// A request for mailbox-related records (MB, MG, or MR). pub const DNS_QTYPE_MAILB: u16 = 253; /// A request mail agent resource records (Obsolete - see MX). pub const DNS_QTYPE_MAILA: u16 = 254; /// A request for all records. pub const DNS_QTYPE_ANY: u16 = 255; }