1 #ifndef WDNS_RECORD_DESCR_H
2 #define WDNS_RECORD_DESCR_H
3 
4 #include <stdint.h>
5 
6 typedef enum {
7 	class_un,	/* not class specific */
8 	class_in	/* Internet class */
9 } record_class;
10 
11 typedef enum {
12 	rdf_unknown,	/* marker for unpopulated entries */
13 	rdf_bytes,	/* byte array (terminal) */
14 	rdf_bytes_b64,	/* byte array (terminal) (base64 encoded presentation) */
15 	rdf_bytes_str,	/* byte array (terminal) (string representation) */
16 	rdf_name,	/* series of labels terminated by zero-length label, possibly compressed */
17 	rdf_uname,	/* series of labels terminated by zero-length label, NOT compressed */
18 	rdf_int8,	/* 8 bit integer */
19 	rdf_int16,	/* 16 bit integer */
20 	rdf_int32,	/* 32 bit integer */
21 	rdf_ipv4,	/* IPv4 host address */
22 	rdf_ipv6,	/* IPv6 host address */
23 	rdf_ipv6prefix,	/* IPv6 prefix: length octet followed by 0-16 octets */
24 	rdf_eui48,	/* EUI-48 address */
25 	rdf_eui64,	/* EUI-64 address */
26 	rdf_string,	/* length octet followed by that many octets */
27 	rdf_repstring,	/* one or more strings (terminal) */
28 	rdf_rrtype,	/* resource record type */
29 	rdf_type_bitmap,/* rr type bitmap */
30 	rdf_salt,	/* length-prefixed salt value (hex presentation) */
31 	rdf_hash,	/* length-prefixed hash value (base32 presentation) */
32 	rdf_end		/* sentinel (terminal) */
33 } rdf_type;
34 
35 typedef struct {
36 	uint16_t	record_class;
37 	uint8_t		types[10];
38 } record_descr;
39 
40 extern const record_descr	record_descr_array[];
41 extern const size_t		record_descr_len;
42 
43 #endif /* WDNS_RECORD_DESCR_H */
44