aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Tölke <toelke@in.tum.de>2010-06-28 12:37:47 +0000
committerPhilipp Tölke <toelke@in.tum.de>2010-06-28 12:37:47 +0000
commit70996f5b1a1aff74d0a650cff571bd45d5ee02c5 (patch)
treedd070602c57e95ae654df391930513dca260b020
parentcca5525b019ac335bd39a8727d1fb92807b0e319 (diff)
downloadgnunet-70996f5b1a1aff74d0a650cff571bd45d5ee02c5.tar.gz
gnunet-70996f5b1a1aff74d0a650cff571bd45d5ee02c5.zip
vpn: Packet-Structure for udp and dns over ipv6
-rw-r--r--src/vpn/packet.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/vpn/packet.h b/src/vpn/packet.h
index fa3c8f38c..84169b531 100644
--- a/src/vpn/packet.h
+++ b/src/vpn/packet.h
@@ -31,6 +31,36 @@ struct tcp_pkt {
31 unsigned char data[1]; 31 unsigned char data[1];
32}; 32};
33 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 id:16;
43 unsigned qr:1; // query:0, response:1
44 unsigned op:4; // query:0, inverse q.:1, status: 2
45 unsigned aa:1; // authoritative answer
46 unsigned tc:1; // message is truncated
47 unsigned rd:1; // recursion desired (client -> server)
48 unsigned ra:1; // recursion available (server -> client)
49 unsigned z:2; // reserved
50 unsigned a:1; // answer is signed by server
51 unsigned rcode:4; // 0 No error
52 // 1 Format error
53 // 2 Server failure
54 // 3 Name Error
55 // 4 Not Implemented
56 // 5 Refused
57 unsigned qdcount:16; // number of questions
58 unsigned ancount:16; // number of answers
59 unsigned nscount:16; // number of authority-records
60 unsigned arcount:16; // number of additional records
61 unsigned char data[1];
62}
63
34struct ip6_pkt { 64struct ip6_pkt {
35 struct pkt_tun tun; 65 struct pkt_tun tun;
36 struct ip6_hdr hdr; 66 struct ip6_hdr hdr;
@@ -43,6 +73,12 @@ struct ip6_tcp {
43 struct tcp_pkt data; 73 struct tcp_pkt data;
44}; 74};
45 75
76struct ip6_udp {
77 struct pkt_tun tun;
78 struct ip6_hdr hdr;
79 struct udp_pkt data;
80};
81
46extern void send_pkt(int fd, struct ip6_pkt* pkt); 82extern void send_pkt(int fd, struct ip6_pkt* pkt);
47extern int recv_ipv6pkt(int fd, struct pkt_tun** pkt); 83extern int recv_ipv6pkt(int fd, struct pkt_tun** pkt);
48extern int recv_pkt(int fd, struct pkt_tun** pkt); 84extern int recv_pkt(int fd, struct pkt_tun** pkt);