fixed the #includes
[oweals/gnunet.git] / src / vpn / gnunet-vpn-packet.h
1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
3
4 #include "gnunet-vpn-helper-p.h"
5 #include "gnunet_common.h"
6
7 // Headers
8 struct pkt_tun {
9         unsigned flags:16 GNUNET_PACKED;
10         unsigned type:16 GNUNET_PACKED;
11 };
12
13 struct ip6_hdr {
14         unsigned version:4 GNUNET_PACKED;
15         unsigned tclass:8 GNUNET_PACKED;
16         unsigned flowlbl:20 GNUNET_PACKED;
17         unsigned paylgth:16 GNUNET_PACKED;
18         unsigned nxthdr:8 GNUNET_PACKED;
19         unsigned hoplmt:8 GNUNET_PACKED;
20         unsigned char sadr[16];
21         unsigned char dadr[16];
22 };
23
24 struct ip_hdr {
25         unsigned version:4 GNUNET_PACKED;
26         unsigned hdr_lngth:4 GNUNET_PACKED;
27         unsigned diff_serv:8 GNUNET_PACKED;
28         unsigned tot_lngth:16 GNUNET_PACKED;
29
30         unsigned ident:16 GNUNET_PACKED;
31         unsigned flags:3 GNUNET_PACKED;
32         unsigned frag_off:13 GNUNET_PACKED;
33
34         unsigned ttl:8 GNUNET_PACKED;
35         unsigned proto:8 GNUNET_PACKED;
36         unsigned chks:16 GNUNET_PACKED;
37
38         unsigned sadr:32 GNUNET_PACKED;
39         unsigned dadr:32 GNUNET_PACKED;
40 };
41
42 struct tcp_pkt {
43         unsigned spt:16 GNUNET_PACKED;
44         unsigned dpt:16 GNUNET_PACKED;
45         unsigned seq:32 GNUNET_PACKED;
46         unsigned ack:32 GNUNET_PACKED;
47         unsigned off:4 GNUNET_PACKED;
48         unsigned rsv:4 GNUNET_PACKED;
49         unsigned flg:8 GNUNET_PACKED;
50         unsigned wsz:16 GNUNET_PACKED;
51         unsigned crc:16 GNUNET_PACKED;
52         unsigned urg:16 GNUNET_PACKED;
53 };
54
55 struct udp_pkt {
56         unsigned spt:16 GNUNET_PACKED;
57         unsigned dpt:16 GNUNET_PACKED;
58         unsigned len:16 GNUNET_PACKED;
59         unsigned crc:16 GNUNET_PACKED;
60 };
61
62 // DNS-Stuff
63 struct dns_pkt {
64         unsigned short id GNUNET_PACKED;
65
66         unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
67         unsigned tc:1 GNUNET_PACKED; // message is truncated
68         unsigned aa:1 GNUNET_PACKED; // authoritative answer
69         unsigned op:4 GNUNET_PACKED; // query:0, inverse q.:1, status: 2
70         unsigned qr:1 GNUNET_PACKED; // query:0, response:1
71
72         unsigned rcode:4 GNUNET_PACKED; // 0 No error
73                           // 1 Format error
74                           // 2 Server failure
75                           // 3 Name Error
76                           // 4 Not Implemented
77                           // 5 Refused
78         unsigned z:3 GNUNET_PACKED;  // reserved
79         unsigned ra:1 GNUNET_PACKED; // recursion available (server -> client)
80
81         unsigned short qdcount GNUNET_PACKED; // number of questions
82         unsigned short ancount GNUNET_PACKED; // number of answers
83         unsigned short nscount GNUNET_PACKED; // number of authority-records
84         unsigned short arcount GNUNET_PACKED; // number of additional records
85         unsigned char data[1];
86 };
87
88 struct dns_query {
89         unsigned char* name;
90         unsigned short qtype;
91         unsigned short qclass;
92 };
93
94 struct dns_record {
95         unsigned char* name;
96         unsigned short type;
97         unsigned short class;
98         unsigned int ttl;
99         unsigned short data_len;
100         unsigned char* data;
101 };
102
103 struct udp_dns {
104         struct udp_pkt udp_hdr;
105         struct dns_pkt data;
106 };
107
108 // Complete Packets
109 struct tun_pkt {
110         struct GNUNET_MessageHeader shdr;
111         struct pkt_tun tun;
112 };
113
114 struct ip6_pkt {
115         struct GNUNET_MessageHeader shdr;
116         struct pkt_tun tun;
117         struct ip6_hdr ip6_hdr;
118         unsigned char data[1];
119 };
120
121 struct ip6_tcp {
122         struct GNUNET_MessageHeader shdr;
123         struct pkt_tun tun;
124         struct ip6_hdr ip6_hdr;
125         struct tcp_pkt tcp_hdr;
126         unsigned char data[1];
127 };
128
129 struct ip6_udp {
130         struct GNUNET_MessageHeader shdr;
131         struct pkt_tun tun;
132         struct ip6_hdr ip6_hdr;
133         struct udp_pkt udp_hdr;
134         unsigned char data[1];
135 };
136
137 struct ip6_udp_dns {
138         struct GNUNET_MessageHeader shdr;
139         struct pkt_tun tun;
140         struct ip6_hdr ip6_hdr;
141         struct udp_dns udp_dns;
142 };
143
144 struct ip_pkt {
145         struct GNUNET_MessageHeader shdr;
146         struct pkt_tun tun;
147         struct ip_hdr ip_hdr;
148         unsigned char data[1];
149 };
150
151 struct ip_udp {
152         struct GNUNET_MessageHeader shdr;
153         struct pkt_tun tun;
154         struct ip_hdr ip_hdr;
155         struct udp_pkt udp_hdr;
156         unsigned char data[1];
157 };
158 struct ip_udp_dns {
159         struct GNUNET_MessageHeader shdr;
160         struct pkt_tun tun;
161         struct ip_hdr ip_hdr;
162         struct udp_dns udp_dns;
163 };
164
165 #endif