1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
4 #include "gnunet_common.h"
8 unsigned flags:16 GNUNET_PACKED;
9 unsigned type:16 GNUNET_PACKED;
13 unsigned tclass_h:4 GNUNET_PACKED;
14 unsigned version:4 GNUNET_PACKED;
15 unsigned tclass_l:4 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];
25 unsigned hdr_lngth:4 GNUNET_PACKED;
26 unsigned version:4 GNUNET_PACKED;
28 unsigned diff_serv:8 GNUNET_PACKED;
29 unsigned tot_lngth:16 GNUNET_PACKED;
31 unsigned ident:16 GNUNET_PACKED;
32 unsigned flags:3 GNUNET_PACKED;
33 unsigned frag_off:13 GNUNET_PACKED;
35 unsigned ttl:8 GNUNET_PACKED;
36 unsigned proto:8 GNUNET_PACKED;
37 unsigned chks:16 GNUNET_PACKED;
39 unsigned sadr:32 GNUNET_PACKED;
40 unsigned dadr:32 GNUNET_PACKED;
44 unsigned spt:16 GNUNET_PACKED;
45 unsigned dpt:16 GNUNET_PACKED;
46 unsigned seq:32 GNUNET_PACKED;
47 unsigned ack:32 GNUNET_PACKED;
48 unsigned off:4 GNUNET_PACKED;
49 unsigned rsv:4 GNUNET_PACKED;
50 unsigned flg:8 GNUNET_PACKED;
51 unsigned wsz:16 GNUNET_PACKED;
52 unsigned crc:16 GNUNET_PACKED;
53 unsigned urg:16 GNUNET_PACKED;
57 unsigned spt:16 GNUNET_PACKED;
58 unsigned dpt:16 GNUNET_PACKED;
59 unsigned len:16 GNUNET_PACKED;
60 unsigned crc:16 GNUNET_PACKED;
64 unsigned type:8 GNUNET_PACKED;
65 unsigned code:8 GNUNET_PACKED;
66 unsigned chks:16 GNUNET_PACKED;
71 unsigned short id GNUNET_PACKED;
73 unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
74 unsigned tc:1 GNUNET_PACKED; // message is truncated
75 unsigned aa:1 GNUNET_PACKED; // authoritative answer
76 unsigned op:4 GNUNET_PACKED; // query:0, inverse q.:1, status: 2
77 unsigned qr:1 GNUNET_PACKED; // query:0, response:1
79 unsigned rcode:4 GNUNET_PACKED; // 0 No error
85 unsigned z:3 GNUNET_PACKED; // reserved
86 unsigned ra:1 GNUNET_PACKED; // recursion available (server -> client)
88 unsigned short qdcount GNUNET_PACKED; // number of questions
89 unsigned short ancount GNUNET_PACKED; // number of answers
90 unsigned short nscount GNUNET_PACKED; // number of authority-records
91 unsigned short arcount GNUNET_PACKED; // number of additional records
96 unsigned char data[1];
99 struct dns_pkt_parsed {
101 struct dns_query** queries;
102 struct dns_record** answers;
103 struct dns_record** nameservers;
104 struct dns_record** additional;
107 struct dns_query_line {
109 unsigned short class;
114 unsigned char namelen;
115 unsigned short qtype;
116 unsigned short qclass;
119 struct dns_record_line {
121 unsigned short class;
123 unsigned short data_len;
129 unsigned char namelen;
131 unsigned short class;
133 unsigned short data_len;
138 struct udp_pkt udp_hdr;
144 struct GNUNET_MessageHeader shdr;
149 struct GNUNET_MessageHeader shdr;
151 struct ip6_hdr ip6_hdr;
152 unsigned char data[1];
156 struct GNUNET_MessageHeader shdr;
158 struct ip6_hdr ip6_hdr;
159 struct tcp_pkt tcp_hdr;
160 unsigned char data[1];
164 struct GNUNET_MessageHeader shdr;
166 struct ip6_hdr ip6_hdr;
167 struct icmp_hdr icmp_hdr;
171 struct GNUNET_MessageHeader shdr;
173 struct ip6_hdr ip6_hdr;
174 struct udp_pkt udp_hdr;
175 unsigned char data[1];
179 struct GNUNET_MessageHeader shdr;
181 struct ip6_hdr ip6_hdr;
182 struct udp_dns udp_dns;
186 struct GNUNET_MessageHeader shdr;
188 struct ip_hdr ip_hdr;
189 unsigned char data[1];
193 struct GNUNET_MessageHeader shdr;
195 struct ip_hdr ip_hdr;
196 struct udp_pkt udp_hdr;
197 unsigned char data[1];
200 struct GNUNET_MessageHeader shdr;
202 struct ip_hdr ip_hdr;
203 struct udp_dns udp_dns;