1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
5 #include "gnunet_common.h"
10 unsigned flags:16 GNUNET_PACKED;
11 unsigned type:16 GNUNET_PACKED;
16 unsigned tclass_h:4 GNUNET_PACKED;
17 unsigned version:4 GNUNET_PACKED;
18 unsigned tclass_l:4 GNUNET_PACKED;
19 unsigned flowlbl:20 GNUNET_PACKED;
20 unsigned paylgth:16 GNUNET_PACKED;
21 unsigned nxthdr:8 GNUNET_PACKED;
22 unsigned hoplmt:8 GNUNET_PACKED;
23 unsigned char sadr[16];
24 unsigned char dadr[16];
29 unsigned hdr_lngth:4 GNUNET_PACKED;
30 unsigned version:4 GNUNET_PACKED;
32 unsigned diff_serv:8 GNUNET_PACKED;
33 unsigned tot_lngth:16 GNUNET_PACKED;
35 unsigned ident:16 GNUNET_PACKED;
36 unsigned flags:3 GNUNET_PACKED;
37 unsigned frag_off:13 GNUNET_PACKED;
39 unsigned ttl:8 GNUNET_PACKED;
40 unsigned proto:8 GNUNET_PACKED;
41 unsigned chks:16 GNUNET_PACKED;
43 unsigned sadr:32 GNUNET_PACKED;
44 unsigned dadr:32 GNUNET_PACKED;
47 #define TCP_FLAG_SYN 2
51 unsigned spt:16 GNUNET_PACKED;
52 unsigned dpt:16 GNUNET_PACKED;
53 unsigned seq:32 GNUNET_PACKED;
54 unsigned ack:32 GNUNET_PACKED;
55 unsigned off:4 GNUNET_PACKED;
56 unsigned rsv:4 GNUNET_PACKED;
57 unsigned flg:8 GNUNET_PACKED;
58 unsigned wsz:16 GNUNET_PACKED;
59 unsigned crc:16 GNUNET_PACKED;
60 unsigned urg:16 GNUNET_PACKED;
65 unsigned spt:16 GNUNET_PACKED;
66 unsigned dpt:16 GNUNET_PACKED;
67 unsigned len:16 GNUNET_PACKED;
68 unsigned crc:16 GNUNET_PACKED;
73 unsigned type:8 GNUNET_PACKED;
74 unsigned code:8 GNUNET_PACKED;
75 unsigned chks:16 GNUNET_PACKED;
81 uint16_t id GNUNET_PACKED;
83 unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
84 unsigned tc:1 GNUNET_PACKED; // message is truncated
85 unsigned aa:1 GNUNET_PACKED; // authoritative answer
86 unsigned op:4 GNUNET_PACKED; // query:0, inverse q.:1, status: 2
87 unsigned qr:1 GNUNET_PACKED; // query:0, response:1
89 unsigned rcode:4 GNUNET_PACKED; // 0 No error
95 unsigned z:3 GNUNET_PACKED; // reserved
96 unsigned ra:1 GNUNET_PACKED; // recursion available (server -> client)
98 uint16_t qdcount GNUNET_PACKED; // number of questions
99 uint16_t ancount GNUNET_PACKED; // number of answers
100 uint16_t nscount GNUNET_PACKED; // number of authority-records
101 uint16_t arcount GNUNET_PACKED; // number of additional records
107 unsigned char data[1];
110 struct dns_pkt_parsed
113 struct dns_query **queries;
114 struct dns_record **answers;
115 struct dns_record **nameservers;
116 struct dns_record **additional;
119 struct dns_query_line
122 unsigned short class;
128 unsigned char namelen;
129 unsigned short qtype;
130 unsigned short qclass;
133 struct dns_record_line
136 unsigned short class;
138 unsigned short data_len;
145 unsigned char namelen;
147 unsigned short class;
149 unsigned short data_len;
155 struct udp_pkt udp_hdr;
162 struct GNUNET_MessageHeader shdr;
168 struct GNUNET_MessageHeader shdr;
170 struct ip6_hdr ip6_hdr;
171 unsigned char data[1];
176 struct GNUNET_MessageHeader shdr;
178 struct ip6_hdr ip6_hdr;
179 struct tcp_pkt tcp_hdr;
180 unsigned char data[1];
185 struct GNUNET_MessageHeader shdr;
187 struct ip6_hdr ip6_hdr;
188 struct icmp_hdr icmp_hdr;
193 struct GNUNET_MessageHeader shdr;
195 struct ip6_hdr ip6_hdr;
196 struct udp_pkt udp_hdr;
197 unsigned char data[1];
202 struct GNUNET_MessageHeader shdr;
204 struct ip6_hdr ip6_hdr;
205 struct udp_dns udp_dns;
210 struct GNUNET_MessageHeader shdr;
212 struct ip_hdr ip_hdr;
213 unsigned char data[1];
218 struct GNUNET_MessageHeader shdr;
220 struct ip_hdr ip_hdr;
221 struct udp_pkt udp_hdr;
222 unsigned char data[1];
227 struct GNUNET_MessageHeader shdr;
229 struct ip_hdr ip_hdr;
230 struct udp_dns udp_dns;
235 struct GNUNET_MessageHeader shdr;
237 struct ip_hdr ip_hdr;
238 struct tcp_pkt tcp_hdr;
239 unsigned char data[1];
244 struct GNUNET_MessageHeader shdr;
246 struct ip_hdr ip_hdr;
247 struct icmp_hdr icmp_hdr;