Initial import
[olsrd.git] / README-WIN32.txt
1
2                         UniK OLSR for Windows
3                         ---------------------
4
5 Welcome to the first Windows release. Let's have a quick look at how
6 this version is different from the original Linux version.
7
8                         ***** Stability *****
9
10   While the Windows version looks pretty stable in basic scenarios, it
11   hasn't yet received the extensive testing by the OLSR community that
12   the Linux version has gone through. So, if you experience any
13   strange behaviour, it's probably my fault. In this case please bear
14   with me and send me a bug report via the OLSR-users mailing
15   list. I'll then do my best to find and fix the problem with your
16   assistance.
17
18                     ***** Configuration file *****
19
20   If you do not specify a configuration file, the OLSR server by
21   default attempts to use "olsrd.conf" in your Windows directory,
22   e.g. "C:\WINDOWS\olsrd.conf".
23
24                      ***** Interface naming *****
25
26   On Linux network interfaces have nice names like "eth0". In
27   contrast, Windows internally identifies network interfaces by pretty
28   awkward names, for example:
29
30     "{EECD2AB6-C2FC-4826-B92E-CAA53B29D67C}"
31
32   Hence, the Windows version implements its own naming scheme that
33   maps each internal name to a made-up name like "if03", which is
34   easier to memorize. Simply invoke the OLSR executable as follows to
35   obtain the OLSR server's view of your interfaces:
36
37     olsrd.exe -int
38
39   This lists the made-up interface names along with their current IP
40   addresses to enable you to find out which made-up interface name
41   belongs to which of your physical interfaces.
42
43   For techies: The made-up names consist of the string "if" followed
44   by a two-digit hex representation of the least significant byte of
45   the Windows-internal interface index, which should be different for
46   each interface and thus make each made-up name unique. Again, this
47   is undocumented and this assumption may be wrong in certain
48   cases. So, if the "-int" option reports two interfaces that have the
49   same name, please do let me know.
50
51                      ***** Running the GUI *****
52
53   The GUI is a GTK+ application and thus requires the GTK+ runtime
54   environment to work. The Windows port of GTK+ is available from the
55   following URL:
56
57     http://www.gimp.org/~tml/gimp/win32/downloads.html
58
59   You need to download the following packages or newer versions of
60   these packages:
61
62     - atk-1.6.0.zip
63     - gettext-runtime-0.13.1.zip
64     - glib-2.4.5.zip
65     - gtk+-2.4.7.zip
66     - libiconv-1.9.1.bin.woe32.zip
67     - pango-1.4.1.zip
68
69   Simply unzip the files into a directory that you've created,
70   e.g. into "GUI". Then copy the "olsrd-gui.exe" file into the "bin"
71   subdirectory, e.g. into "GUI\bin", and run it from there.
72
73                      ***** Missing features *****
74
75   The Windows version currently does not implement the following
76   features known from the Linux release.
77
78     * IPv6. This will probably be in version 0.4.7.
79
80     * Link layer statistics.
81
82     * WLAN interface detection. The Windows port does not recognize
83       whether an interface is a WLAN interface or a wired LAN
84       interface.  All specified interfaces are assumed to be WLAN
85       interfaces. So, for example, specifying a different HELLO
86       interval for wired interfaces does not currently work. Instead,
87       the HELLO interval for WLAN interfaces is always used.
88
89     * Gateway tunnelling. This is currently experimental on
90       Windows. It is intended to work reliably on Windows 2000 and
91       Windows XP in version 0.4.7. It is based on the ipinip.sys
92       device driver that comes with these operating systems, but which
93       is completely undocumented. I've figured out how to use the
94       device driver, but it looks like I've still missed one or two
95       little things. So, tunnelling might work on your OS version, but
96       it might as well not work. Unfortunately, currently I do not
97       even know why it works on some systems and fails on other
98       systems.
99
100       If you are brave, do the following, but be prepared for a BSOD
101       (blue screen of death) as a worst-case scenario. This is nothing
102       for the faint of the heart. :-) Never try this on production
103       systems.
104
105         * Start the IP-in-IP tunnel driver before running the OLSR
106           server:
107
108             net start ipinip
109
110         * When the OLSR server reports that the tunnel has been
111           established, find out, which interface index the tunnel
112           device has been assigned:
113
114             route print
115
116         * Let's assume that the interface index is 0x1234 and the
117           gateway's IP address is 1.2.3.4. Manually add a default
118           route through the other end of the tunnel:
119
120             route add 0.0.0.0 mask 0.0.0.0 1.2.3.4 if 0x1234
121
122         * Try to ping somebody beyond the gateway and let me know
123           whether it works. If it doesn't and if you have time, please
124           do a packet dump for me to determine whether IP-in-IP
125           packets are leaving your system and, if yes, what they look
126           like.
127
128       If you know of any freely available tunnel driver for Windows,
129       please let me know. We could then think about switching from the
130       native ipinip.sys driver to an alternative driver, perhaps one
131       that also works on Windows 9x.
132
133       If you are the Microsoft person that is responsible for the
134       tunnel driver, please have a look at my code in
135       src/win32/tunnel.* and tell me what I'm missing.
136
137     * Multiple interfaces in the same subnet. As they all share the
138       same subnet broadcast address, there's no way to tell Windows
139       which of these interfaces to send OLSR packets through. I guess
140       that we'll have to come up with a device driver that sits
141       between the TCP/IP stack and the network adapters and that
142       directs outbound OLSR packets to the correct interface after
143       they've been routed by the TCP/IP stack. Looks like there isn't
144       any other solution on Windows.
145
146   There are also some Windows-specific features that I currently work
147   on, but which have not made it into this release.
148
149     * A nice installation package based on Inno Setup 4. However,
150       there will always be a ZIP archive available, too, for those who
151       do not like installation packages.
152
153     * The option to run the OLSR server as a Windows service on
154       Windows NT, 2000, and XP.
155
156   These features will probably be in 0.4.7.
157
158                         ***** Compiling *****
159
160   To compile the Windows version you need a Cygwin installation with a
161   current version of GCC and Mingw32. Currently the OLSR server, the
162   GUI, and the dot_draw plugin compile. Each of the corresponding
163   subdirectories contains a shell script named "mkmf.sh" that takes
164   "Makefile.win32.in" as its input, appends the dependencies, and
165   outputs "Makefile.win32". Then simply say
166
167     make -f Makefile.win32 clean
168
169   to remove any compiled files or
170
171     make -f Makefile.win32 mclean
172
173   to remove any compiled files and the generated makefile. Say
174
175     make -f Makefile.win32
176
177   to compile the source code.
178
179   To compile the GUI you additionally need the development packages of
180   the GTK+ Windows port. They are available from the same URL as the
181   GTK+ runtime environment. You need the following packages or newer
182   versions of these packages:
183
184     - atk-dev-1.6.0.zip
185     - glib-dev-2.4.5.zip
186     - gtk+-dev-2.4.7.zip
187     - pango-dev-1.4.1.zip
188
189   Simply unzip the files into a directory that you've created and make
190   the variable "GTKBASE" in "Makefile.win32" point to this directory.
191
192 Well, thanks for using the initial release of a piece of software and
193 please bear with me if there are any problems. Please do also feel
194 free to suggest any features that you'd like to see in future
195 releases.
196
197 Thomas Lopatic <thomas@lopatic.de>, 2004-08-24