]> git.meshlink.io Git - catta/blob - flx.h
* add support for both ipv4 AND ipv6 reverse lookups
[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, const flxRecord *rr);
33 void flx_server_add(flxServer *s, gint id, gint interface, const gchar *name, guint16 type, gconstpointer data, guint size);
34 void flx_server_add_address(flxServer *s, gint id, gint interface, 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 #define FLX_DNS_TYPE_A 0x01
51 #define FLX_DNS_TYPE_AAAA 0x1C
52 #define FLX_DNS_TYPE_PTR 0x0C
53 #define FLX_DNS_TYPE_HINFO 0x0D
54 #define FLX_DNS_TYPE_CNAME 0x05
55 #define FLX_DNS_TYPE_NS 0x02
56 #define FLX_DNS_TYPE_SOA 0x06
57 #define FLX_DNS_TYPE_MX 0x0F
58 #define FLX_DNS_TYPE_TXT 0x10
59
60 #define FLX_DNS_CLASS_IN 0x01
61
62 #define FLX_DEFAULT_TTL (120*60)
63
64 #endif