[svn-upgrade] Integrating new upstream version, iodine (0.5.1)
[debian/iodine.git] / src / windows.h
1 /*\r
2  * Copyright (c) 2006-2009 Bjorn Andersson <flex@kryo.se>, Erik Ekman <yarrick@kryo.se>\r
3  *\r
4  * Permission to use, copy, modify, and distribute this software for any\r
5  * purpose with or without fee is hereby granted, provided that the above\r
6  * copyright notice and this permission notice appear in all copies.\r
7  *\r
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r
15  */\r
16 \r
17 #ifndef __FIX_WINDOWS_H__\r
18 #define __FIX_WINDOWS_H__\r
19 \r
20 typedef unsigned int in_addr_t;\r
21 \r
22 #include <windows.h>\r
23 #include <windns.h>\r
24 #include <winsock2.h>\r
25 #include <ws2tcpip.h>\r
26 #include <iphlpapi.h>\r
27 \r
28 #define T_A DNS_TYPE_A\r
29 #define T_NS DNS_TYPE_NS\r
30 #define T_NULL DNS_TYPE_NULL\r
31 \r
32 #define C_IN 1\r
33 \r
34 #define SERVFAIL 2\r
35 #define NXDOMAIN 3\r
36 #define NOTIMP 4\r
37 #define REFUSED 5\r
38 \r
39 typedef struct {\r
40         unsigned        id :16;         /* query identification number */\r
41                         /* fields in third byte */\r
42         unsigned        rd :1;          /* recursion desired */\r
43         unsigned        tc :1;          /* truncated message */\r
44         unsigned        aa :1;          /* authoritive answer */\r
45         unsigned        opcode :4;      /* purpose of message */\r
46         unsigned        qr :1;          /* response flag */\r
47                         /* fields in fourth byte */\r
48         unsigned        rcode :4;       /* response code */\r
49         unsigned        cd: 1;          /* checking disabled by resolver */\r
50         unsigned        ad: 1;          /* authentic data from named */\r
51         unsigned        unused :1;      /* unused bits (MBZ as of 4.9.3a3) */\r
52         unsigned        ra :1;          /* recursion available */\r
53                         /* remaining bytes */\r
54         unsigned        qdcount :16;    /* number of question entries */\r
55         unsigned        ancount :16;    /* number of answer entries */\r
56         unsigned        nscount :16;    /* number of authority entries */\r
57         unsigned        arcount :16;    /* number of resource entries */\r
58 } HEADER;\r
59 \r
60 struct ip\r
61   {\r
62     unsigned int ip_hl:4;               /* header length */\r
63     unsigned int ip_v:4;                /* version */\r
64     u_char ip_tos;                      /* type of service */\r
65     u_short ip_len;                     /* total length */\r
66     u_short ip_id;                      /* identification */\r
67     u_short ip_off;                     /* fragment offset field */\r
68 #define IP_RF 0x8000                    /* reserved fragment flag */\r
69 #define IP_DF 0x4000                    /* dont fragment flag */\r
70 #define IP_MF 0x2000                    /* more fragments flag */\r
71 #define IP_OFFMASK 0x1fff               /* mask for fragmenting bits */\r
72     u_char ip_ttl;                      /* time to live */\r
73     u_char ip_p;                        /* protocol */\r
74     u_short ip_sum;                     /* checksum */\r
75     struct in_addr ip_src, ip_dst;      /* source and dest address */\r
76   };\r
77 \r
78 DWORD WINAPI tun_reader(LPVOID arg);\r
79 struct tun_data {\r
80         HANDLE tun;\r
81         int sock;\r
82         struct sockaddr_in addr;\r
83 };\r
84 \r
85 #endif\r