aboutsummaryrefslogtreecommitdiff
path: root/src/vpn/gnunet-vpn-packet.h
diff options
context:
space:
mode:
authorPhilipp Tölke <toelke@in.tum.de>2010-07-20 08:17:12 +0000
committerPhilipp Tölke <toelke@in.tum.de>2010-07-20 08:17:12 +0000
commita6e1023d634f732e986176fcfa304c65239e0e50 (patch)
tree17aab068c73fa24aede63d39b4e26f2d24458368 /src/vpn/gnunet-vpn-packet.h
parent003525498eea3350f03573eb0552de60f745e44f (diff)
downloadgnunet-a6e1023d634f732e986176fcfa304c65239e0e50.tar.gz
gnunet-a6e1023d634f732e986176fcfa304c65239e0e50.zip
Rename files to fit into the convention
Diffstat (limited to 'src/vpn/gnunet-vpn-packet.h')
-rw-r--r--src/vpn/gnunet-vpn-packet.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/vpn/gnunet-vpn-packet.h b/src/vpn/gnunet-vpn-packet.h
new file mode 100644
index 000000000..c19e7a101
--- /dev/null
+++ b/src/vpn/gnunet-vpn-packet.h
@@ -0,0 +1,114 @@
1#ifndef _GNTUN_PACKET_H_
2#define _GNTUN_PACKET_H_
3
4struct pkt_tun {
5 unsigned flags:16;
6 unsigned type:16;
7};
8
9struct ip6_hdr {
10 unsigned version:4;
11 unsigned tclass:8;
12 unsigned flowlbl:20;
13 unsigned paylgth:16;
14 unsigned nxthdr:8;
15 unsigned hoplmt:8;
16 unsigned char sadr[16];
17 unsigned char dadr[16];
18};
19
20struct tcp_pkt {
21 unsigned spt:16;
22 unsigned dpt:16;
23 unsigned seq:32;
24 unsigned ack:32;
25 unsigned off:4;
26 unsigned rsv:4;
27 unsigned flg:8;
28 unsigned wsz:16;
29 unsigned crc:16;
30 unsigned urg:16;
31 unsigned char data[1];
32};
33
34struct udp_pkt {
35 unsigned spt:16;
36 unsigned dpt:16;
37 unsigned len:16;
38 unsigned crc:16;
39};
40
41struct dns_pkt {
42 unsigned short id;
43
44 unsigned rd:1; // recursion desired (client -> server)
45 unsigned tc:1; // message is truncated
46 unsigned aa:1; // authoritative answer
47 unsigned op:4; // query:0, inverse q.:1, status: 2
48 unsigned qr:1; // query:0, response:1
49
50 unsigned rcode:4; // 0 No error
51 // 1 Format error
52 // 2 Server failure
53 // 3 Name Error
54 // 4 Not Implemented
55 // 5 Refused
56 unsigned z:3; // reserved
57 unsigned ra:1; // recursion available (server -> client)
58
59 unsigned short qdcount; // number of questions
60 unsigned short ancount; // number of answers
61 unsigned short nscount; // number of authority-records
62 unsigned short arcount; // number of additional records
63 unsigned char data[1];
64};
65
66struct dns_query {
67 unsigned char* name;
68 unsigned short qtype;
69 unsigned short qclass;
70};
71
72struct dns_record {
73 unsigned char* name;
74 unsigned short type;
75 unsigned short class;
76 unsigned int ttl;
77 unsigned short data_len;
78 unsigned char* data;
79};
80
81struct ip6_pkt {
82 struct pkt_tun tun;
83 struct ip6_hdr hdr;
84 unsigned char data[1];
85};
86
87struct ip6_tcp {
88 struct pkt_tun tun;
89 struct ip6_hdr hdr;
90 struct tcp_pkt data;
91};
92
93struct ip6_udp {
94 struct pkt_tun tun;
95 struct ip6_hdr hdr;
96 struct udp_pkt data;
97};
98
99void send_pkt(int fd, struct ip6_pkt* pkt);
100int recv_ipv6pkt(int fd, struct pkt_tun** pkt);
101int recv_pkt(int fd, struct pkt_tun** pkt);
102struct ip6_pkt* parse_ip6(struct pkt_tun* pkt);
103
104struct ip6_udp_dns {
105 struct ip6_udp hdr;
106 struct dns_pkt data;
107};
108
109struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt*);
110struct ip6_udp* parse_ip6_udp(struct ip6_pkt*);
111
112short payload(struct ip6_hdr* pkt);
113
114#endif