2 * Copyright (c) 2006-2009 Bjorn Andersson <flex@kryo.se>, Erik Ekman <yarrick@kryo.se>
\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
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
17 #ifndef __FIX_WINDOWS_H__
\r
18 #define __FIX_WINDOWS_H__
\r
20 typedef unsigned int in_addr_t;
\r
22 #include <windows.h>
\r
24 #include <winsock2.h>
\r
25 #include <ws2tcpip.h>
\r
26 #include <iphlpapi.h>
\r
28 /* Missing from the mingw headers */
\r
29 #ifndef DNS_TYPE_SRV
\r
30 # define DNS_TYPE_SRV 33
\r
32 #ifndef DNS_TYPE_TXT
\r
33 # define DNS_TYPE_TXT 16
\r
36 #define T_A DNS_TYPE_A
\r
37 #define T_NS DNS_TYPE_NS
\r
38 #define T_NULL DNS_TYPE_NULL
\r
39 #define T_CNAME DNS_TYPE_CNAME
\r
40 #define T_MX DNS_TYPE_MX
\r
41 #define T_TXT DNS_TYPE_TXT
\r
42 #define T_SRV DNS_TYPE_SRV
\r
52 #define sleep(seconds) Sleep((seconds)*1000)
\r
55 unsigned id :16; /* query identification number */
\r
56 /* fields in third byte */
\r
57 unsigned rd :1; /* recursion desired */
\r
58 unsigned tc :1; /* truncated message */
\r
59 unsigned aa :1; /* authoritive answer */
\r
60 unsigned opcode :4; /* purpose of message */
\r
61 unsigned qr :1; /* response flag */
\r
62 /* fields in fourth byte */
\r
63 unsigned rcode :4; /* response code */
\r
64 unsigned cd: 1; /* checking disabled by resolver */
\r
65 unsigned ad: 1; /* authentic data from named */
\r
66 unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
\r
67 unsigned ra :1; /* recursion available */
\r
68 /* remaining bytes */
\r
69 unsigned qdcount :16; /* number of question entries */
\r
70 unsigned ancount :16; /* number of answer entries */
\r
71 unsigned nscount :16; /* number of authority entries */
\r
72 unsigned arcount :16; /* number of resource entries */
\r
77 unsigned int ip_hl:4; /* header length */
\r
78 unsigned int ip_v:4; /* version */
\r
79 u_char ip_tos; /* type of service */
\r
80 u_short ip_len; /* total length */
\r
81 u_short ip_id; /* identification */
\r
82 u_short ip_off; /* fragment offset field */
\r
83 #define IP_RF 0x8000 /* reserved fragment flag */
\r
84 #define IP_DF 0x4000 /* dont fragment flag */
\r
85 #define IP_MF 0x2000 /* more fragments flag */
\r
86 #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
\r
87 u_char ip_ttl; /* time to live */
\r
88 u_char ip_p; /* protocol */
\r
89 u_short ip_sum; /* checksum */
\r
90 struct in_addr ip_src, ip_dst; /* source and dest address */
\r
93 DWORD WINAPI tun_reader(LPVOID arg);
\r
97 struct sockaddr_in addr;
\r