]> git.meshlink.io Git - catta/blob - flx.h
dad707e7bf1ea27d147ff893610f06f7d8b32e4b
[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 #include "address.h"
11
12 typedef struct  {
13     gchar *name;
14     guint16 type;
15     guint16 class;
16     gpointer data;
17     guint16 size;
18     guint32 ttl;
19 } flxRecord;
20
21 typedef struct {
22     gchar *name;
23     guint16 type;
24     guint16 class;
25 } flxQuery;
26
27 flxServer *flx_server_new(GMainContext *c);
28 void flx_server_free(flxServer* s);
29
30 gint flx_server_get_next_id(flxServer *s);
31
32 void flx_server_add_rr(flxServer *s, gint id, gint interface, guchar protocol, const flxRecord *rr);
33 void flx_server_add(flxServer *s, gint id, gint interface, guchar protocol, const gchar *name, guint16 type, gconstpointer data, guint size);
34 void flx_server_add_address(flxServer *s, gint id, gint interface, guchar protocol, const gchar *name, flxAddress *a);
35 void flx_server_add_text(flxServer *s, gint id, gint interface, guchar protocol, const gchar *name, const gchar *text);
36
37 void flx_server_remove(flxServer *s, gint id);
38
39 const flxRecord *flx_server_iterate(flxServer *s, gint id, void **state);
40
41 flxRecord *flx_record_copy_normalize(flxRecord *ret_dest, const flxRecord*src);
42
43 void flx_server_dump(flxServer *s, FILE *f);
44
45 struct _flxLocalAddrSource;
46 typedef struct _flxLocalAddrSource flxLocalAddrSource;
47
48 enum {
49     FLX_DNS_TYPE_A = 0x01,
50     FLX_DNS_TYPE_NS = 0x02,
51     FLX_DNS_TYPE_CNAME = 0x05,
52     FLX_DNS_TYPE_SOA = 0x06,
53     FLX_DNS_TYPE_PTR = 0x0C,
54     FLX_DNS_TYPE_HINFO = 0x0D,
55     FLX_DNS_TYPE_MX = 0x0F,
56     FLX_DNS_TYPE_TXT = 0x10,
57     FLX_DNS_TYPE_AAAA = 0x1C,
58 };
59
60 enum {
61     FLX_DNS_CLASS_IN = 0x01
62 };
63
64 #define FLX_DEFAULT_TTL (120*60)
65
66 #endif