]> git.meshlink.io Git - catta/blob - rr.h
* add todo list
[catta] / rr.h
1 #ifndef foorrhfoo
2 #define foorrhfoo
3
4 #include <glib.h>
5
6 enum {
7     FLX_DNS_TYPE_A = 0x01,
8     FLX_DNS_TYPE_NS = 0x02,
9     FLX_DNS_TYPE_CNAME = 0x05,
10     FLX_DNS_TYPE_SOA = 0x06,
11     FLX_DNS_TYPE_PTR = 0x0C,
12     FLX_DNS_TYPE_HINFO = 0x0D,
13     FLX_DNS_TYPE_MX = 0x0F,
14     FLX_DNS_TYPE_TXT = 0x10,
15     FLX_DNS_TYPE_AAAA = 0x1C,
16     FLX_DNS_TYPE_SRV = 0x21
17 };
18
19 enum {
20     FLX_DNS_CLASS_IN = 0x01
21 };
22
23 #define FLX_DEFAULT_TTL (120*60)
24
25 typedef struct {
26     guint ref;
27     gchar *name;
28     guint16 class;
29     guint16 type;
30 } flxKey;
31
32 typedef struct  {
33     guint ref;
34     flxKey *key;
35     
36     gpointer data;
37     guint16 size;
38     guint32 ttl;
39 } flxRecord;
40
41 flxKey *flx_key_new(const gchar *name, guint16 class, guint16 type);
42 flxKey *flx_key_ref(flxKey *k);
43 void flx_key_unref(flxKey *k);
44
45 gboolean flx_key_equal(const flxKey *a, const flxKey *b);
46 guint flx_key_hash(const flxKey *k);
47
48 flxRecord *flx_record_new(flxKey *k, gconstpointer data, guint16 size, guint32 ttl);
49 flxRecord *flx_record_new_full(const gchar *name, guint16 class, guint16 type, gconstpointer data, guint16 size, guint32 ttl);
50 flxRecord *flx_record_ref(flxRecord *r);
51 void flx_record_unref(flxRecord *r);
52
53 const gchar *flx_dns_class_to_string(guint16 class);
54 const gchar *flx_dns_type_to_string(guint16 type);
55
56 gchar *flx_key_to_string(flxKey *k); /* g_free() the result! */
57 gchar *flx_record_to_string(flxRecord *r);  /* g_free() the result! */
58
59 gboolean flx_record_equal_no_ttl(const flxRecord *a, const flxRecord *b);
60
61 #endif