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
//! Record Data of Well-defined Record Types //! //! This module will eventually contain implementations for the record data //! of all defined resource record types. //! //! The types are named identically to the [`base::iana::Rtype`] variant they //! implement. They are grouped into submodules for the RFCs they are defined //! in. All types are also re-exported at the top level here. Ie., for the //! AAAA record type, you can simple `use domain::rdata::Aaaa` instead of //! `use domain::rdata::rfc3596::Aaaa` which nobody could possibly //! remember. There are, however, some helper data types defined here and //! there which are not re-exported to keep things somewhat tidy. //! //! See the [`iana::Rtype`] enum for the complete set of record types and, //! consequently, those types that are still missing. //! //! In additiona, the module provides two enums combining the known types. //! [`AllRecordData`] indeed contains all record data types known plus //! [`UnknownRecordData`] for the rest, while [`MasterRecordData`] only //! contains those types that can appear in master files plus, again, //! [`UnknownRecordData`] for everything else. //! //! [`AllRecordData`]: enum.AllRecordData.html //! [`MasterRecordData`]: enum.MasterRecordData.html //! [`base::iana::Rtype`]: ../base/iana/enum.Rtype.html pub mod rfc1035; pub mod rfc2782; pub mod rfc2845; pub mod rfc3596; pub mod rfc4034; pub mod rfc5155; pub mod rfc7344; #[macro_use] mod macros; // The rdata_types! macro (defined in self::macros) reexports the record data // types here and creates the MasterRecordData and AllRecordData enums // containing all record types that can appear in master files or all record // types that exist. // // All record data types listed here MUST have the same name as the // `Rtype` variant they implement – some of the code implemented by the macro // relies on that. // // Add any new module here and then add all record types in that module that // can appear in master files under "master" and all others under "pseudo". // Your type can be generic over an octet type "O" and a domain name type "N". // Add these as needed. // // Each type entry has to be followed by a comma, even the last one. The macro // is messy enough as it is ... rdata_types! { rfc1035::{ master { A, Cname<N>, Hinfo<O>, Mb<N>, Md<N>, Mf<N>, Minfo<N>, Mr<N>, Mx<N>, Ns<N>, Ptr<N>, Soa<N>, Txt<O>, } pseudo { Null<O>, } } rfc2782::{ master { Srv<N>, } } rfc2845::{ pseudo { Tsig<O, N>, } } rfc3596::{ master { Aaaa, } } rfc4034::{ master { Dnskey<O>, Rrsig<O, N>, Nsec<O, N>, Ds<O>, } } rfc5155::{ master { Nsec3<O>, Nsec3param<O>, } } rfc7344::{ master { Cdnskey<O>, Cds<O>, } } }