10 FLX_DNS_TYPE_A = 0x01,
11 FLX_DNS_TYPE_NS = 0x02,
12 FLX_DNS_TYPE_CNAME = 0x05,
13 FLX_DNS_TYPE_SOA = 0x06,
14 FLX_DNS_TYPE_PTR = 0x0C,
15 FLX_DNS_TYPE_HINFO = 0x0D,
16 FLX_DNS_TYPE_MX = 0x0F,
17 FLX_DNS_TYPE_TXT = 0x10,
18 FLX_DNS_TYPE_AAAA = 0x1C,
19 FLX_DNS_TYPE_SRV = 0x21,
20 FLX_DNS_TYPE_ANY = 0xFF
24 FLX_DNS_CLASS_IN = 0x01,
25 FLX_DNS_CACHE_FLUSH = 0x8000
28 #define FLX_DEFAULT_TTL (120*60)
58 } ptr; /* and cname */
66 flxStringList *string_list;
70 flxIPv4Address address;
74 flxIPv6Address address;
81 flxKey *flx_key_new(const gchar *name, guint16 class, guint16 type);
82 flxKey *flx_key_ref(flxKey *k);
83 void flx_key_unref(flxKey *k);
85 gboolean flx_key_equal(const flxKey *a, const flxKey *b); /* Treat FLX_DNS_CLASS_ANY like any other type */
86 gboolean flx_key_pattern_match(const flxKey *pattern, const flxKey *k); /* If pattern.type is FLX_DNS_CLASS_ANY, k.type is ignored */
88 gboolean flx_key_is_pattern(const flxKey *k);
90 guint flx_key_hash(const flxKey *k);
92 flxRecord *flx_record_new(flxKey *k);
93 flxRecord *flx_record_new_full(const gchar *name, guint16 class, guint16 type);
94 flxRecord *flx_record_ref(flxRecord *r);
95 void flx_record_unref(flxRecord *r);
97 const gchar *flx_dns_class_to_string(guint16 class);
98 const gchar *flx_dns_type_to_string(guint16 type);
100 gchar *flx_key_to_string(const flxKey *k); /* g_free() the result! */
101 gchar *flx_record_to_string(const flxRecord *r); /* g_free() the result! */
103 gboolean flx_record_equal_no_ttl(const flxRecord *a, const flxRecord *b);
105 flxRecord *flx_record_copy(flxRecord *r);
107 /* returns a maximum estimate for the space that is needed to store
108 * this key in a DNS packet */
109 guint flx_key_get_estimate_size(flxKey *k);
112 guint flx_record_get_estimate_size(flxRecord *r);