]> git.meshlink.io Git - catta/blob - rr.h
add code for recieving packets
[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 };
17
18 enum {
19     FLX_DNS_CLASS_IN = 0x01
20 };
21
22 #define FLX_DEFAULT_TTL (120*60)
23
24 typedef struct {
25     guint ref;
26     gchar *name;
27     guint16 class;
28     guint16 type;
29 } flxKey;
30
31 typedef struct  {
32     guint ref;
33     flxKey *key;
34     
35     gpointer data;
36     guint16 size;
37     guint32 ttl;
38 } flxRecord;
39
40 flxKey *flx_key_new(const gchar *name, guint16 class, guint16 type);
41 flxKey *flx_key_ref(flxKey *k);
42 void flx_key_unref(flxKey *k);
43
44 gboolean flx_key_equal(const flxKey *a, const flxKey *b);
45 guint flx_key_hash(const flxKey *k);
46
47 flxRecord *flx_record_new(flxKey *k, gconstpointer data, guint16 size, guint32 ttl);
48 flxRecord *flx_record_new_full(const gchar *name, guint16 class, guint16 type, gconstpointer data, guint16 size, guint32 ttl);
49 flxRecord *flx_record_ref(flxRecord *r);
50 void flx_record_unref(flxRecord *r);
51
52 const gchar *flxdns_class_to_string(guint16 class);
53 const gchar *flx_dns_type_to_string(guint16 type);
54
55 gchar *flx_key_to_string(flxKey *k); /* g_free() the result! */
56 gchar *flx_record_to_string(flxRecord *r);  /* g_free() the result! */
57
58 #endif