aboutsummaryrefslogtreecommitdiffstats
path: root/libglouglou/libglouglou.h
diff options
context:
space:
mode:
Diffstat (limited to 'libglouglou/libglouglou.h')
-rw-r--r--libglouglou/libglouglou.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/libglouglou/libglouglou.h b/libglouglou/libglouglou.h
new file mode 100644
index 0000000..62d601c
--- /dev/null
+++ b/libglouglou/libglouglou.h
@@ -0,0 +1,50 @@
+#define PACKET_VERSION 1
+#define DNSNAME_MAX 20
+
+struct packet {
+ u_int8_t ver;
+ u_int8_t type;
+/* XXX nicer way for _SIZE ... ? */
+#define PACKET_NEWCONN 0
+#define PACKET_NEWCONN_SIZE (2 + sizeof((struct packet *)0)->pdat.newconn)
+#define PACKET_DELCONN 1
+#define PACKET_DELCONN_SIZE (2 + sizeof((struct packet *)0)->pdat.delconn)
+#define PACKET_DATA 2
+#define PACKET_DATA_SIZE (2 + sizeof((struct packet *)0)->pdat.data)
+#define PACKET_NAME 3
+#define PACKET_NAME_SIZE ((2 + sizeof((struct packet *)0)->pdat.name) - DNSNAME_MAX)
+
+ union {
+ struct newconn {
+ u_int16_t id;
+ u_int32_t src;
+ u_int32_t dst;
+ u_int8_t proto;
+ u_int8_t size;
+ } newconn;
+ struct delconn {
+ u_int16_t id;
+ } delconn;
+ struct data {
+ u_int16_t connid;
+ u_int8_t size;
+ } data;
+ struct name {
+ u_int32_t addr;
+ u_int8_t len;
+ u_char fqdn[DNSNAME_MAX];
+ } name;
+ } pdat;
+#define newconn_id pdat.newconn.id
+#define newconn_src pdat.newconn.src
+#define newconn_dst pdat.newconn.dst
+#define newconn_proto pdat.newconn.proto
+#define newconn_size pdat.newconn.size
+#define delconn_id pdat.delconn.id
+#define data_connid pdat.data.connid
+#define data_size pdat.data.size
+#define name_addr pdat.name.addr
+#define name_len pdat.name.len
+#define name_fqdn pdat.name.fqdn
+};
+