1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
5 #include "gnunet_common.h"
9 unsigned flags:16 GNUNET_PACKED;
10 unsigned type:16 GNUNET_PACKED;
14 unsigned tclass_h:4 GNUNET_PACKED;
15 unsigned version:4 GNUNET_PACKED;
16 unsigned tclass_l:4 GNUNET_PACKED;
17 unsigned flowlbl:20 GNUNET_PACKED;
18 unsigned paylgth:16 GNUNET_PACKED;
19 unsigned nxthdr:8 GNUNET_PACKED;
20 unsigned hoplmt:8 GNUNET_PACKED;
21 unsigned char sadr[16];
22 unsigned char dadr[16];
26 unsigned hdr_lngth:4 GNUNET_PACKED;
27 unsigned version:4 GNUNET_PACKED;
29 unsigned diff_serv:8 GNUNET_PACKED;
30 unsigned tot_lngth:16 GNUNET_PACKED;
32 unsigned ident:16 GNUNET_PACKED;
33 unsigned flags:3 GNUNET_PACKED;
34 unsigned frag_off:13 GNUNET_PACKED;
36 unsigned ttl:8 GNUNET_PACKED;
37 unsigned proto:8 GNUNET_PACKED;
38 unsigned chks:16 GNUNET_PACKED;
40 unsigned sadr:32 GNUNET_PACKED;
41 unsigned dadr:32 GNUNET_PACKED;
44 #define TCP_FLAG_SYN 2
47 unsigned spt:16 GNUNET_PACKED;
48 unsigned dpt:16 GNUNET_PACKED;
49 unsigned seq:32 GNUNET_PACKED;
50 unsigned ack:32 GNUNET_PACKED;
51 unsigned off:4 GNUNET_PACKED;
52 unsigned rsv:4 GNUNET_PACKED;
53 unsigned flg:8 GNUNET_PACKED;
54 unsigned wsz:16 GNUNET_PACKED;
55 unsigned crc:16 GNUNET_PACKED;
56 unsigned urg:16 GNUNET_PACKED;
60 unsigned spt:16 GNUNET_PACKED;
61 unsigned dpt:16 GNUNET_PACKED;
62 unsigned len:16 GNUNET_PACKED;
63 unsigned crc:16 GNUNET_PACKED;
67 unsigned type:8 GNUNET_PACKED;
68 unsigned code:8 GNUNET_PACKED;
69 unsigned chks:16 GNUNET_PACKED;
74 uint16_t id GNUNET_PACKED;
76 unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
77 unsigned tc:1 GNUNET_PACKED; // message is truncated
78 unsigned aa:1 GNUNET_PACKED; // authoritative answer
79 unsigned op:4 GNUNET_PACKED; // query:0, inverse q.:1, status: 2
80 unsigned qr:1 GNUNET_PACKED; // query:0, response:1
82 unsigned rcode:4 GNUNET_PACKED; // 0 No error
88 unsigned z:3 GNUNET_PACKED; // reserved
89 unsigned ra:1 GNUNET_PACKED; // recursion available (server -> client)
91 uint16_t qdcount GNUNET_PACKED; // number of questions
92 uint16_t ancount GNUNET_PACKED; // number of answers
93 uint16_t nscount GNUNET_PACKED; // number of authority-records
94 uint16_t arcount GNUNET_PACKED; // number of additional records
99 unsigned char data[1];
102 struct dns_pkt_parsed {
104 struct dns_query** queries;
105 struct dns_record** answers;
106 struct dns_record** nameservers;
107 struct dns_record** additional;
110 struct dns_query_line {
112 unsigned short class;
117 unsigned char namelen;
118 unsigned short qtype;
119 unsigned short qclass;
122 struct dns_record_line {
124 unsigned short class;
126 unsigned short data_len;
132 unsigned char namelen;
134 unsigned short class;
136 unsigned short data_len;
141 struct udp_pkt udp_hdr;
147 struct GNUNET_MessageHeader shdr;
152 struct GNUNET_MessageHeader shdr;
154 struct ip6_hdr ip6_hdr;
155 unsigned char data[1];
159 struct GNUNET_MessageHeader shdr;
161 struct ip6_hdr ip6_hdr;
162 struct tcp_pkt tcp_hdr;
163 unsigned char data[1];
167 struct GNUNET_MessageHeader shdr;
169 struct ip6_hdr ip6_hdr;
170 struct icmp_hdr icmp_hdr;
174 struct GNUNET_MessageHeader shdr;
176 struct ip6_hdr ip6_hdr;
177 struct udp_pkt udp_hdr;
178 unsigned char data[1];
182 struct GNUNET_MessageHeader shdr;
184 struct ip6_hdr ip6_hdr;
185 struct udp_dns udp_dns;
189 struct GNUNET_MessageHeader shdr;
191 struct ip_hdr ip_hdr;
192 unsigned char data[1];
196 struct GNUNET_MessageHeader shdr;
198 struct ip_hdr ip_hdr;
199 struct udp_pkt udp_hdr;
200 unsigned char data[1];
204 struct GNUNET_MessageHeader shdr;
206 struct ip_hdr ip_hdr;
207 struct udp_dns udp_dns;
211 struct GNUNET_MessageHeader shdr;
213 struct ip_hdr ip_hdr;
214 struct tcp_pkt tcp_hdr;
215 unsigned char data[1];
219 struct GNUNET_MessageHeader shdr;
221 struct ip_hdr ip_hdr;
222 struct icmp_hdr icmp_hdr;