enum {
DNS_CLASS_IN = 0x01,
DNS_CLASS_ANY = 0xFF,
+ _DNS_CLASS_MAX,
+ _DNS_CLASS_INVALID = -1
};
/* DNS record types, see RFC 1035 */
DNS_TYPE_MX = 0x0F,
DNS_TYPE_TXT = 0x10,
DNS_TYPE_AAAA = 0x1C,
+ DNS_TYPE_LOC = 0x1D,
DNS_TYPE_SRV = 0x21,
DNS_TYPE_DNAME = 0x27,
DNS_TYPE_SSHFP = 0x2C,
+ DNS_TYPE_SPF = 0x63,
+
/* Special records */
DNS_TYPE_ANY = 0xFF,
DNS_TYPE_OPT = 0x29, /* EDNS0 option */
DNS_TYPE_TSIG = 0xFA,
DNS_TYPE_IXFR = 0xFB,
DNS_TYPE_AXFR = 0xFC,
+ _DNS_TYPE_MAX,
+ _DNS_TYPE_INVALID = -1
};
struct DnsResourceKey {
unsigned n_ref;
DnsResourceKey *key;
uint32_t ttl;
+ bool unparseable;
union {
struct {
void *data;
struct {
char *name;
- } ptr, ns, cname;
+ } ptr, ns, cname, dname;
struct {
char *cpu;
char *os;
} hinfo;
- /* struct { */
- /* char **list; */
- /* } txt; */
+ struct {
+ char **strings;
+ } txt, spf;
struct {
struct in_addr in_addr;
uint32_t expire;
uint32_t minimum;
} soa;
+
+ struct {
+ uint16_t priority;
+ char *exchange;
+ } mx;
+
+ struct {
+ uint8_t version;
+ uint8_t size;
+ uint8_t horiz_pre;
+ uint8_t vert_pre;
+ uint32_t latitude;
+ uint32_t longitude;
+ uint32_t altitude;
+ } loc;
};
};