fix
[oweals/gnunet.git] / src / vpn / gnunet-vpn-packet.h
index 7bda6ab8497cc2f28d71252450c373270a5ad1d3..3df33a3f1ed0cacf3508a40328ecca13d9b155a3 100644 (file)
@@ -22,8 +22,9 @@ struct ip6_hdr {
 };
 
 struct ip_hdr {
-       unsigned version:4 GNUNET_PACKED;
        unsigned hdr_lngth:4 GNUNET_PACKED;
+       unsigned version:4 GNUNET_PACKED;
+
        unsigned diff_serv:8 GNUNET_PACKED;
        unsigned tot_lngth:16 GNUNET_PACKED;
 
@@ -60,7 +61,7 @@ struct udp_pkt {
 };
 
 // DNS-Stuff
-struct dns_pkt {
+struct dns_static {
        unsigned short id GNUNET_PACKED;
 
        unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
@@ -82,17 +83,31 @@ struct dns_pkt {
        unsigned short ancount GNUNET_PACKED; // number of answers
        unsigned short nscount GNUNET_PACKED; // number of authority-records
        unsigned short arcount GNUNET_PACKED; // number of additional records
+};
+
+struct dns_pkt {
+       struct dns_static s;
        unsigned char data[1];
 };
 
+struct dns_pkt_parsed {
+       struct dns_static s;
+       struct dns_query** queries;
+       struct dns_record** answers;
+       struct dns_record** nameservers;
+       struct dns_record** additional;
+};
+
 struct dns_query {
-       unsigned char* name;
+       char* name;
+       unsigned char namelen;
        unsigned short qtype;
        unsigned short qclass;
 };
 
 struct dns_record {
-       unsigned char* name;
+       char* name;
+       unsigned char namelen;
        unsigned short type;
        unsigned short class;
        unsigned int ttl;
@@ -100,7 +115,17 @@ struct dns_record {
        unsigned char* data;
 };
 
+struct udp_dns {
+       struct udp_pkt udp_hdr;
+       struct dns_pkt data;
+};
+
 // Complete Packets
+struct tun_pkt {
+       struct GNUNET_MessageHeader shdr;
+       struct pkt_tun tun;
+};
+
 struct ip6_pkt {
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
@@ -128,8 +153,7 @@ struct ip6_udp_dns {
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
        struct ip6_hdr ip6_hdr;
-       struct udp_pkt udp_hdr;
-       struct dns_pkt data;
+       struct udp_dns udp_dns;
 };
 
 struct ip_pkt {
@@ -146,12 +170,11 @@ struct ip_udp {
        struct udp_pkt udp_hdr;
        unsigned char data[1];
 };
-
 struct ip_udp_dns {
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
        struct ip_hdr ip_hdr;
-       struct udp_pkt udp_hdr;
-       struct dns_pkt data;
+       struct udp_dns udp_dns;
 };
+
 #endif