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