]> git.meshlink.io Git - catta/blob - flx.h
initial commit
[catta] / flx.h
1 #ifndef fooflxhfoo
2 #define fooflxhfoo
3
4 #include <stdio.h>
5 #include <glib.h>
6
7 struct _flxServer;
8 typedef struct _flxServer flxServer;
9
10 typedef struct  {
11     gchar *name;
12     guint16 type;
13     guint16 class;
14     gpointer data;
15     guint16 size;
16     guint32 ttl;
17 } flxRecord;
18
19 typedef struct {
20     gchar *name;
21     guint16 type;
22     guint16 class;
23 } flxQuery;
24
25 flxServer *flx_server_new(GMainContext *c);
26 void flx_server_free(flxServer* s);
27
28 gint flx_server_get_next_id(flxServer *s);
29
30 void flx_server_add_rr(flxServer *s, gint id, gint interface, const flxRecord *rr);
31 void flx_server_add(flxServer *s, gint id, const gchar *name, gint interface, guint16 type, gconstpointer data, guint size);
32
33 void flx_server_remove(flxServer *s, gint id);
34
35 const flxRecord *flx_server_iterate(flxServer *s, gint id, void **state);
36
37 flxRecord *flx_record_copy_normalize(flxRecord *ret_dest, const flxRecord*src);
38
39 void flx_server_dump(flxServer *s, FILE *f);
40
41 struct _flxLocalAddrSource;
42 typedef struct _flxLocalAddrSource flxLocalAddrSource;
43
44 flxLocalAddrSource *flx_local_addr_source_new(flxServer *s);
45 void flx_local_addr_source_free(flxLocalAddrSource *l);
46
47 #define FLX_DNS_TYPE_A 0x01
48 #define FLX_DNS_TYPE_AAAA 0x1C
49 #define FLX_DNS_TYPE_PTR 0x0C
50 #define FLX_DNS_TYPE_HINFO 0x0D
51 #define FLX_DNS_TYPE_CNAME 0x05
52 #define FLX_DNS_TYPE_NS 0x02
53 #define FLX_DNS_TYPE_SOA 0x06
54 #define FLX_DNS_TYPE_MX 0x0F
55 #define FLX_DNS_TYPE_TXT 0x10
56
57 #define FLX_DNS_CLASS_IN 0x01
58
59 #define FLX_DEFAULT_TTL (120*60)
60
61 #endif