]> git.meshlink.io Git - catta/blob - flx.h
419ab86efe5af22c3ccf81d45983388a354be7b2
[catta] / flx.h
1 #ifndef fooflxhfoo
2 #define fooflxhfoo
3
4 #include <stdio.h>
5 #include <glib.h>
6
7 #include "address.h"
8
9 struct _flxServer;
10 typedef struct _flxServer flxServer;
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
36 void flx_server_remove(flxServer *s, gint id);
37
38 const flxRecord *flx_server_iterate(flxServer *s, gint id, void **state);
39
40 flxRecord *flx_record_copy_normalize(flxRecord *ret_dest, const flxRecord*src);
41
42 void flx_server_dump(flxServer *s, FILE *f);
43
44 struct _flxLocalAddrSource;
45 typedef struct _flxLocalAddrSource flxLocalAddrSource;
46
47 flxLocalAddrSource *flx_local_addr_source_new(flxServer *s);
48 void flx_local_addr_source_free(flxLocalAddrSource *l);
49
50 enum {
51     FLX_DNS_TYPE_A = 0x01,
52     FLX_DNS_TYPE_NS = 0x02,
53     FLX_DNS_TYPE_CNAME = 0x05,
54     FLX_DNS_TYPE_SOA = 0x06,
55     FLX_DNS_TYPE_PTR = 0x0C,
56     FLX_DNS_TYPE_HINFO = 0x0D,
57     FLX_DNS_TYPE_MX = 0x0F,
58     FLX_DNS_TYPE_TXT = 0x10,
59     FLX_DNS_TYPE_AAAA = 0x1C,
60 };
61
62 enum {
63     FLX_DNS_CLASS_IN = 0x01
64 };
65
66 #define FLX_DEFAULT_TTL (120*60)
67
68 #endif