1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
4 #include "gnunet-vpn-helper-p.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;
45 unsigned spt:16 GNUNET_PACKED;
46 unsigned dpt:16 GNUNET_PACKED;
47 unsigned seq:32 GNUNET_PACKED;
48 unsigned ack:32 GNUNET_PACKED;
49 unsigned off:4 GNUNET_PACKED;
50 unsigned rsv:4 GNUNET_PACKED;
51 unsigned flg:8 GNUNET_PACKED;
52 unsigned wsz:16 GNUNET_PACKED;
53 unsigned crc:16 GNUNET_PACKED;
54 unsigned urg:16 GNUNET_PACKED;
58 unsigned spt:16 GNUNET_PACKED;
59 unsigned dpt:16 GNUNET_PACKED;
60 unsigned len:16 GNUNET_PACKED;
61 unsigned crc:16 GNUNET_PACKED;
65 unsigned type:8 GNUNET_PACKED;
66 unsigned code:8 GNUNET_PACKED;
67 unsigned chks:16 GNUNET_PACKED;
72 unsigned short id GNUNET_PACKED;
74 unsigned rd:1 GNUNET_PACKED; // recursion desired (client -> server)
75 unsigned tc:1 GNUNET_PACKED; // message is truncated
76 unsigned aa:1 GNUNET_PACKED; // authoritative answer
77 unsigned op:4 GNUNET_PACKED; // query:0, inverse q.:1, status: 2
78 unsigned qr:1 GNUNET_PACKED; // query:0, response:1
80 unsigned rcode:4 GNUNET_PACKED; // 0 No error
86 unsigned z:3 GNUNET_PACKED; // reserved
87 unsigned ra:1 GNUNET_PACKED; // recursion available (server -> client)
89 unsigned short qdcount GNUNET_PACKED; // number of questions
90 unsigned short ancount GNUNET_PACKED; // number of answers
91 unsigned short nscount GNUNET_PACKED; // number of authority-records
92 unsigned short arcount GNUNET_PACKED; // number of additional records
97 unsigned char data[1];
100 struct dns_pkt_parsed {
102 struct dns_query** queries;
103 struct dns_record** answers;
104 struct dns_record** nameservers;
105 struct dns_record** additional;
108 struct dns_query_line {
110 unsigned short class;
115 unsigned char namelen;
116 unsigned short qtype;
117 unsigned short qclass;
120 struct dns_record_line {
122 unsigned short class;
124 unsigned short data_len;
130 unsigned char namelen;
132 unsigned short class;
134 unsigned short data_len;
139 struct udp_pkt udp_hdr;
145 struct GNUNET_MessageHeader shdr;
150 struct GNUNET_MessageHeader shdr;
152 struct ip6_hdr ip6_hdr;
153 unsigned char data[1];
157 struct GNUNET_MessageHeader shdr;
159 struct ip6_hdr ip6_hdr;
160 struct tcp_pkt tcp_hdr;
161 unsigned char data[1];
165 struct GNUNET_MessageHeader shdr;
167 struct ip6_hdr ip6_hdr;
168 struct icmp_hdr icmp_hdr;
172 struct GNUNET_MessageHeader shdr;
174 struct ip6_hdr ip6_hdr;
175 struct udp_pkt udp_hdr;
176 unsigned char data[1];
180 struct GNUNET_MessageHeader shdr;
182 struct ip6_hdr ip6_hdr;
183 struct udp_dns udp_dns;
187 struct GNUNET_MessageHeader shdr;
189 struct ip_hdr ip_hdr;
190 unsigned char data[1];
194 struct GNUNET_MessageHeader shdr;
196 struct ip_hdr ip_hdr;
197 struct udp_pkt udp_hdr;
198 unsigned char data[1];
201 struct GNUNET_MessageHeader shdr;
203 struct ip_hdr ip_hdr;
204 struct udp_dns udp_dns;