Home | History | Annotate | Line # | Download | only in sldns
rrdef.h revision 1.1.1.2
      1 /*
      2  * rrdef.h
      3  *
      4  * RR definitions
      5  *
      6  * a Net::DNS like library for C
      7  *
      8  * (c) NLnet Labs, 2005-2006
      9  *
     10  * See the file LICENSE for the license
     11  */
     12 
     13 /**
     14  * \file
     15  *
     16  * Defines resource record types and constants.
     17  */
     18 
     19 #ifndef LDNS_RRDEF_H
     20 #define LDNS_RRDEF_H
     21 
     22 #ifdef __cplusplus
     23 extern "C" {
     24 #endif
     25 
     26 /** Maximum length of a dname label */
     27 #define LDNS_MAX_LABELLEN     63
     28 /** Maximum length of a complete dname */
     29 #define LDNS_MAX_DOMAINLEN    255
     30 /** Maximum number of pointers in 1 dname */
     31 #define LDNS_MAX_POINTERS	65535
     32 /** The bytes TTL, CLASS and length use up in an rr */
     33 #define LDNS_RR_OVERHEAD	10
     34 
     35 #define LDNS_DNSSEC_KEYPROTO    3
     36 #define LDNS_KEY_ZONE_KEY   0x0100 /* set for ZSK&KSK, rfc 4034 */
     37 #define LDNS_KEY_SEP_KEY    0x0001 /* set for KSK, rfc 4034 */
     38 #define LDNS_KEY_REVOKE_KEY 0x0080 /* used to revoke KSK, rfc 5011 */
     39 
     40 /* The first fields are contiguous and can be referenced instantly */
     41 #define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 259
     42 
     43 /** lookuptable for rr classes  */
     44 extern struct sldns_struct_lookup_table* sldns_rr_classes;
     45 
     46 /**
     47  *  The different RR classes.
     48  */
     49 enum sldns_enum_rr_class
     50 {
     51 	/** the Internet */
     52 	LDNS_RR_CLASS_IN 	= 1,
     53 	/** Chaos class */
     54 	LDNS_RR_CLASS_CH	= 3,
     55 	/** Hesiod (Dyer 87) */
     56 	LDNS_RR_CLASS_HS	= 4,
     57 	/** None class, dynamic update */
     58 	LDNS_RR_CLASS_NONE      = 254,
     59 	/** Any class */
     60 	LDNS_RR_CLASS_ANY	= 255,
     61 
     62 	LDNS_RR_CLASS_FIRST     = 0,
     63 	LDNS_RR_CLASS_LAST      = 65535,
     64 	LDNS_RR_CLASS_COUNT     = LDNS_RR_CLASS_LAST - LDNS_RR_CLASS_FIRST + 1
     65 };
     66 typedef enum sldns_enum_rr_class sldns_rr_class;
     67 
     68 /**
     69  *  Used to specify whether compression is allowed.
     70  */
     71 enum sldns_enum_rr_compress
     72 {
     73 	/** compression is allowed */
     74 	LDNS_RR_COMPRESS,
     75 	LDNS_RR_NO_COMPRESS
     76 };
     77 typedef enum sldns_enum_rr_compress sldns_rr_compress;
     78 
     79 /**
     80  * The different RR types.
     81  */
     82 enum sldns_enum_rr_type
     83 {
     84 	/**  a host address */
     85 	LDNS_RR_TYPE_A = 1,
     86 	/**  an authoritative name server */
     87 	LDNS_RR_TYPE_NS = 2,
     88 	/**  a mail destination (Obsolete - use MX) */
     89 	LDNS_RR_TYPE_MD = 3,
     90 	/**  a mail forwarder (Obsolete - use MX) */
     91 	LDNS_RR_TYPE_MF = 4,
     92 	/**  the canonical name for an alias */
     93 	LDNS_RR_TYPE_CNAME = 5,
     94 	/**  marks the start of a zone of authority */
     95 	LDNS_RR_TYPE_SOA = 6,
     96 	/**  a mailbox domain name (EXPERIMENTAL) */
     97 	LDNS_RR_TYPE_MB = 7,
     98 	/**  a mail group member (EXPERIMENTAL) */
     99 	LDNS_RR_TYPE_MG = 8,
    100 	/**  a mail rename domain name (EXPERIMENTAL) */
    101 	LDNS_RR_TYPE_MR = 9,
    102 	/**  a null RR (EXPERIMENTAL) */
    103 	LDNS_RR_TYPE_NULL = 10,
    104 	/**  a well known service description */
    105 	LDNS_RR_TYPE_WKS = 11,
    106 	/**  a domain name pointer */
    107 	LDNS_RR_TYPE_PTR = 12,
    108 	/**  host information */
    109 	LDNS_RR_TYPE_HINFO = 13,
    110 	/**  mailbox or mail list information */
    111 	LDNS_RR_TYPE_MINFO = 14,
    112 	/**  mail exchange */
    113 	LDNS_RR_TYPE_MX = 15,
    114 	/**  text strings */
    115 	LDNS_RR_TYPE_TXT = 16,
    116 	/**  RFC1183 */
    117 	LDNS_RR_TYPE_RP = 17,
    118 	/**  RFC1183 */
    119 	LDNS_RR_TYPE_AFSDB = 18,
    120 	/**  RFC1183 */
    121 	LDNS_RR_TYPE_X25 = 19,
    122 	/**  RFC1183 */
    123 	LDNS_RR_TYPE_ISDN = 20,
    124 	/**  RFC1183 */
    125 	LDNS_RR_TYPE_RT = 21,
    126 	/**  RFC1706 */
    127 	LDNS_RR_TYPE_NSAP = 22,
    128 	/**  RFC1348 */
    129 	LDNS_RR_TYPE_NSAP_PTR = 23,
    130 	/**  2535typecode */
    131 	LDNS_RR_TYPE_SIG = 24,
    132 	/**  2535typecode */
    133 	LDNS_RR_TYPE_KEY = 25,
    134 	/**  RFC2163 */
    135 	LDNS_RR_TYPE_PX = 26,
    136 	/**  RFC1712 */
    137 	LDNS_RR_TYPE_GPOS = 27,
    138 	/**  ipv6 address */
    139 	LDNS_RR_TYPE_AAAA = 28,
    140 	/**  LOC record  RFC1876 */
    141 	LDNS_RR_TYPE_LOC = 29,
    142 	/**  2535typecode */
    143 	LDNS_RR_TYPE_NXT = 30,
    144 	/**  draft-ietf-nimrod-dns-01.txt */
    145 	LDNS_RR_TYPE_EID = 31,
    146 	/**  draft-ietf-nimrod-dns-01.txt */
    147 	LDNS_RR_TYPE_NIMLOC = 32,
    148 	/**  SRV record RFC2782 */
    149 	LDNS_RR_TYPE_SRV = 33,
    150 	/**  http://www.jhsoft.com/rfc/af-saa-0069.000.rtf */
    151 	LDNS_RR_TYPE_ATMA = 34,
    152 	/**  RFC2915 */
    153 	LDNS_RR_TYPE_NAPTR = 35,
    154 	/**  RFC2230 */
    155 	LDNS_RR_TYPE_KX = 36,
    156 	/**  RFC2538 */
    157 	LDNS_RR_TYPE_CERT = 37,
    158 	/**  RFC2874 */
    159 	LDNS_RR_TYPE_A6 = 38,
    160 	/**  RFC2672 */
    161 	LDNS_RR_TYPE_DNAME = 39,
    162 	/**  dnsind-kitchen-sink-02.txt */
    163 	LDNS_RR_TYPE_SINK = 40,
    164 	/**  Pseudo OPT record... */
    165 	LDNS_RR_TYPE_OPT = 41,
    166 	/**  RFC3123 */
    167 	LDNS_RR_TYPE_APL = 42,
    168 	/**  RFC4034, RFC3658 */
    169 	LDNS_RR_TYPE_DS = 43,
    170 	/**  SSH Key Fingerprint */
    171 	LDNS_RR_TYPE_SSHFP = 44, /* RFC 4255 */
    172 	/**  IPsec Key */
    173 	LDNS_RR_TYPE_IPSECKEY = 45, /* RFC 4025 */
    174 	/**  DNSSEC */
    175 	LDNS_RR_TYPE_RRSIG = 46, /* RFC 4034 */
    176 	LDNS_RR_TYPE_NSEC = 47, /* RFC 4034 */
    177 	LDNS_RR_TYPE_DNSKEY = 48, /* RFC 4034 */
    178 
    179 	LDNS_RR_TYPE_DHCID = 49, /* RFC 4701 */
    180 	/* NSEC3 */
    181 	LDNS_RR_TYPE_NSEC3 = 50, /* RFC 5155 */
    182 	LDNS_RR_TYPE_NSEC3PARAM = 51, /* RFC 5155 */
    183 	LDNS_RR_TYPE_NSEC3PARAMS = 51,
    184 	LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */
    185 	LDNS_RR_TYPE_SMIMEA = 53, /* draft-ietf-dane-smime, TLSA-like but may
    186 				     be extended */
    187 
    188 	LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */
    189 
    190 	/** draft-reid-dnsext-zs */
    191 	LDNS_RR_TYPE_NINFO = 56,
    192 	/** draft-reid-dnsext-rkey */
    193 	LDNS_RR_TYPE_RKEY = 57,
    194         /** draft-ietf-dnsop-trust-history */
    195         LDNS_RR_TYPE_TALINK = 58,
    196 	LDNS_RR_TYPE_CDS = 59, /** RFC 7344 */
    197 	LDNS_RR_TYPE_CDNSKEY = 60, /** RFC 7344 */
    198 	LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */
    199 	LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */
    200 
    201 	LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */
    202 
    203 	LDNS_RR_TYPE_UINFO = 100,
    204 	LDNS_RR_TYPE_UID = 101,
    205 	LDNS_RR_TYPE_GID = 102,
    206 	LDNS_RR_TYPE_UNSPEC = 103,
    207 
    208 	LDNS_RR_TYPE_NID = 104, /* RFC 6742 */
    209 	LDNS_RR_TYPE_L32 = 105, /* RFC 6742 */
    210 	LDNS_RR_TYPE_L64 = 106, /* RFC 6742 */
    211 	LDNS_RR_TYPE_LP = 107, /* RFC 6742 */
    212 
    213 	/** draft-jabley-dnsext-eui48-eui64-rrtypes */
    214 	LDNS_RR_TYPE_EUI48 = 108,
    215 	LDNS_RR_TYPE_EUI64 = 109,
    216 
    217 	LDNS_RR_TYPE_TKEY = 249, /* RFC 2930 */
    218 	LDNS_RR_TYPE_TSIG = 250,
    219 	LDNS_RR_TYPE_IXFR = 251,
    220 	LDNS_RR_TYPE_AXFR = 252,
    221 	/**  A request for mailbox-related records (MB, MG or MR) */
    222 	LDNS_RR_TYPE_MAILB = 253,
    223 	/**  A request for mail agent RRs (Obsolete - see MX) */
    224 	LDNS_RR_TYPE_MAILA = 254,
    225 	/**  any type (wildcard) */
    226 	LDNS_RR_TYPE_ANY = 255,
    227 	LDNS_RR_TYPE_URI = 256, /* RFC 7553 */
    228 	LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
    229 	LDNS_RR_TYPE_AVC = 258,
    230 
    231 	/** DNSSEC Trust Authorities */
    232 	LDNS_RR_TYPE_TA = 32768,
    233 	/* RFC 4431, 5074, DNSSEC Lookaside Validation */
    234 	LDNS_RR_TYPE_DLV = 32769,
    235 
    236 	/* type codes from nsec3 experimental phase
    237 	LDNS_RR_TYPE_NSEC3 = 65324,
    238 	LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
    239 	LDNS_RR_TYPE_FIRST = 0,
    240 	LDNS_RR_TYPE_LAST  = 65535,
    241 	LDNS_RR_TYPE_COUNT = LDNS_RR_TYPE_LAST - LDNS_RR_TYPE_FIRST + 1
    242 };
    243 typedef enum sldns_enum_rr_type sldns_rr_type;
    244 
    245 /* RDATA */
    246 #define LDNS_MAX_RDFLEN	65535
    247 
    248 #define LDNS_RDF_SIZE_BYTE              1
    249 #define LDNS_RDF_SIZE_WORD              2
    250 #define LDNS_RDF_SIZE_DOUBLEWORD        4
    251 #define LDNS_RDF_SIZE_6BYTES            6
    252 #define LDNS_RDF_SIZE_8BYTES            8
    253 #define LDNS_RDF_SIZE_16BYTES           16
    254 
    255 #define LDNS_NSEC3_VARS_OPTOUT_MASK 0x01
    256 
    257 #define LDNS_APL_IP4            1
    258 #define LDNS_APL_IP6            2
    259 #define LDNS_APL_MASK           0x7f
    260 #define LDNS_APL_NEGATION       0x80
    261 
    262 /**
    263  * The different types of RDATA fields.
    264  */
    265 enum sldns_enum_rdf_type
    266 {
    267 	/** none */
    268 	LDNS_RDF_TYPE_NONE,
    269 	/** domain name */
    270 	LDNS_RDF_TYPE_DNAME,
    271 	/** 8 bits */
    272 	LDNS_RDF_TYPE_INT8,
    273 	/** 16 bits */
    274 	LDNS_RDF_TYPE_INT16,
    275 	/** 32 bits */
    276 	LDNS_RDF_TYPE_INT32,
    277 	/** A record */
    278 	LDNS_RDF_TYPE_A,
    279 	/** AAAA record */
    280 	LDNS_RDF_TYPE_AAAA,
    281 	/** txt string */
    282 	LDNS_RDF_TYPE_STR,
    283 	/** apl data */
    284 	LDNS_RDF_TYPE_APL,
    285 	/** b32 string */
    286 	LDNS_RDF_TYPE_B32_EXT,
    287 	/** b64 string */
    288 	LDNS_RDF_TYPE_B64,
    289 	/** hex string */
    290 	LDNS_RDF_TYPE_HEX,
    291 	/** nsec type codes */
    292 	LDNS_RDF_TYPE_NSEC,
    293 	/** a RR type */
    294 	LDNS_RDF_TYPE_TYPE,
    295 	/** a class */
    296 	LDNS_RDF_TYPE_CLASS,
    297 	/** certificate algorithm */
    298 	LDNS_RDF_TYPE_CERT_ALG,
    299 	/** a key algorithm */
    300         LDNS_RDF_TYPE_ALG,
    301         /** unknown types */
    302         LDNS_RDF_TYPE_UNKNOWN,
    303         /** time (32 bits) */
    304         LDNS_RDF_TYPE_TIME,
    305         /** period */
    306         LDNS_RDF_TYPE_PERIOD,
    307         /** tsig time 48 bits */
    308         LDNS_RDF_TYPE_TSIGTIME,
    309 	/** Represents the Public Key Algorithm, HIT and Public Key fields
    310 	    for the HIP RR types.  A HIP specific rdf type is used because of
    311 	    the unusual layout in wireformat (see RFC 5205 Section 5) */
    312 	LDNS_RDF_TYPE_HIP,
    313         /** variable length any type rdata where the length
    314             is specified by the first 2 bytes */
    315         LDNS_RDF_TYPE_INT16_DATA,
    316         /** protocol and port bitmaps */
    317         LDNS_RDF_TYPE_SERVICE,
    318         /** location data */
    319         LDNS_RDF_TYPE_LOC,
    320         /** well known services */
    321         LDNS_RDF_TYPE_WKS,
    322         /** NSAP */
    323         LDNS_RDF_TYPE_NSAP,
    324         /** ATMA */
    325         LDNS_RDF_TYPE_ATMA,
    326         /** IPSECKEY */
    327         LDNS_RDF_TYPE_IPSECKEY,
    328         /** nsec3 hash salt */
    329         LDNS_RDF_TYPE_NSEC3_SALT,
    330         /** nsec3 base32 string (with length byte on wire */
    331         LDNS_RDF_TYPE_NSEC3_NEXT_OWNER,
    332 
    333         /** 4 shorts represented as 4 * 16 bit hex numbers
    334          *  separated by colons. For NID and L64.
    335          */
    336         LDNS_RDF_TYPE_ILNP64,
    337 
    338         /** 6 * 8 bit hex numbers separated by dashes. For EUI48. */
    339         LDNS_RDF_TYPE_EUI48,
    340         /** 8 * 8 bit hex numbers separated by dashes. For EUI64. */
    341         LDNS_RDF_TYPE_EUI64,
    342 
    343         /** A non-zero sequence of US-ASCII letters and numbers in lower case.
    344          *  For CAA.
    345          */
    346         LDNS_RDF_TYPE_TAG,
    347 
    348         /** A <character-string> encoding of the value field as specified
    349          * [RFC1035], Section 5.1., encoded as remaining rdata.
    350          * For CAA, URI.
    351          */
    352         LDNS_RDF_TYPE_LONG_STR,
    353 
    354 	/** TSIG extended 16bit error value */
    355 	LDNS_RDF_TYPE_TSIGERROR,
    356 
    357         /* Aliases */
    358         LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC
    359 };
    360 typedef enum sldns_enum_rdf_type sldns_rdf_type;
    361 
    362 /**
    363  * Algorithms used in dns
    364  */
    365 enum sldns_enum_algorithm
    366 {
    367         LDNS_RSAMD5             = 1,   /* RFC 4034,4035 */
    368         LDNS_DH                 = 2,
    369         LDNS_DSA                = 3,
    370         LDNS_ECC                = 4,
    371         LDNS_RSASHA1            = 5,
    372         LDNS_DSA_NSEC3          = 6,
    373         LDNS_RSASHA1_NSEC3      = 7,
    374         LDNS_RSASHA256          = 8,   /* RFC 5702 */
    375         LDNS_RSASHA512          = 10,  /* RFC 5702 */
    376         LDNS_ECC_GOST           = 12,  /* RFC 5933 */
    377         LDNS_ECDSAP256SHA256    = 13,  /* RFC 6605 */
    378         LDNS_ECDSAP384SHA384    = 14,  /* RFC 6605 */
    379 	LDNS_ED25519		= 15,  /* RFC 8080 */
    380 	LDNS_ED448		= 16,  /* RFC 8080 */
    381         LDNS_INDIRECT           = 252,
    382         LDNS_PRIVATEDNS         = 253,
    383         LDNS_PRIVATEOID         = 254
    384 };
    385 typedef enum sldns_enum_algorithm sldns_algorithm;
    386 
    387 /**
    388  * Hashing algorithms used in the DS record
    389  */
    390 enum sldns_enum_hash
    391 {
    392         LDNS_SHA1               = 1,  /* RFC 4034 */
    393         LDNS_SHA256             = 2,  /* RFC 4509 */
    394         LDNS_HASH_GOST          = 3,  /* RFC 5933 */
    395         LDNS_SHA384             = 4   /* RFC 6605 */
    396 };
    397 typedef enum sldns_enum_hash sldns_hash;
    398 
    399 /**
    400  * algorithms used in CERT rrs
    401  */
    402 enum sldns_enum_cert_algorithm
    403 {
    404         LDNS_CERT_PKIX          = 1,
    405         LDNS_CERT_SPKI          = 2,
    406         LDNS_CERT_PGP           = 3,
    407         LDNS_CERT_IPKIX         = 4,
    408         LDNS_CERT_ISPKI         = 5,
    409         LDNS_CERT_IPGP          = 6,
    410         LDNS_CERT_ACPKIX        = 7,
    411         LDNS_CERT_IACPKIX       = 8,
    412         LDNS_CERT_URI           = 253,
    413         LDNS_CERT_OID           = 254
    414 };
    415 typedef enum sldns_enum_cert_algorithm sldns_cert_algorithm;
    416 
    417 /**
    418  * EDNS option codes
    419  */
    420 enum sldns_enum_edns_option
    421 {
    422 	LDNS_EDNS_LLQ = 1, /* http://files.dns-sd.org/draft-sekar-dns-llq.txt */
    423 	LDNS_EDNS_UL = 2, /* http://files.dns-sd.org/draft-sekar-dns-ul.txt */
    424 	LDNS_EDNS_NSID = 3, /* RFC5001 */
    425 	/* 4 draft-cheshire-edns0-owner-option */
    426 	LDNS_EDNS_DAU = 5, /* RFC6975 */
    427 	LDNS_EDNS_DHU = 6, /* RFC6975 */
    428 	LDNS_EDNS_N3U = 7, /* RFC6975 */
    429 	LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */
    430 	LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/
    431 	LDNS_EDNS_PADDING = 12 /* RFC7830 */
    432 };
    433 typedef enum sldns_enum_edns_option sldns_edns_option;
    434 
    435 #define LDNS_EDNS_MASK_DO_BIT 0x8000
    436 
    437 /** TSIG and TKEY extended rcodes (16bit), 0-15 are the normal rcodes. */
    438 #define LDNS_TSIG_ERROR_NOERROR  0
    439 #define LDNS_TSIG_ERROR_BADSIG   16
    440 #define LDNS_TSIG_ERROR_BADKEY   17
    441 #define LDNS_TSIG_ERROR_BADTIME  18
    442 #define LDNS_TSIG_ERROR_BADMODE  19
    443 #define LDNS_TSIG_ERROR_BADNAME  20
    444 #define LDNS_TSIG_ERROR_BADALG   21
    445 
    446 /**
    447  * Contains all information about resource record types.
    448  *
    449  * This structure contains, for all rr types, the rdata fields that are defined.
    450  */
    451 struct sldns_struct_rr_descriptor
    452 {
    453 	/** Type of the RR that is described here */
    454 	sldns_rr_type    _type;
    455 	/** Textual name of the RR type.  */
    456 	const char *_name;
    457 	/** Minimum number of rdata fields in the RRs of this type.  */
    458 	uint8_t     _minimum;
    459 	/** Maximum number of rdata fields in the RRs of this type.  */
    460 	uint8_t     _maximum;
    461 	/** Wireformat specification for the rr, i.e. the types of rdata fields in their respective order. */
    462 	const sldns_rdf_type *_wireformat;
    463 	/** Special rdf types */
    464 	sldns_rdf_type _variable;
    465 	/** Specifies whether compression can be used for dnames in this RR type. */
    466 	sldns_rr_compress _compress;
    467 	/** The number of DNAMEs in the _wireformat string, for parsing. */
    468 	uint8_t _dname_count;
    469 };
    470 typedef struct sldns_struct_rr_descriptor sldns_rr_descriptor;
    471 
    472 /**
    473  * returns the resource record descriptor for the given rr type.
    474  *
    475  * \param[in] type the type value of the rr type
    476  *\return the sldns_rr_descriptor for this type
    477  */
    478 const sldns_rr_descriptor *sldns_rr_descript(uint16_t type);
    479 
    480 /**
    481  * returns the minimum number of rdata fields of the rr type this descriptor describes.
    482  *
    483  * \param[in]  descriptor for an rr type
    484  * \return the minimum number of rdata fields
    485  */
    486 size_t sldns_rr_descriptor_minimum(const sldns_rr_descriptor *descriptor);
    487 
    488 /**
    489  * returns the maximum number of rdata fields of the rr type this descriptor describes.
    490  *
    491  * \param[in]  descriptor for an rr type
    492  * \return the maximum number of rdata fields
    493  */
    494 size_t sldns_rr_descriptor_maximum(const sldns_rr_descriptor *descriptor);
    495 
    496 /**
    497  * returns the rdf type for the given rdata field number of the rr type for the given descriptor.
    498  *
    499  * \param[in] descriptor for an rr type
    500  * \param[in] field the field number
    501  * \return the rdf type for the field
    502  */
    503 sldns_rdf_type sldns_rr_descriptor_field_type(const sldns_rr_descriptor *descriptor, size_t field);
    504 
    505 /**
    506  * retrieves a rrtype by looking up its name.
    507  * \param[in] name a string with the name
    508  * \return the type which corresponds with the name
    509  */
    510 sldns_rr_type sldns_get_rr_type_by_name(const char *name);
    511 
    512 /**
    513  * retrieves a class by looking up its name.
    514  * \param[in] name string with the name
    515  * \return the cass which corresponds with the name
    516  */
    517 sldns_rr_class sldns_get_rr_class_by_name(const char *name);
    518 
    519 #ifdef __cplusplus
    520 }
    521 #endif
    522 
    523 #endif /* LDNS_RRDEF_H */
    524