rust-dnsbox/lib/dnsbox-base/src/common_types/types.rs

295 lines
12 KiB
Rust

use common_types::Type;
pub const A : Type = Type(KnownType::A as u16);
pub const NS : Type = Type(KnownType::NS as u16);
pub const MD : Type = Type(KnownType::MD as u16);
pub const MF : Type = Type(KnownType::MF as u16);
pub const CNAME : Type = Type(KnownType::CNAME as u16);
pub const SOA : Type = Type(KnownType::SOA as u16);
pub const MB : Type = Type(KnownType::MB as u16);
pub const MG : Type = Type(KnownType::MG as u16);
pub const MR : Type = Type(KnownType::MR as u16);
pub const NULL : Type = Type(KnownType::NULL as u16);
pub const WKS : Type = Type(KnownType::WKS as u16);
pub const PTR : Type = Type(KnownType::PTR as u16);
pub const HINFO : Type = Type(KnownType::HINFO as u16);
pub const MINFO : Type = Type(KnownType::MINFO as u16);
pub const MX : Type = Type(KnownType::MX as u16);
pub const TXT : Type = Type(KnownType::TXT as u16);
pub const RP : Type = Type(KnownType::RP as u16);
pub const AFSDB : Type = Type(KnownType::AFSDB as u16);
pub const X25 : Type = Type(KnownType::X25 as u16);
pub const ISDN : Type = Type(KnownType::ISDN as u16);
pub const RT : Type = Type(KnownType::RT as u16);
pub const NSAP : Type = Type(KnownType::NSAP as u16);
pub const NSAP_PTR : Type = Type(KnownType::NSAP_PTR as u16);
pub const SIG : Type = Type(KnownType::SIG as u16);
pub const KEY : Type = Type(KnownType::KEY as u16);
pub const PX : Type = Type(KnownType::PX as u16);
pub const GPOS : Type = Type(KnownType::GPOS as u16);
pub const AAAA : Type = Type(KnownType::AAAA as u16);
pub const LOC : Type = Type(KnownType::LOC as u16);
pub const NXT : Type = Type(KnownType::NXT as u16);
pub const EID : Type = Type(KnownType::EID as u16);
pub const NIMLOC : Type = Type(KnownType::NIMLOC as u16);
pub const SRV : Type = Type(KnownType::SRV as u16);
pub const ATMA : Type = Type(KnownType::ATMA as u16);
pub const NAPTR : Type = Type(KnownType::NAPTR as u16);
pub const KX : Type = Type(KnownType::KX as u16);
pub const CERT : Type = Type(KnownType::CERT as u16);
pub const A6 : Type = Type(KnownType::A6 as u16);
pub const DNAME : Type = Type(KnownType::DNAME as u16);
pub const SINK : Type = Type(KnownType::SINK as u16);
pub const OPT : Type = Type(KnownType::OPT as u16);
pub const APL : Type = Type(KnownType::APL as u16);
pub const DS : Type = Type(KnownType::DS as u16);
pub const SSHFP : Type = Type(KnownType::SSHFP as u16);
pub const IPSECKEY : Type = Type(KnownType::IPSECKEY as u16);
pub const RRSIG : Type = Type(KnownType::RRSIG as u16);
pub const NSEC : Type = Type(KnownType::NSEC as u16);
pub const DNSKEY : Type = Type(KnownType::DNSKEY as u16);
pub const DHCID : Type = Type(KnownType::DHCID as u16);
pub const NSEC3 : Type = Type(KnownType::NSEC3 as u16);
pub const NSEC3PARAM : Type = Type(KnownType::NSEC3PARAM as u16);
pub const TLSA : Type = Type(KnownType::TLSA as u16);
pub const SMIMEA : Type = Type(KnownType::SMIMEA as u16);
pub const HIP : Type = Type(KnownType::HIP as u16);
pub const NINFO : Type = Type(KnownType::NINFO as u16);
pub const RKEY : Type = Type(KnownType::RKEY as u16);
pub const TALINK : Type = Type(KnownType::TALINK as u16);
pub const CDS : Type = Type(KnownType::CDS as u16);
pub const CDNSKEY : Type = Type(KnownType::CDNSKEY as u16);
pub const OPENPGPKEY : Type = Type(KnownType::OPENPGPKEY as u16);
pub const CSYNC : Type = Type(KnownType::CSYNC as u16);
pub const SPF : Type = Type(KnownType::SPF as u16);
pub const UINFO : Type = Type(KnownType::UINFO as u16);
pub const UID : Type = Type(KnownType::UID as u16);
pub const GID : Type = Type(KnownType::GID as u16);
pub const UNSPEC : Type = Type(KnownType::UNSPEC as u16);
pub const NID : Type = Type(KnownType::NID as u16);
pub const L32 : Type = Type(KnownType::L32 as u16);
pub const L64 : Type = Type(KnownType::L64 as u16);
pub const LP : Type = Type(KnownType::LP as u16);
pub const EUI48 : Type = Type(KnownType::EUI48 as u16);
pub const EUI64 : Type = Type(KnownType::EUI64 as u16);
pub const TKEY : Type = Type(KnownType::TKEY as u16);
pub const TSIG : Type = Type(KnownType::TSIG as u16);
pub const IXFR : Type = Type(KnownType::IXFR as u16);
pub const AXFR : Type = Type(KnownType::AXFR as u16);
pub const MAILB : Type = Type(KnownType::MAILB as u16);
pub const MAILA : Type = Type(KnownType::MAILA as u16);
pub const ANY : Type = Type(KnownType::ANY as u16);
pub const URI : Type = Type(KnownType::URI as u16);
pub const CAA : Type = Type(KnownType::CAA as u16);
pub const AVC : Type = Type(KnownType::AVC as u16);
pub const DOA : Type = Type(KnownType::DOA as u16);
pub const DLV : Type = Type(KnownType::DLV as u16);
pub const ADDR : Type = Type(KnownType::ADDR as u16);
pub const ALIAS : Type = Type(KnownType::ALIAS as u16);
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[repr(u16)]
#[allow(non_camel_case_types)]
pub enum KnownType {
// try to list "original" rfc
A = 0x0001, // RFC 1035
NS = 0x0002, // RFC 1035
MD = 0x0003, // RFC 1035
MF = 0x0004, // RFC 1035
CNAME = 0x0005, // RFC 1035
SOA = 0x0006, // RFC 1035
MB = 0x0007, // RFC 1035
MG = 0x0008, // RFC 1035
MR = 0x0009, // RFC 1035
NULL = 0x000a, // RFC 1035
WKS = 0x000b, // RFC 1035
PTR = 0x000c, // RFC 1035
HINFO = 0x000d, // RFC 1035
MINFO = 0x000e, // RFC 1035
MX = 0x000f, // RFC 1035
TXT = 0x0010, // RFC 1035
RP = 0x0011, // RFC 1183
AFSDB = 0x0012, // RFC 1183
X25 = 0x0013, // RFC 1183
ISDN = 0x0014, // RFC 1183
RT = 0x0015, // RFC 1183
NSAP = 0x0016, // RFC 1706
NSAP_PTR = 0x0017, // RFC 1348
SIG = 0x0018, // RFC 2535
KEY = 0x0019, // RFC 2535
PX = 0x001a, // RFC 2163
GPOS = 0x001b, // RFC 1712
AAAA = 0x001c, // RFC 3596
LOC = 0x001d, // RFC 1876
NXT = 0x001e, // RFC 2535
EID = 0x001f, // Michael Patton: http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt
NIMLOC = 0x0020, // Michael Patton: http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt
SRV = 0x0021, // RFC 2782
ATMA = 0x0022, // http://www.broadband-forum.org/ftp/pub/approved-specs/af-dans-0152.000.pdf
NAPTR = 0x0023, // RFC 2168
KX = 0x0024, // RFC 2230
CERT = 0x0025, // RFC 4398
A6 = 0x0026, // RFC 2874
DNAME = 0x0027, // RFC 6672
SINK = 0x0028, // Donald E Eastlake: http://tools.ietf.org/html/draft-eastlake-kitchen-sink
OPT = 0x0029, // RFC 6891
APL = 0x002a, // RFC 3123
DS = 0x002b, // RFC 3658
SSHFP = 0x002c, // RFC 4255
IPSECKEY = 0x002d, // RFC 4025
RRSIG = 0x002e, // RFC 4034
NSEC = 0x002f, // RFC 4034
DNSKEY = 0x0030, // RFC 4034
DHCID = 0x0031, // RFC 4701
NSEC3 = 0x0032, // RFC 5155
NSEC3PARAM = 0x0033, // RFC 5155
TLSA = 0x0034, // RFC 6698
SMIMEA = 0x0035, // RFC 8162
HIP = 0x0037, // RFC 8005
NINFO = 0x0038, // Jim Reid
RKEY = 0x0039, // Jim Reid
TALINK = 0x003a, // Wouter Wijngaards
CDS = 0x003b, // RFC 7344
CDNSKEY = 0x003c, // RFC 7344
OPENPGPKEY = 0x003d, // RFC 7929
CSYNC = 0x003e, // RFC 7477
SPF = 0x0063, // RFC 7208
UINFO = 0x0064, // IANA-Reserved
UID = 0x0065, // IANA-Reserved
GID = 0x0066, // IANA-Reserved
UNSPEC = 0x0067, // IANA-Reserved
NID = 0x0068, // RFC 6742
L32 = 0x0069, // RFC 6742
L64 = 0x006a, // RFC 6742
LP = 0x006b, // RFC 6742
EUI48 = 0x006c, // RFC 7043
EUI64 = 0x006d, // RFC 7043
TKEY = 0x00f9, // RFC 2930
TSIG = 0x00fa, // RFC 2845
IXFR = 0x00fb, // RFC 1995
AXFR = 0x00fc, // RFC 1035
MAILB = 0x00fd, // RFC 1035
MAILA = 0x00fe, // RFC 1035
ANY = 0x00ff, // RFC 1035, "*"
URI = 0x0100, // RFC 7553
CAA = 0x0101, // RFC 6844
AVC = 0x0102, // Wolfgang Riedel
DOA = 0x0103, // http://www.iana.org/go/draft-durand-doa-over-dns
DLV = 0x8001, // RFC 4431
ADDR = 0xff78, // powerdns?
ALIAS = 0xff79, // powerdns?
}
#[cfg(test)]
macro_rules! check_type {
($t:ident, $dec:expr) => {
{
use records::registry;
// compare decimal value
assert_eq!($t, Type($dec), "wrong decimal value for {}", stringify!($t));
// make sure it's registered
assert_eq!(registry::name_to_type(stringify!($t)), Some($t), "{} not registered", stringify!($t));
}
};
($t:ident, $dec:expr, $name:expr) => {
{
use records::registry;
// compare decimal value
assert_eq!($t, Type($dec), "wrong decimal value for {}", stringify!($t));
// make sure it's registered
assert_eq!(registry::name_to_type($name), Some($t), "{} not registered as {:?}", stringify!($t), $name);
}
};
}
#[cfg(test)]
#[test]
fn check_types() {
check_type!(A , 1);
check_type!(NS , 2);
check_type!(MD , 3);
check_type!(MF , 4);
check_type!(CNAME , 5);
check_type!(SOA , 6);
check_type!(MB , 7);
check_type!(MG , 8);
check_type!(MR , 9);
check_type!(NULL , 10);
check_type!(WKS , 11);
check_type!(PTR , 12);
check_type!(HINFO , 13);
check_type!(MINFO , 14);
check_type!(MX , 15);
check_type!(TXT , 16);
check_type!(RP , 17);
check_type!(AFSDB , 18);
check_type!(X25 , 19);
check_type!(ISDN , 20);
check_type!(RT , 21);
check_type!(NSAP , 22);
check_type!(NSAP_PTR , 23, "NSAP-PTR");
check_type!(SIG , 24);
check_type!(KEY , 25);
check_type!(PX , 26);
check_type!(GPOS , 27);
check_type!(AAAA , 28);
check_type!(LOC , 29);
check_type!(NXT , 30);
check_type!(EID , 31);
check_type!(NIMLOC , 32);
check_type!(SRV , 33);
check_type!(ATMA , 34);
check_type!(NAPTR , 35);
check_type!(KX , 36);
check_type!(CERT , 37);
check_type!(A6 , 38);
check_type!(DNAME , 39);
check_type!(SINK , 40);
check_type!(OPT , 41);
check_type!(APL , 42);
check_type!(DS , 43);
check_type!(SSHFP , 44);
check_type!(IPSECKEY , 45);
check_type!(RRSIG , 46);
check_type!(NSEC , 47);
check_type!(DNSKEY , 48);
check_type!(DHCID , 49);
check_type!(NSEC3 , 50);
check_type!(NSEC3PARAM, 51);
check_type!(TLSA , 52);
check_type!(SMIMEA , 53);
check_type!(HIP , 55);
check_type!(NINFO , 56);
check_type!(RKEY , 57);
check_type!(TALINK , 58);
check_type!(CDS , 59);
check_type!(CDNSKEY , 60);
check_type!(OPENPGPKEY, 61);
check_type!(CSYNC , 62);
check_type!(SPF , 99);
check_type!(UINFO , 100);
check_type!(UID , 101);
check_type!(GID , 102);
check_type!(UNSPEC , 103);
check_type!(NID , 104);
check_type!(L32 , 105);
check_type!(L64 , 106);
check_type!(LP , 107);
check_type!(EUI48 , 108);
check_type!(EUI64 , 109);
check_type!(TKEY , 249);
check_type!(TSIG , 250);
check_type!(IXFR , 251);
check_type!(AXFR , 252);
check_type!(MAILB , 253);
check_type!(MAILA , 254);
check_type!(ANY , 255);
check_type!(URI , 256);
check_type!(CAA , 257);
check_type!(AVC , 258);
check_type!(DOA , 259);
check_type!(DLV , 32769);
check_type!(ADDR , 65400);
check_type!(ALIAS , 65401);
}