vpn: cleanup of the code
[oweals/gnunet.git] / src / vpn / packet.h
1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
3
4 struct pkt_tun {
5         unsigned flags:16;
6         unsigned type:16;
7 };
8
9 struct 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
20 struct 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
34 struct ip6_pkt {
35         struct pkt_tun tun;
36         struct ip6_hdr hdr;
37         unsigned char data[1];
38 };
39
40 struct ip6_tcp {
41         struct pkt_tun tun;
42         struct ip6_hdr hdr;
43         struct tcp_pkt data;
44 };
45
46 extern void send_pkt(int fd, struct ip6_pkt* pkt);
47 extern int recv_ipv6pkt(int fd, struct pkt_tun** pkt);
48 extern int recv_pkt(int fd, struct pkt_tun** pkt);
49 extern struct ip6_pkt* parse_ip6(struct pkt_tun* pkt);
50
51 extern struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt*);
52
53 extern short payload(struct ip6_hdr* pkt);
54
55 #endif