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