f3fde53b21f2cef6736ee539ea424cb0d1e0a2e9
[olsrd.git] / files / olsrd-manpages.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4 <article id="olsrd_manpages" lang="en">
5   <title>Unik OLSRD Man Pages</title>
6
7   <articleinfo>
8     <titleabbrev>Olsrd Man Pages</titleabbrev>
9
10     <author>
11       <firstname>Sven-Ola</firstname>
12
13       <surname>Tücke</surname>
14
15       <affiliation>
16         <address><email>sven-ola@gmx.de</email></address>
17       </affiliation>
18     </author>
19
20     <releaseinfo>Version 0.5.7-pre</releaseinfo>
21
22     <copyright>
23       <year>2004</year>
24
25       <holder>Andreas Tønnesen</holder>
26     </copyright>
27
28     <copyright>
29       <year>2008</year>
30
31       <holder>Sven-Ola Tücke</holder>
32     </copyright>
33
34     <abstract>
35       <para>Source for <productname>olsrd</productname> man pages</para>
36     </abstract>
37   </articleinfo>
38
39   <para>This document contains sources for man pages. They where converted
40   from the original man page files which are maintained by Andreas Tønnesen
41   until 2005. Because the 0.5.7 version of <productname>olsrd</productname>
42   introduces several configuration changes and removes old configuration
43   options, a re-write was necessary in late 2008.</para>
44
45   <para>To process this file and convert the included man pages, use the
46   <ulink url="http://docbook2x.sourceforge.net/">docbook2X</ulink> tool
47   kit.</para>
48
49   <procedure>
50     <step>
51       <para>Install docbook2X: <command>sudo apt-get install
52       docbook2x</command></para>
53     </step>
54
55     <step>
56       <para>Install the XML DTD: <command>sudo apt-get install
57       docbook-xml</command></para>
58     </step>
59
60     <step>
61       <para>Run the converter: <command>cd ./files &amp;&amp;
62       make</command></para>
63     </step>
64   </procedure>
65
66   <bridgehead>History (cited from Andreas Tønnesen's Master Thesis, Aug
67   2004)</bridgehead>
68
69   <para>Work on the olsrd implementation was started spring 2003. At first the
70   plan was to add and experiment with MID functionality in the existing <ulink
71   url="http://hipercom.inria.fr/olsr/draft-ietf-manet-olsr-03.txt">draft3</ulink>
72   compatible OLSR implementation by <ulink
73   url="http://hipercom.inria.fr/olsr/#code">INRIA</ulink>. This was completed
74   by summer 2003. This means that much olsrd code originally was based on the
75   INRIA implementation. But since then, close to all code has been rewritten
76   or heavily modified. Olsrd is therefore considered an independent OLSR
77   implementation and not just an extension to the INRIA implementation.
78   [...]</para>
79
80   <para>In October 2003 RFC3626 was released and now full RFC compliance
81   became the goal of the project. In November 2003 UniK olsrd version 0.2.0
82   was made public available through a website. But full RFC core compliance
83   was not reached until release 0.3.8 in January 2004. Not much later 0.4.0
84   was released. It covered all auxiliary functionality as well, except
85   link-layer notifications. [...]</para>
86
87   <variablelist>
88     <varlistentry>
89       <term>Andreas Tønnesen</term>
90
91       <listitem>
92         <para>Active 2003-2006: Funder of the project, active contributor and
93         maintainer until 2007, still owning the domain olsr.org. Also created
94         the dotdraw, dyn_gw, httpinfo, and secure plugins. While Andreas
95         Tønnesen published the original implementation under GPLv2, he as well
96         as all other contributors switched to BSD in Nov 2004.</para>
97       </listitem>
98     </varlistentry>
99   </variablelist>
100
101   <bridgehead>Further History (a very brief version, WOS 03 to
102   OLSRD-NG)</bridgehead>
103
104   <para>In Juli 2004, Andreas Tønnesen presented his implementation on the
105   <ulink url="http://www.wizards-of-os.org/archiv/wos_3.html">Wizards of OS
106   03</ulink> conference in Berlin. He met a couple of free public network
107   activists from the <ulink url="http://www.c-base.org/">C-Base</ulink> /
108   <ulink url="http://www.freifunk.net/">Freifunk</ulink> community. While some
109   of them tried to test wireless mobility cycling around the conference center
110   with a moped, others established a general agreement of cooperation. This
111   leads to several contributors to jump in, namely (AFAICR, please add
112   yourself if your name is missing or sort the list if you think you're in the
113   wrong position):</para>
114
115   <variablelist>
116     <varlistentry>
117       <term>Thomas Lopatic</term>
118
119       <listitem>
120         <para>Active 2004-2007: Implemented the Link Quality Extensions (ETX),
121         solved lots of implementation issues, created the Windows GUI and
122         maintained the olsrd code base as well. </para>
123       </listitem>
124     </varlistentry>
125
126     <varlistentry>
127       <term>Bruno Randolf</term>
128
129       <listitem>
130         <para>Active 2004-2005: Solved lots of wireless driver/hardware
131         issues, contributed to olsrd implementation (fixes, cleanups),
132         contributed to TAS and Dotdraw plugins, created the Nameservice
133         plugin.</para>
134       </listitem>
135     </varlistentry>
136
137     <varlistentry>
138       <term>Sven-Ola Tücke</term>
139
140       <listitem>
141         <para>Active 2004-[...]: Started the olsrd-based <ulink
142         url="http://ff-firmware.sourceforge.net/">Freifunk Firmware</ulink> in
143         late 2004, contributed bug fixes and maintenance (general and
144         Windows), the dyn_gw_plain and arprefresh plugins as well as some
145         documentation. </para>
146       </listitem>
147     </varlistentry>
148
149     <varlistentry>
150       <term>Jens Nachtigall</term>
151
152       <listitem>
153         <para>Active 2004-2005: Contributed bug fixes, contributed to dyn_gw
154         plugin and nameservice plugins.</para>
155       </listitem>
156     </varlistentry>
157
158     <varlistentry>
159       <term>Elektra Wagenfeld</term>
160
161       <listitem>
162         <para>Active 2004-2006: Contributed ideas and valuable comments, also
163         initiated the fish-eye routing scheme.</para>
164       </listitem>
165     </varlistentry>
166
167     <varlistentry>
168       <term>Erik Tromp</term>
169
170       <listitem>
171         <para>Active 2006-[...]: Created the <ulink
172         url="http://sourceforge.net/projects/olsr-bmf/">BMF</ulink> (Basic
173         Multicast Forwarding) plugin.</para>
174       </listitem>
175     </varlistentry>
176
177     <varlistentry>
178       <term>Lorenz Schori</term>
179
180       <listitem>
181         <para>Active 2006-[...]: Created the txtinfo plugin and contributed
182         bug fixes.</para>
183       </listitem>
184     </varlistentry>
185
186     <varlistentry>
187       <term>John Hay</term>
188
189       <listitem>
190         <para>Active 2006-2008: Contributed maintenance and bug fixes for
191         IPv6.</para>
192       </listitem>
193     </varlistentry>
194
195     <varlistentry>
196       <term>Thomas Martin</term>
197
198       <listitem>
199         <para>Active 2008: Code base maintenance (mainly BSD and
200         vxWorks).</para>
201       </listitem>
202     </varlistentry>
203
204     <varlistentry>
205       <term>Immo 'FaUl' Wehrenberg</term>
206
207       <listitem>
208         <para>Active 2006-[...]: Contributed the quagga plugin.</para>
209       </listitem>
210     </varlistentry>
211   </variablelist>
212
213   <bridgehead>OLSRD-NG History (also a brief version)</bridgehead>
214
215   <para>In late 2006, the Vienna based <ulink
216   url="http://www.funkfeuer.at/">Funkfeuer</ulink> community managed to get
217   some sponsoring from <ulink url="http://www.netidee.at/">IPA</ulink>. They
218   established the OLSRD-NG project which should basically lead to a much
219   larger node count and better code quality (see <ulink
220   url="http://wiki.funkfeuer.at//index.php/Olsrd-ng">Funkfeuer Wiki on
221   OLSRD-NG</ulink>). This in turn attracts new developers for the somewhat
222   silenced team from there on: </para>
223
224   <variablelist>
225     <varlistentry>
226       <term>Aaron Kaplan</term>
227
228       <listitem>
229         <para>Active 2005-[...]: Initiator/Coordinator of the OLSRD-NG
230         project, contributed bug fixes (BSD, MacOS) and documentation.</para>
231       </listitem>
232     </varlistentry>
233
234     <varlistentry>
235       <term>Bernd Petrovitsch</term>
236
237       <listitem>
238         <para>Active 2006-[...]: Patch-juggler for the olsrd repository,
239         rewrote the build system (Makefiles) and plugin subsystem, generalized
240         commonly used code and functions, also lots of code base maintenance
241         and bug fixes as well.</para>
242       </listitem>
243     </varlistentry>
244
245     <varlistentry>
246       <term>Hannes Gredler</term>
247
248       <listitem>
249         <para>Active 2007-[...] Contributed the SPF refactoring (routing code
250         optimization), code refactorings for scheduler and nearly all internal
251         data structures, code base maintenance and bug fixes. Currently also
252         hosts the mercurial repository.</para>
253       </listitem>
254     </varlistentry>
255
256     <varlistentry>
257       <term>Henning Rogge</term>
258
259       <listitem>
260         <para>Active 2008-[...]: Reworked the LQ/ETX algorithm, contributed
261         the netsimcap (network simulation, GPL), also lots of code base
262         maintenance and bug fixes.</para>
263       </listitem>
264     </varlistentry>
265   </variablelist>
266
267   <refentry id="olsrd_8">
268     <indexterm>
269       <primary><productname>olsrd</productname></primary>
270     </indexterm>
271
272     <refentryinfo>
273       <titleabbrev><productname>olsrd</productname> Optimized Link State
274       Routing Protocol Daemon</titleabbrev>
275     </refentryinfo>
276
277     <refmeta>
278       <refentrytitle id="olsrd_8-title">olsrd</refentrytitle>
279
280       <manvolnum>8</manvolnum>
281     </refmeta>
282
283     <refnamediv>
284       <refname>olsrd</refname>
285
286       <refpurpose>Optimized Link State Routing protocol daemon</refpurpose>
287     </refnamediv>
288
289     <refsynopsisdiv>
290       <para><cmdsynopsis>
291           <command>olsrd</command>
292
293           <group>
294             <arg>-h</arg>
295
296             <arg>--help</arg>
297           </group>
298
299           <group>
300             <arg>-v</arg>
301
302             <arg>--version</arg>
303           </group>
304
305           <group choice="req">
306             <arg>-f</arg>
307
308             <arg>--config</arg>
309
310             <replaceable>configfile</replaceable>
311           </group>
312
313           <group choice="req">
314             <arg>-d</arg>
315
316             <arg>--DebugLevel</arg>
317
318             <replaceable>level</replaceable>
319           </group>
320
321           <group>
322             <arg>-n</arg>
323
324             <arg>--nofork</arg>
325           </group>
326
327           <group>
328             <arg>-X</arg>
329
330             <arg>--dispin</arg>
331           </group>
332
333           <group>
334             <arg>-O</arg>
335
336             <arg>--dispout</arg>
337           </group>
338
339           <group>
340             <arg>-D</arg>
341
342             <arg>--delgw</arg>
343           </group>
344
345           <group>
346             <arg>-P</arg>
347
348             <arg>--ipc</arg>
349           </group>
350
351           <group choice="req">
352             <arg>-H</arg>
353
354             <arg>--hemu</arg>
355
356             <replaceable>ipaddr</replaceable>
357           </group>
358
359           <arg>interface1</arg>
360
361           <arg rep="repeat">interface2</arg>
362         </cmdsynopsis></para>
363
364       <para><emphasis role="strong">Note</emphasis>: Only if
365       <productname>olsrd</productname> is started without arguments, the
366       default config file is loaded - which is usually
367       <filename>/etc/olsrd.conf</filename> or
368       <filename>/usr/local/etc/olsrd.conf</filename>.</para>
369     </refsynopsisdiv>
370
371     <refsect1>
372       <title>Description</title>
373
374       <para>The <productname>olsrd</productname> daemon is an implementation
375       of the <emphasis>O</emphasis>ptimized <emphasis>L</emphasis>ink
376       <emphasis>S</emphasis>tate <emphasis>R</emphasis>outing protocol (OLSR)
377       for <emphasis>M</emphasis>obile <emphasis>A</emphasis>d-hoc
378       <emphasis>NET</emphasis>works (MANETs). The protocol is described in
379       RFC3626. It is designed to be run as a standalone server process - but
380       as it is still in an experimental stage most users will prefer running
381       it with some debug output.</para>
382
383       <para>This implementation of the OLSR protocol features an alternative
384       routing scheme based on link quality using an ETX-like metric which was
385       initially developed by the c-base community in Berlin and extended by
386       the Funkfeuer community in Vienna. This alternative routing scheme uses
387       non-standard messages and is therefore incompatible to standard OLSR as
388       it is described in the RFC. To switch back to RFC-mode, you need to
389       enable a (currently unavailable) metrics plugin using the
390       <option>LinkQualityAlgorithm</option> option (see <xref
391       endterm="olsrd_conf_5-title" linkend="olsrd_conf_5" />).</para>
392
393       <para>The home page of <productname>olsrd</productname> is <ulink
394       url="http://www.olsr.org">http://www.olsr.org</ulink></para>
395     </refsect1>
396
397     <refsect1>
398       <title>Getting Started</title>
399
400       <para>Running and maintaining a larger mesh network is a complex task.
401       Nevertheless, you may simply want to test
402       <productname>olsrd</productname>. If you have at least 3 devices, all
403       equipped with a WLAN card, the following short list of steps may
404       help.</para>
405
406       <orderedlist>
407         <listitem>
408           <para>Set up the necessary connectivity. Configure all WLAN cards to
409           Ad hoc (IBSS) or similar, use same ESSID and channel setting. All
410           WLAN cards need to use a fixed IP in the same IP address range (e.g.
411           10.0.0.0/8). Verify, that the interfaces are configured with the
412           correct broadcast address. Otherwise you will experience ARP lookups
413           on the broadcast address when running
414           <productname>olsrd</productname>. Also stop any firewalling and
415           enable forwarding. Test the connectivity by using the
416           <command>ping</command> command. Remember:
417           <productname>olsrd</productname> is a layer 3 routing daemon and
418           therefore simply is not responsible for any layer 2 problems. No
419           ping - no routes.</para>
420         </listitem>
421
422         <listitem>
423           <para>Install <productname>olsrd</productname> on every device. This
424           is different for several supported operating systems:</para>
425
426           <variablelist>
427             <varlistentry>
428               <term>Linux</term>
429
430               <listitem>
431                 <para>Download a stable source tar.gz. Unpack. Be sure to
432                 install the build tools (e.g. <command>apt-get install
433                 build-essential flex bison</command>). Do <command>make
434                 build_all</command>. Do <command>sudo make
435                 install_all</command>. Edit the
436                 <filename>/usr/local/etc/olsrd.conf</filename> file and change
437                 at least the <option>Interface</option> section for your WLAN
438                 card. You may also want to enable the httpinfo plugin. Start
439                 with <command>olsrd -f /usr/local/etc/olsrd.conf -d
440                 1</command>.</para>
441
442                 <para>You may add <option>PREFIX=/usr</option> to the
443                 <command>make</command> commands which changes the
444                 installation pathes to <filename>/etc</filename>,
445                 <filename>/usr/sbin</filename>, and
446                 <filename>/usr/lib</filename> as it is the default with
447                 previous <productname>olsrd</productname> versions.</para>
448               </listitem>
449             </varlistentry>
450
451             <varlistentry>
452               <term>Windows</term>
453
454               <listitem>
455                 <para>Download the Windows installer. Install and run the
456                 <filename>Switch.exe</filename> GUI as admin. Select the WLAN
457                 card and de-select any other interface offered. Click the
458                 <guibutton>Start</guibutton> button. Keep in mind: only a user
459                 with admin rights can change the routing table. Because a
460                 personal operating system is optimize to give you a maximum of
461                 security and convenience. As a consequence, it does not
462                 support cooperation too well. To cooperate, disable at least
463                 any active firewall solution on the WLAN card to enable
464                 forwarding for others. For security, disable all protocols and
465                 services for the WLAN card with the exception of basic
466                 TCP/IP.</para>
467               </listitem>
468             </varlistentry>
469
470             <varlistentry>
471               <term>BSD</term>
472
473               <listitem>
474                 <para>Basically use the same procedure as with Linux. You need
475                 to install and use the <command>gmake</command> command to
476                 build and install.</para>
477               </listitem>
478             </varlistentry>
479
480             <varlistentry>
481               <term>Embedded:</term>
482
483               <listitem>
484                 <para>Your mileage may vary with different embedded firmwares
485                 and operating systems. You may flash the Freifunk Firmware.
486                 DD-WRT has <productname>olsrd</productname> support. OpenWrt
487                 comes with a pre-compiled binary for
488                 <productname>olsrd</productname>. There is an ongoing
489                 OpenWrt/Kamikaze project with <productname>olsrd</productname>
490                 named ffluci. Installation and configuration is different for
491                 those Linux flavours - be sure to read their docs or online
492                 help files.</para>
493               </listitem>
494             </varlistentry>
495           </variablelist>
496         </listitem>
497
498         <listitem>
499           <para>If <productname>olsrd</productname> detects the correct
500           topology as well as installs/removes routes matching that topology,
501           you may offer Internet on one of your devices. Either enable a
502           manual <quote>HNA { 0.0.0.0 0.0.0.0 }</quote> in the configuration
503           file or use the dyn_gw or dyn_gw_plain plugins. For most Internet
504           connections, you need to enable NAT/MASQUERADING to translate the
505           private IP addresses to the globally valid IP address on the
506           Internet gateway device.</para>
507         </listitem>
508
509         <listitem>
510           <para>Start debugging if necessary. Use the <ulink
511           url="http://localhost:8080/">http://localhost:8080/</ulink> URL to
512           query information from the httpinfo plugin. Use
513           <command>wireshark</command> or <command>tcpdump -ni [iface] udp and
514           port 698</command> to verify OLSR messaging. Take special care for
515           the WLAN cards in Ad hoc / IBSS mode: typical driver/card
516           combinations tend to disagree about the auto-negotiated BSSID over
517           time (also called IBSS-split) which may be solved by using a
518           manually configured BSSID.</para>
519         </listitem>
520       </orderedlist>
521     </refsect1>
522
523     <refsect1>
524       <title>Options</title>
525
526       <para>You can specify options either on the command line or by using a
527       config file - usually <filename>/etc/olsrd.conf</filename> or
528       <filename>/usr/local/etc/olsrd.conf</filename>. The getopt parser
529       replaces the <option>--config</option> option with options acquired in
530       from the specified config file. While it is possible to operate using
531       only command line options, you may want a config file especially for
532       readability of the larger config options (e.g. <option>Interface { ...
533       }</option> or <option>LoadPlugin { ... }</option> option blocks). To
534       preset a config file setting, add an option before
535       <option>--config</option>. To overwrite a config file setting, add an
536       option after <option>--config</option>.</para>
537
538       <para>The following list summarizes options frequently specified on the
539       command line. If you use one or more command line options, you normally
540       also have to specify <option>--config</option> for the desired config
541       file.</para>
542
543       <variablelist>
544         <varlistentry>
545           <term><option>-h</option> or <option>--help</option></term>
546
547           <listitem>
548             <para>Prints out the list of valid command line / config file
549             options and exits.</para>
550           </listitem>
551         </varlistentry>
552
553         <varlistentry>
554           <term><option>-v</option> or <option>--version</option></term>
555
556           <listitem>
557             <para>Prints out the current version number and exits.</para>
558           </listitem>
559         </varlistentry>
560
561         <varlistentry>
562           <term><option>-f <replaceable>configfile</replaceable></option> or
563           <option>--config
564           <replaceable>configfile</replaceable></option></term>
565
566           <listitem>
567             <para>Reads in the specified config file. The acquired options are
568             inserted into the command line at the position of the
569             <option>-f</option> or <option>--config</option> option.</para>
570           </listitem>
571         </varlistentry>
572
573         <varlistentry>
574           <term><option>-d level</option> or <option>--DebugLevel
575           <replaceable>level</replaceable></option></term>
576
577           <listitem>
578             <para>Specifies the amount of debug information to be printed out
579             during operation. If set to 0, <productname>olsrd</productname>
580             will run in the background.</para>
581           </listitem>
582         </varlistentry>
583
584         <varlistentry>
585           <term><option>-n</option> or <option>--nofork</option></term>
586
587           <listitem>
588             <para>This option causes <productname>olsrd</productname> not to
589             fork into the background, even when started with
590             <option>--DebugLevel 0</option>.</para>
591           </listitem>
592         </varlistentry>
593
594         <varlistentry>
595           <term><option>-X</option> or <option>--dispin</option></term>
596
597           <listitem>
598             <para>This option causes <productname>olsrd</productname> to
599             display all incoming packet data.</para>
600           </listitem>
601         </varlistentry>
602
603         <varlistentry>
604           <term><option>-O</option> or <option>--dispout</option></term>
605
606           <listitem>
607             <para>This option causes <productname>olsrd</productname> to
608             display all outgoing packet data.</para>
609           </listitem>
610         </varlistentry>
611
612         <varlistentry>
613           <term><option>-D</option> or <option>--delgw</option></term>
614
615           <listitem>
616             <para>This option will remove a static default route when
617             <productname>olsrd</productname> adds an Internet route based on
618             OLSR routing.</para>
619           </listitem>
620         </varlistentry>
621
622         <varlistentry>
623           <term><option>-P</option> or <option>--ipc</option></term>
624
625           <listitem>
626             <para>This option allows the GUI front end to create one
627             connection to <productname>olsrd</productname> at runtime.</para>
628           </listitem>
629         </varlistentry>
630
631         <varlistentry>
632           <term><option>-i</option></term>
633
634           <listitem>
635             <para>Ignored for compatibility - older versions of
636             <productname>olsrd</productname> expect one or more interface
637             names after this option (see below).</para>
638           </listitem>
639         </varlistentry>
640
641         <varlistentry>
642           <term><option><replaceable>interface1</replaceable>
643           interface2...</option></term>
644
645           <listitem>
646             <para>Any character combination without a leading dash is
647             interpreted as a list of interfaces. The list specifies on what
648             network interfaces <productname>olsrd</productname> should run.
649             Only the main IP address of an interface is evaluated, so you
650             cannot specify an interface alias such as eth0:1. Note, that you
651             also cannot change the interface parameters such as intervals and
652             validity times. Use the <option>Interface { ... }</option> option
653             block instead.</para>
654           </listitem>
655         </varlistentry>
656       </variablelist>
657     </refsect1>
658
659     <refsect1>
660       <title>Files</title>
661
662       <simplelist type="vert">
663         <member><filename><?install-datadir ?>/etc/olsrd.conf</filename></member>
664       </simplelist>
665     </refsect1>
666
667     <refsect1>
668       <title>See Also</title>
669
670       <simplelist type="inline">
671         <member><xref endterm="olsrd_conf_5-title"
672         linkend="olsrd_conf_5" /></member>
673       </simplelist>
674     </refsect1>
675   </refentry>
676
677   <refentry id="olsrd_conf_5">
678     <indexterm>
679       <primary><filename>olsrd.conf</filename></primary>
680     </indexterm>
681
682     <refentryinfo>
683       <titleabbrev>Configuration File for
684       <productname>olsrd</productname></titleabbrev>
685     </refentryinfo>
686
687     <refmeta>
688       <refentrytitle id="olsrd_conf_5-title">olsrd.conf</refentrytitle>
689
690       <manvolnum>5</manvolnum>
691     </refmeta>
692
693     <refnamediv>
694       <refname><filename>olsrd.conf</filename></refname>
695
696       <refpurpose>configuration file for <xref endterm="olsrd_8-title"
697       linkend="olsrd_8" /></refpurpose>
698     </refnamediv>
699
700     <refsect1>
701       <title>Description</title>
702
703       <para>The <filename>olsrd.conf</filename> file is located in /etc or
704       /usr/local/etc by default. The file contains run-time configuration
705       settings for the Optimized Link State Routing daemon <xref
706       endterm="olsrd_8-title" linkend="olsrd_8" />. During startup, the
707       <productname>olsrd</productname> daemon reads in the file. If no command
708       line options are present, the default configuration file is read in.
709       Otherwise, the file specified by the <option>-f</option> or
710       <option>--config</option> command line option is used. All settings are
711       inserted as command line options by prepending a double dash and feeding
712       them to the getopt parser. The configuration file consists of comments,
713       single options and option blocks explained below.</para>
714
715       <para><emphasis role="strong">Note</emphasis>: With earlier versions of
716       <productname>olsrd</productname>, the configuration parser was offered
717       as stand alone shared library or DLL. With the exception of the Windows
718       GUI program (<command>Switch.exe</command>), this was unused. To
719       optimize the file size for embedded devices, the stand-alone
720       configuration parser was discarded.</para>
721     </refsect1>
722
723     <refsect1>
724       <title>Comments</title>
725
726       <para>Comments are everything following a hash character
727       (<emphasis>#</emphasis>) on a line. This data is discarded. Commenting
728       out an option is an easy way to make <productname>olsrd</productname>
729       use the default value for that option.</para>
730     </refsect1>
731
732     <refsect1>
733       <title>Option Syntax</title>
734
735       <para>An option starts with a keyword. If the option accepts arguments,
736       separate the keyword and the arguments with one or more space characters
737       (or tabs) on the same line. You can surround arguments with double or
738       single quotes, for example if an argument contains a space
739       character.</para>
740     </refsect1>
741
742     <refsect1>
743       <title>Single Options</title>
744
745       <para><emphasis role="strong">Caution</emphasis>: The current
746       implementation discards several single options controlling the Link
747       Quality Extensions valid with earlier versions. If you want the
748       RFC-compatible mode, load the <filename>olsrd_lq_rfc.so.1</filename>
749       plugin (see <xref endterm="olsrd_conf_5_plugins-title"
750       linkend="olsrd_conf_5_plugins" />). If you want to use another LQ
751       measurement than the compiled in
752       <filename>olsrd_lq_etx_ff.so.1</filename>, consider one of the other LQ
753       plugins (also see <xref endterm="olsrd_conf_5_plugins-title"
754       linkend="olsrd_conf_5_plugins" />). Discarded options:
755       <option>UseHysteresis</option>, <option>HystScaling</option>,
756       <option>HystThrHigh</option>, <option>HystThrLow</option>,
757       <option>LinkQualityLevel</option>, <option>LinkQualityWinsize</option>,
758       <option>LinkQualityAlgorithm</option> and
759       <option>LinkQualityAging</option>.</para>
760
761       <para>Single options consists of a keyword and a value. Note, that a
762       comment can follow such a option on the same line. Valid single options
763       are:</para>
764
765       <variablelist>
766         <varlistentry>
767           <term><option>config</option>
768           <replaceable>configfile</replaceable></term>
769
770           <listitem>
771             <para>Nesting within config files is not supported. Do not
772             use.</para>
773           </listitem>
774         </varlistentry>
775
776         <varlistentry>
777           <term><option>delgw</option>, <option>dispin</option>,
778           <option>dispout</option>, <option>help</option>,
779           <option>hemu</option>, <option>iface</option>, <option>ipc</option>,
780           <option>nofork</option>, <option>version</option>:</term>
781
782           <listitem>
783             <para>While these are valid options, they do not make much sense
784             in a config file. Refer to <xref endterm="olsrd_8-title"
785             linkend="olsrd_8" /> for their meaning.</para>
786           </listitem>
787         </varlistentry>
788
789         <varlistentry>
790           <term><option>AllowNoInt</option>
791           <replaceable>yes</replaceable>|<replaceable>no</replaceable></term>
792
793           <listitem>
794             <para><productname>olsrd</productname> supports dynamic
795             configuration of network interfaces. This means that interfaces on
796             which <productname>olsrd</productname> runs on can be reconfigured
797             and <productname>olsrd</productname> will update itself with no
798             need to be restarted. <productname>olsrd</productname> also
799             supports removal and addition of interfaces in run-time. This
800             option specifies that <productname>olsrd</productname> should keep
801             running if no network interfaces are available. Defaults to
802             <replaceable>yes</replaceable>.</para>
803           </listitem>
804         </varlistentry>
805
806         <varlistentry>
807           <term><option>ClearScreen</option>
808           <replaceable>yes</replaceable>|<replaceable>no</replaceable></term>
809
810           <listitem>
811             <para>If set to <replaceable>yes</replaceable> and
812             <productname>olsrd</productname> running with a
813             <option>DebugLevel</option> other that
814             <replaceable>0</replaceable>, the terminal to which output is sent
815             (STDOUT) is cleared prior to writing updated tables. This makes it
816             easier to follow changes in real-time.</para>
817           </listitem>
818         </varlistentry>
819
820         <varlistentry>
821           <term><option>DebugLevel</option>
822           <replaceable>0</replaceable>-<replaceable>9</replaceable></term>
823
824           <listitem>
825             <para>Controls the amount of debug output
826             <productname>olsrd</productname> prints out. If set to
827             <replaceable>0</replaceable>, <productname>olsrd</productname>
828             will detach from the current process and run in the background. A
829             value of <replaceable>9</replaceable> yields a maximum of debug
830             output. Defaults to <replaceable>0</replaceable>.</para>
831           </listitem>
832         </varlistentry>
833
834         <varlistentry>
835           <term><option>FIBMetric</option>
836           <replaceable>flat</replaceable>|<replaceable>correct</replaceable>|<replaceable>approx</replaceable></term>
837
838           <listitem>
839             <para>This setting controls how the metric value for kernel routes
840             is handled. While analyzing new information of the mesh topology,
841             <productname>olsrd</productname> may change the internal routing
842             path to several distant nodes (in hops). If this setting is set to
843             <replaceable>flat</replaceable>, kernel routes always have a
844             metric of 2. No route update is necessary if the internal routing
845             pathes change. If this setting is set to
846             <replaceable>correct</replaceable>, the kernel metric shows the
847             number of hops to the destination. This induces frequent routing
848             changes in larger meshes. If this setting is set to
849             <replaceable>approx</replaceable>, the current hop number is set
850             as a route metric but not updated if
851             <productname>olsrd</productname> detects a hop number change.
852             Defaults to <replaceable>flat</replaceable>.</para>
853           </listitem>
854         </varlistentry>
855
856         <varlistentry>
857           <term><option>IpVersion</option>
858           <replaceable>4</replaceable>|<replaceable>6</replaceable></term>
859
860           <listitem>
861             <para><productname>olsrd</productname> supports both IP versions:
862             <replaceable>4</replaceable> and <replaceable>6</replaceable>.
863             This option controls what IP version
864             <productname>olsrd</productname> uses. Defaults to
865             <replaceable>4</replaceable>.</para>
866           </listitem>
867         </varlistentry>
868
869         <varlistentry>
870           <term><option>LinkQualityDijkstraLimit</option>
871           <replaceable>0</replaceable>|<replaceable>255</replaceable>
872           <replaceable>[Pollrate]</replaceable>-<replaceable>120.0</replaceable></term>
873
874           <listitem>
875             <para>This setting configures a calculation optimization which may
876             be necessary for large meshes with slow nodes (e.g. 100 MHz ARM
877             CPU). Normally, an incoming TC message triggers a re-calculation
878             of the internal network model. This setting can be used switch to
879             a regularly calculation (first value set to
880             <replaceable>0</replaceable>) and to use a specific calculation
881             interval in seconds (second value larger then
882             <replaceable>[Pollrate]</replaceable>). Note, that infrequent
883             re-calculation may introduce routing loops because nodes need more
884             time to adapt their routing tables. Defaults to
885             <replaceable>255</replaceable> <replaceable>0.0</replaceable>
886             (inactive).</para>
887           </listitem>
888         </varlistentry>
889
890         <varlistentry>
891           <term><option>LinkQualityFishEye</option>
892           <replaceable>0</replaceable>|<replaceable>1</replaceable></term>
893
894           <listitem>
895             <para>Enables (<replaceable>1</replaceable>) or disables
896             (<replaceable>0</replaceable>) the experimental fish eye
897             algorithm. In mesh network with high packet loss, the topology
898             information does not spread fast and synchronized, which
899             introduces routing loops. The fish eye algorithm will send TC
900             (Topology Control) messages with varying TTL values. Which floods
901             the near neighborhood more often with topology information than
902             distant nodes (in hops). Use this option together with a shorter
903             <option>TcInterval</option> and a higher
904             <option>MprCoverage</option> setting.</para>
905           </listitem>
906         </varlistentry>
907
908         <varlistentry>
909           <term><option>MprCoverage</option> <replaceable>1</replaceable> or
910           higher</term>
911
912           <listitem>
913             <para>This value decides, how many MPRs a node should attempt to
914             select for every two hop neighbor. Defaults to
915             <emphasis><replaceable>1</replaceable></emphasis>, and any other
916             setting will severely reduce the optimization introduced by the
917             MPR scheme. Note, that when using the
918             <option>LinkQualityFishEye</option> option, a higher value is
919             recommended.</para>
920           </listitem>
921         </varlistentry>
922
923         <varlistentry>
924           <term><option>NatThreshold</option>
925           <replaceable>0.1</replaceable>-<replaceable>1.0</replaceable></term>
926
927           <listitem>
928             <para>In a large mesh network, several gateways may announce HNA
929             0/0 which basically says <quote>Internet here</quote>. Because
930             most Internet gateways offer their service using a translated
931             globally valid IP (NAT), switching the current gateway terminates
932             all running NATted connections. In other words: if you live
933             between 2 Internet gateways and start download, the download may
934             block some OLSR packets. The download will stop because this
935             triggers a route change - especially if you do not use traffic
936             shaping to prioritize OLSR packets. This setting introduces a
937             threshold to stop switching the default gateway on minor LQ/ETX
938             changes if another (NATted) gateway is to be used. As a trade off,
939             this may introduce routing loops or selects a bad gateway if the
940             threshold is too low. Defaults to <replaceable>1.0</replaceable>
941             (inactive).</para>
942           </listitem>
943         </varlistentry>
944
945         <varlistentry>
946           <term><option>NicChgsPollInt</option>
947           <replaceable>0.1</replaceable>-<replaceable>100.0</replaceable></term>
948
949           <listitem>
950             <para>This option sets the interval, in seconds, that
951             <productname>olsrd</productname> will check the configured
952             interfaces for changes in configuration. Defaults to
953             <replaceable>2.5</replaceable>.</para>
954           </listitem>
955         </varlistentry>
956
957         <varlistentry>
958           <term><option>Pollrate</option>
959           <replaceable>0.1</replaceable>-<replaceable>10.0</replaceable></term>
960
961           <listitem>
962             <para>This option sets the sleep interval, in seconds. While
963             polling the interfaces, the <productname>olsrd</productname>
964             scheduler will sleep for this time if no packets are to be
965             received. If the value is set too high for the current UDP receive
966             buffer size, packet loss will occur. Note, that the current
967             <productname>olsrd</productname> implementation internally
968             calculates timing values in milliseconds (1/1000s). Defaults to
969             <replaceable>0.1</replaceable>.</para>
970           </listitem>
971         </varlistentry>
972
973         <varlistentry>
974           <term><option>RtProto</option>
975           <replaceable>0</replaceable>-<replaceable>255</replaceable></term>
976
977           <listitem>
978             <para>This setting configures the routing protocol ID to be used
979             when setting routes via rtnetlink, see RTNETLINK(7) for the
980             <emphasis>rtm_protocol</emphasis> keyword. Defaults to
981             <replaceable>3</replaceable>.</para>
982           </listitem>
983         </varlistentry>
984
985         <varlistentry>
986           <term><option>RtTableDefault</option>
987           <replaceable>0</replaceable>|<replaceable>1</replaceable>-<replaceable>254</replaceable></term>
988
989           <listitem>
990             <para>Defines the routing table for inserting a new default route.
991             Defaults to <replaceable>0</replaceable> (use
992             <option>RtTable</option>)</para>
993           </listitem>
994         </varlistentry>
995
996         <varlistentry>
997           <term><option>RtTable</option>
998           <replaceable>1</replaceable>-<replaceable>254</replaceable></term>
999
1000           <listitem>
1001             <para>With Linux and BSD, more than one routing table exist in the
1002             system. Together with a rules set that determines which table
1003             handles what packets, these system functions are called
1004             <quote>iproute2</quote> or <quote>Policy Routing</quote>. You may
1005             want to read the <ulink url="http://lartc.org/">Linux Advanced
1006             Routing &amp; Traffic Control</ulink> for details. Defaults to
1007             <replaceable>254</replaceable> (or <quote>main</quote>, see
1008             <filename>/etc/iproute2/rt_tables</filename>)</para>
1009           </listitem>
1010         </varlistentry>
1011
1012         <varlistentry>
1013           <term><option>TcRedundancy</option>
1014           <replaceable>0</replaceable>|<replaceable>1</replaceable>|<replaceable>2</replaceable></term>
1015
1016           <listitem>
1017             <para>This value controls the TC redundancy used by the local node
1018             in TC message generation. To enable a more robust understanding of
1019             the topology, nodes can be set to announce more than just their
1020             MPR selector set in TC messages. If set to
1021             <replaceable>0</replaceable>, the advertised link set of the node
1022             is limited to the MPR selectors. If set to
1023             <replaceable>1</replaceable>, the advertised link set of the node
1024             is the union of its MPR set and its MPR selector set. If set to
1025             <replaceable>2</replaceable>, the advertised link set of the node
1026             is the full symmetric neighbor set of the node. Defaults to
1027             <replaceable>0</replaceable>.</para>
1028           </listitem>
1029         </varlistentry>
1030
1031         <varlistentry>
1032           <term><option>TosValue</option>
1033           <replaceable>0</replaceable>-<replaceable>16</replaceable></term>
1034
1035           <listitem>
1036             <para>This value controls the type of service value to set in the
1037             IP header of OLSR control traffic. Defaults to
1038             <replaceable>16</replaceable>.</para>
1039           </listitem>
1040         </varlistentry>
1041
1042         <varlistentry>
1043           <term><option>Willingness</option>
1044           <replaceable>0</replaceable>-<replaceable>7</replaceable></term>
1045
1046           <listitem>
1047             <para>Nodes participating in an OLSR routed network will announce
1048             their willingness to act as relays for OLSR control traffic for
1049             their neighbors (MPR). This option specifies a fixed willingness
1050             value to be announced by the local node.
1051             <replaceable>4</replaceable> is a neutral option here, while
1052             <replaceable>0</replaceable> specifies that this node will never
1053             act as a relay, and <replaceable>7</replaceable> specifies that
1054             this node will always act as such a relay. If this option is unset
1055             in the configuration file, then <productname>olsrd</productname>
1056             will try to retrieve information about the system power and
1057             dynamically update willingness according to this info. If no such
1058             info can be retrieved willingness is set to
1059             <replaceable>4</replaceable>.</para>
1060           </listitem>
1061         </varlistentry>
1062       </variablelist>
1063     </refsect1>
1064
1065     <refsect1 id="olsrd_conf_5_optionblocks">
1066       <title id="olsrd_conf_5_optionblocks-title">Option Blocks</title>
1067
1068       <para>Option blocks are configuration options that holds a body of
1069       sub-options encapsulated in curled braces <quote>{...}</quote>. Note,
1070       that you need to separate the keyword and the starting brace with one or
1071       more whitespace characters (spaces, tabs, or newlines). Also separate
1072       sub-options as well as the closing brace with additional whitespace
1073       characters. Valid options are:</para>
1074
1075       <variablelist>
1076         <varlistentry>
1077           <term><option>IpcConnect { <replaceable>sub-options</replaceable>
1078           }</option></term>
1079
1080           <listitem>
1081             <para><productname>olsrd</productname> can allow processes to make
1082             a TCP connection to itself on which data regarding the topology
1083             will be transmitted. This is typically used by GUI applications to
1084             provide a user-friendly front-end to
1085             <productname>olsrd</productname>. This option block controls the
1086             IPC access. Sub options are:</para>
1087
1088             <variablelist>
1089               <varlistentry>
1090                 <term><option>MaxConnections</option>
1091                 <replaceable>0</replaceable>-<replaceable>5</replaceable></term>
1092
1093                 <listitem>
1094                   <para>This option specifies how many connections that can
1095                   exist simultaneously. Multiple connections have not been
1096                   tested, and probably do not work! This option should only be
1097                   used to control whether or not processes can connect to
1098                   <productname>olsrd</productname> by setting it either to
1099                   <replaceable>0</replaceable>, which will tell
1100                   <productname>olsrd</productname> not to allow any
1101                   connections, or by setting it to a positive value. Defaults
1102                   to <replaceable>0</replaceable>.</para>
1103                 </listitem>
1104               </varlistentry>
1105
1106               <varlistentry>
1107                 <term><option>Host</option>
1108                 <replaceable>ipaddr</replaceable></term>
1109
1110                 <listitem>
1111                   <para>This option specifies a single host that is allowed to
1112                   connect to <productname>olsrd</productname>. By default only
1113                   the loopback address (127.0.0.1) is allowed to access. If
1114                   you want to be able to connect from another host, you should
1115                   add that IP address. You may add multiple hosts.</para>
1116                 </listitem>
1117               </varlistentry>
1118
1119               <varlistentry>
1120                 <term><option>Net</option> <replaceable>ipaddr</replaceable>
1121                 <replaceable>netmask</replaceable>|<replaceable>prefix</replaceable></term>
1122
1123                 <listitem>
1124                   <para>You can specify a net range of IP addresses which
1125                   <productname>olsrd</productname> will allow TCP connections
1126                   from. Besides the IP address, you need to specify a netmask
1127                   for IPv4 and a prefix for IPv6. You may add multiple
1128                   networks.</para>
1129                 </listitem>
1130               </varlistentry>
1131             </variablelist>
1132           </listitem>
1133         </varlistentry>
1134
1135         <varlistentry>
1136           <term><option>Hna4 { <replaceable>sub-options</replaceable>
1137           }</option></term>
1138
1139           <listitem>
1140             <para>Hosts in a routed network can announce connectivity to
1141             external networks or hosts using HNA messages. This option block
1142             is used to set the IPv4 networks or hosts to be announced. Sub
1143             options are:</para>
1144
1145             <variablelist>
1146               <varlistentry>
1147                 <term><replaceable>IPv4-address</replaceable>
1148                 <replaceable>IPv4-netmask</replaceable></term>
1149
1150                 <listitem>
1151                   <para>Specifies an IPv4 network or host to be announced via
1152                   HNA messages. Multiple entries can be added. To announce
1153                   Internet connectivity, add
1154                   <replaceable>0.0.0.0</replaceable>
1155                   <replaceable>0.0.0.0</replaceable>. To announce a single
1156                   host, add <replaceable>ipaddr</replaceable>
1157                   <replaceable>255.255.255.255</replaceable>.</para>
1158                 </listitem>
1159               </varlistentry>
1160             </variablelist>
1161           </listitem>
1162         </varlistentry>
1163
1164         <varlistentry>
1165           <term><option>Hna6 { <replaceable>sub-options</replaceable>
1166           }</option></term>
1167
1168           <listitem>
1169             <para>Hosts in a routed network can announce connectivity to
1170             external networks or hosts using HNA messages. This option block
1171             is used to set the IPv6 networks or hosts to be announced. Sub
1172             options are:</para>
1173
1174             <variablelist>
1175               <varlistentry>
1176                 <term><replaceable>IPv6-address</replaceable> 0-128</term>
1177
1178                 <listitem>
1179                   <para>Specifies an IPv6 network or host to be announced via
1180                   HNA messages. Multiple entries can be added. To announce
1181                   Internet connectivity, add <replaceable>::</replaceable>
1182                   <replaceable>0</replaceable> . To announce a single host,
1183                   add <replaceable>ipaddr</replaceable>
1184                   <replaceable>128</replaceable>.</para>
1185                 </listitem>
1186               </varlistentry>
1187             </variablelist>
1188           </listitem>
1189         </varlistentry>
1190
1191         <varlistentry>
1192           <term><option>LoadPlugin <replaceable>plugin-filename</replaceable>
1193           { <replaceable>sub-options</replaceable> }</option></term>
1194
1195           <listitem>
1196             <para>Specifies a plugin that <productname>olsrd</productname>
1197             should load at startup. You need to specify the filename for the
1198             shared object file (<filename>*.so</filename> on Linux and
1199             <filename>*.dll</filename> on Windows). Read the
1200             <filename>README</filename> in the plugin's source directory or
1201             refer the <xref endterm="olsrd_conf_5_plugins-title"
1202             linkend="olsrd_conf_5_plugins" /> section below. This option block
1203             can be repeated to add multiple plugins. Sub options are:</para>
1204
1205             <variablelist>
1206               <varlistentry>
1207                 <term><option>PlParam</option> <replaceable>key</replaceable>
1208                 <replaceable>value</replaceable></term>
1209
1210                 <listitem>
1211                   <para>Sends a pair of parameters to the plugin at
1212                   initialization. The parameter's
1213                   <replaceable>key</replaceable> is case insensitive. Refer to
1214                   the <xref endterm="olsrd_conf_5_plugins-title"
1215                   linkend="olsrd_conf_5_plugins" /> section below or consult
1216                   individual plugin documentation for possible
1217                   parameters.</para>
1218                 </listitem>
1219               </varlistentry>
1220             </variablelist>
1221           </listitem>
1222         </varlistentry>
1223
1224         <varlistentry>
1225           <term><option>Interface <replaceable>interface1</replaceable>
1226           <replaceable>interface2...</replaceable> {
1227           <replaceable>sub-options</replaceable> }</option></term>
1228
1229           <listitem>
1230             <para>This option block specifies one or more network interfaces
1231             on which <productname>olsrd</productname> should run. At least one
1232             network interface block must be specified for
1233             <productname>olsrd</productname> to run. Various parameters can be
1234             specified on individual interfaces or groups of interfaces. This
1235             option block can be repeated to add multiple interface
1236             configurations. Sub options are:</para>
1237
1238             <variablelist>
1239               <varlistentry>
1240                 <term><option>AutoDetectChanges</option>
1241                 <replaceable>yes</replaceable>|<replaceable>no</replaceable></term>
1242
1243                 <listitem>
1244                   <para><productname>olsrd</productname> can auto detect
1245                   changes in interface configurations by polling on the
1246                   interval set by <option>NicChgsPollInt</option>. This is
1247                   enabled by default but can be turned off per interface to
1248                   save CPU cycles.</para>
1249                 </listitem>
1250               </varlistentry>
1251
1252               <varlistentry>
1253                 <term><option>Ip4Broadcast</option>
1254                 <replaceable>IPv4-address</replaceable></term>
1255
1256                 <listitem>
1257                   <para>Forces the given IPv4 broadcast address to be used as
1258                   destination address for all outgoing OLSR traffic on the
1259                   interface. If your mesh uses several IP address ranges, the
1260                   global broadcast address
1261                   <replaceable>255.255.255.255</replaceable> can be used. If
1262                   you use a point-to-point link (e.g. a tun-type VPN tunnel),
1263                   you may configure the neighbours IP address. If this option
1264                   is unset, the broadcast address of the interface will be
1265                   used. In this case, the broadcast address will be updated
1266                   during run-time if a change is detected.</para>
1267                 </listitem>
1268               </varlistentry>
1269
1270               <varlistentry>
1271                 <term><option>Ip6AddrType</option>
1272                 <replaceable>site-local</replaceable>|<replaceable>unique-local</replaceable>|<replaceable>global</replaceable></term>
1273
1274                 <listitem>
1275                   <para>This option sets the IPv6 address type to be used for
1276                   interface address detection. Defaults to
1277                   <replaceable>site-local</replaceable>.</para>
1278                 </listitem>
1279               </varlistentry>
1280
1281               <varlistentry>
1282                 <term><option>Ip6MulticastSite</option>
1283                 <replaceable>IPv6-address</replaceable></term>
1284
1285                 <listitem>
1286                   <para>If <option>Ip6AddrType</option> is set to
1287                   <replaceable>site-local</replaceable>, this setting forces
1288                   the given IPv6 broadcast address to be used as destination
1289                   address for all outgoing OLSR traffic on the interface.
1290                   .</para>
1291                 </listitem>
1292               </varlistentry>
1293
1294               <varlistentry>
1295                 <term><option>Ip6MulticastGlobal</option>
1296                 <replaceable>IPv6-address</replaceable></term>
1297
1298                 <listitem>
1299                   <para>If <option>Ip6AddrType</option> is set to
1300                   <replaceable>global</replaceable>, this setting forces the
1301                   given IPv6 broadcast address to be used as destination
1302                   address for all outgoing OLSR traffic on the interface.
1303                   .</para>
1304                 </listitem>
1305               </varlistentry>
1306
1307               <varlistentry>
1308                 <term><option>HelloInterval</option>
1309                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1310
1311                 <listitem>
1312                   <para>Sets the interval on which HELLO (RFC-mode) or
1313                   LQ_HELLO (LQ/ETX-mode) messages will be generated and
1314                   transmitted on the interface. Note, that HELLO messages are
1315                   used to detect neighbours and determine symmetric
1316                   (bi-directional) links. These messages also include the
1317                   current neighbour information and always have a TTL of 1
1318                   which prevents any forwarding.</para>
1319                 </listitem>
1320               </varlistentry>
1321
1322               <varlistentry>
1323                 <term><option>HelloValidityTime</option>
1324                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1325
1326                 <listitem>
1327                   <para>Sets the validity time to be announced in HELLO or
1328                   LQ_HELLO messages transmitted on the interface. This value
1329                   must be larger than <option>HelloInterval</option>.</para>
1330                 </listitem>
1331               </varlistentry>
1332
1333               <varlistentry>
1334                 <term><option>TcInterval</option>
1335                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1336
1337                 <listitem>
1338                   <para>Sets the interval on which TC (RFC-mode) or LQ_TC
1339                   (LQ/ETX-mode) messages will be generated and transmitted on
1340                   the interface. Note, that TC (Topology Control) messages are
1341                   used to spread topology information. These messages also
1342                   include the current neighbour information and normally have
1343                   a TTL larger than 1 to flood them through the mesh network.
1344                   TC or LQ_TC messages may be forwarded delayed to support
1345                   packet aggregation. If the
1346                   <option>LinkQualityFishEye</option> option is enabled, the
1347                   TTL for these messages is varied to faster distribute
1348                   topology information in the near neighbourhood.</para>
1349                 </listitem>
1350               </varlistentry>
1351
1352               <varlistentry>
1353                 <term><option>TcValidityTime</option>
1354                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1355
1356                 <listitem>
1357                   <para>Sets the validity time to be announced in TC or LQ_TC
1358                   messages transmitted on the interface. This value must be
1359                   larger than <option>TcInterval</option>.</para>
1360                 </listitem>
1361               </varlistentry>
1362
1363               <varlistentry>
1364                 <term><option>MidInterval</option>
1365                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1366
1367                 <listitem>
1368                   <para>Sets the interval on which MID messages will be
1369                   generated and transmitted on the interface. Note, that MID
1370                   messages spread alias information and will be emitted only
1371                   by nodes with more than one <productname>olsrd</productname>
1372                   interface.</para>
1373                 </listitem>
1374               </varlistentry>
1375
1376               <varlistentry>
1377                 <term><option>MidValidityTime</option>
1378                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1379
1380                 <listitem>
1381                   <para>Sets the validity time to be announced in MID messages
1382                   transmitted on the interface. This value must be larger than
1383                   <option>MidInterval</option>.</para>
1384                 </listitem>
1385               </varlistentry>
1386
1387               <varlistentry>
1388                 <term><option>HnaInterval</option>
1389                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1390
1391                 <listitem>
1392                   <para>Sets the interval on which HNA messages will be
1393                   generated and transmitted on the interface. Note, that HNA
1394                   messages spread gateway information and will be emitted only
1395                   by nodes with configured <option>Hna4</option> or
1396                   <option>Hna6</option> options.</para>
1397                 </listitem>
1398               </varlistentry>
1399
1400               <varlistentry>
1401                 <term><option>HnaValidityTime</option>
1402                 <replaceable>0.0</replaceable>-<replaceable>3968.0</replaceable></term>
1403
1404                 <listitem>
1405                   <para>Sets the validity time to be announced in HNA messages
1406                   transmitted on the interface. This value must be larger than
1407                   <option>HnaInterval</option>.</para>
1408                 </listitem>
1409               </varlistentry>
1410
1411               <varlistentry>
1412                 <term><option>Weight</option>
1413                 <replaceable>0</replaceable>-<replaceable>[maxint]</replaceable></term>
1414
1415                 <listitem>
1416                   <para>When multiple links exist between hosts, the
1417                   <emphasis>weight</emphasis> of the interface is used to
1418                   determine the link to route by. Normally the
1419                   <emphasis>weight</emphasis> is automatically calculated by
1420                   <productname>olsrd</productname> based on the
1421                   characteristics of the interface, but here you can specify a
1422                   fixed value. <productname>olsrd</productname> will choose
1423                   links with the lowest <emphasis>weight</emphasis>
1424                   value.</para>
1425                 </listitem>
1426               </varlistentry>
1427
1428               <varlistentry>
1429                 <term><option>LinkQualityMult</option>
1430                 <replaceable>default</replaceable>|<replaceable>neighbour-ipaddr</replaceable>
1431                 <replaceable>0.1</replaceable>-<replaceable>1.0</replaceable></term>
1432
1433                 <listitem>
1434                   <para>When using <productname>olsrd</productname> in
1435                   LQ/ETX-mode, the neighbour link cost is calculated based on
1436                   packet loss or hello message loss (see
1437                   <option>LinkQualityAlgorithm</option> option). Because the
1438                   applied measurement may not reflect the real-live connection
1439                   quality and link speed, this setting allows you to manually
1440                   fine-tune the measurement results. You can add one or more
1441                   <option>LinkQualityMult</option> options and correlate the
1442                   IP address of a neighbour with a multiplication factor. This
1443                   setting only allows you to determine bad links, e.g. a
1444                   factor of <replaceable>0.5</replaceable> basically says:
1445                   <quote>this link is only half as good as the packet loss may
1446                   indicate</quote>. For this reason, the
1447                   <replaceable>default</replaceable> keyword can be used to
1448                   lower all ETX/LQ values with a lower factor. You then define
1449                   better links by adding further entries with known IP
1450                   addresses and a higher factor.</para>
1451
1452                   <para><emphasis role="strong">Note</emphasis>: While
1453                   switching routes generally is not harmful, people tend to
1454                   fiddle with the <option>LinkQualityMult</option> setting
1455                   only because their automatically selected Internet gateway
1456                   flaps. This is a bad habit, because it disturbs the ETX/LQ
1457                   measurement and leads to sub-optimal routes for others. Try
1458                   using the <option>NatThreshold</option> option instead.
1459                   Another option is manual gateway selection either by
1460                   automatic tunneling or by using a VPN technique.</para>
1461                 </listitem>
1462               </varlistentry>
1463             </variablelist>
1464           </listitem>
1465         </varlistentry>
1466       </variablelist>
1467     </refsect1>
1468
1469     <refsect1 id="olsrd_conf_5_plugins">
1470       <title id="olsrd_conf_5_plugins-title">Plugins</title>
1471
1472       <para>The functionality of the <productname>olsrd</productname> daemon
1473       is extendable by plugins. Plugins are shared object files
1474       (<filename>*.so</filename> on Linux or <filename>*.dll</filename> on
1475       Windows) to be loaded from <productname>olsrd</productname> during
1476       startup. To load a plugin, add the appropriate
1477       <option>LoadPlugin</option> option to the config file (see <xref
1478       endterm="olsrd_conf_5_optionblocks-title"
1479       linkend="olsrd_conf_5_optionblocks" /> above). A plugin accepts zero or
1480       more parameters, which can be added by <option>PlParam</option>
1481       <replaceable>key</replaceable> <replaceable>value</replaceable>
1482       statements to the <option>LoadPlugin</option> option block. The
1483       following plugin are included with the current
1484       <productname>olsrd</productname> installation:</para>
1485
1486       <variablelist>
1487         <varlistentry>
1488           <term><option>LoadPlugin arprefresh.so.0.1 {
1489           <replaceable>...</replaceable> }</option></term>
1490
1491           <listitem>
1492             <para>This plugin refreshes the local ARP cache from received OLSR
1493             messages. This optimizes the ARP lookups otherwise required if
1494             unicast traffic is send on a previously unused link chain. The
1495             correct function requires Linux kernel 2.6. The plugin accepts no
1496             parameters.</para>
1497           </listitem>
1498         </varlistentry>
1499
1500         <varlistentry>
1501           <term><option>LoadPlugin olsrd_bmf.so.1.5.3 {
1502           <replaceable>...</replaceable> }</option></term>
1503
1504           <listitem>
1505             <para>This plugin floods IP-multicast and optional IP-broadcast
1506             traffic via the MPR chain. The multicast or broadcast traffic is
1507             grabbed from a non-OLSR interface, forwarded through the mesh and
1508             exits to another non-OLSR interface. Note, that this plugin
1509             requires multi-threading support. Also note, that this plugin has
1510             a separate source repository on <ulink
1511             url="http://olsr-bmf.sourceforge.net/">http://olsr-bmf.sourceforge.net/</ulink>
1512             . The plugin accepts the following parameters.</para>
1513
1514             <variablelist>
1515               <varlistentry>
1516                 <term><option>PlParam</option> NonOlsrIf
1517                 <replaceable>interface</replaceable></term>
1518
1519                 <listitem>
1520                   <para>As a special feature, it is possible to also forward
1521                   from and to non-OLSR interfaces. If you have network
1522                   interfaces on which <productname>olsrd</productname> is not
1523                   running, but you do want to forward multicast and
1524                   local-broadcast IP packets, specify up to 32
1525                   <option>NonOlsrIf</option> sub-options.</para>
1526                 </listitem>
1527               </varlistentry>
1528
1529               <varlistentry>
1530                 <term><option>PlParam</option> DoLocalBroadcast
1531                 <replaceable>yes</replaceable>|<replaceable>true</replaceable>|<replaceable>no</replaceable>|<replaceable>false</replaceable></term>
1532
1533                 <listitem>
1534                   <para>Enable or disable the flooding of local broadcast
1535                   packets (e.g. packets with IP destination 192.168.1.255).
1536                   Defaults to <replaceable>yes</replaceable>.</para>
1537                 </listitem>
1538               </varlistentry>
1539
1540               <varlistentry>
1541                 <term><option>PlParam</option> BmfInterface
1542                 <replaceable>interface</replaceable></term>
1543
1544                 <listitem>
1545                   <para>Specifies the name of the BMF network interface.
1546                   Defaults to <replaceable>bmf0</replaceable>.</para>
1547                 </listitem>
1548               </varlistentry>
1549
1550               <varlistentry>
1551                 <term><option>PlParam</option> BmfInterfaceIp
1552                 <replaceable>ipaddr/prefix</replaceable></term>
1553
1554                 <listitem>
1555                   <para>Specifies the IP address and netmask for the BMF
1556                   network interface. By default, the IP address of the first
1557                   OLSR interface is copied. The default prefix is
1558                   <replaceable>32</replaceable>.</para>
1559                 </listitem>
1560               </varlistentry>
1561
1562               <varlistentry>
1563                 <term><option>PlParam</option> CapturePacketsOnOlsrInterfaces
1564                 <replaceable>yes</replaceable>|<replaceable>true</replaceable>|<replaceable>no</replaceable>|<replaceable>false</replaceable></term>
1565
1566                 <listitem>
1567                   <para>Enables or disables capturing packets on the
1568                   OLSR-enabled interfaces (in promiscuous mode). The multicast
1569                   (and, if configured, local broadcast) packets sent on the
1570                   non-OLSR network interfaces and on the BMF network interface
1571                   will always be flooded over the OLSR network. If this
1572                   parameter is <replaceable>yes</replaceable>, also the
1573                   packets sent on the OLSR-enabled network interfaces will be
1574                   flooded over the OLSR network. Note, that his parameter
1575                   should be set consistently on all hosts throughout the
1576                   network. If not, hosts may receive multicast packets in
1577                   duplicate. Defaults to <replaceable>no</replaceable>.</para>
1578                 </listitem>
1579               </varlistentry>
1580
1581               <varlistentry>
1582                 <term><option>PlParam</option> BmfMechanism
1583                 <replaceable>Broadcast</replaceable>|<replaceable>UnicastPromiscuous</replaceable></term>
1584
1585                 <listitem>
1586                   <para>Determines the forwarding mechanism to use. In the
1587                   <replaceable>UnicastPromiscuous</replaceable> mode, packets
1588                   are forwarded (unicast) to the best candidate neighbor;
1589                   other neighbors listen promiscuously. IP-local broadcast is
1590                   not used. This saves air time on 802.11 WLAN networks, on
1591                   which unicast packets are usually sent at a much higher bit
1592                   rate than broadcast packets (which are sent at a basic bit
1593                   rate). Defaults to
1594                   <replaceable>Broadcast</replaceable>.</para>
1595                 </listitem>
1596               </varlistentry>
1597
1598               <varlistentry>
1599                 <term><option>PlParam</option> FanOutLimit
1600                 <replaceable>1</replaceable>-<replaceable>10</replaceable></term>
1601
1602                 <listitem>
1603                   <para>If the number of neighbors to forward to is less than
1604                   or equal to the <option>FanOutLimit</option>, then packets
1605                   to be relayed will be sent via unicast. If the number is
1606                   greater than the <option>FanOutLimit</option>, the packet
1607                   goes out as broadcast. Not used if
1608                   <option>BmfMechanism</option> is set to
1609                   <replaceable>UnicastPromiscuous</replaceable>. Defaults to
1610                   <replaceable>2</replaceable>.</para>
1611                 </listitem>
1612               </varlistentry>
1613
1614               <varlistentry>
1615                 <term><option>PlParam</option> BroadcastRetransmitCount
1616                 <replaceable>1</replaceable>-<replaceable>10</replaceable></term>
1617
1618                 <listitem>
1619                   <para>Determines the number of times BMF will transmit the
1620                   same packet whenever it decides to use broadcast to forward
1621                   a packet. Not used if <option>BmfMechanism</option> is set
1622                   to <replaceable>UnicastPromiscuous</replaceable>. Defaults
1623                   to <replaceable>1</replaceable>.</para>
1624                 </listitem>
1625               </varlistentry>
1626             </variablelist>
1627           </listitem>
1628         </varlistentry>
1629
1630         <varlistentry>
1631           <term><option>LoadPlugin olsrd_dot_draw.so.0.3 {
1632           <replaceable>...</replaceable> }</option></term>
1633
1634           <listitem>
1635             <para>This plugin can be used to query topology graphs via a
1636             network connection. To visualize the queried information, you need
1637             the <productname>GraphViz</productname> package from: <ulink
1638             url="http://www.graphviz.org/">http://www.graphviz.org/</ulink>.
1639             The plugin accepts the following parameters.</para>
1640
1641             <variablelist>
1642               <varlistentry>
1643                 <term><option>PlParam</option> port
1644                 <replaceable>1</replaceable>-<replaceable>65535</replaceable></term>
1645
1646                 <listitem>
1647                   <para>Determines the port number to be queried. Defaults to
1648                   <replaceable>2004</replaceable>.</para>
1649                 </listitem>
1650               </varlistentry>
1651
1652               <varlistentry>
1653                 <term><option>PlParam</option> accept
1654                 <replaceable>ipaddr</replaceable></term>
1655
1656                 <listitem>
1657                   <para>Determines a single IP address from which a connection
1658                   is accepted. Defaults to
1659                   <replaceable>127.0.0.1</replaceable>.</para>
1660                 </listitem>
1661               </varlistentry>
1662             </variablelist>
1663           </listitem>
1664         </varlistentry>
1665
1666         <varlistentry>
1667           <term><option>LoadPlugin olsrd_dyn_gw.so.0.4 {
1668           <replaceable>...</replaceable> }</option></term>
1669
1670           <listitem>
1671             <para>This plugin announces <quote>HNA { 0.0.0.0 0.0.0.0 }</quote>
1672             if it detects a functional static default route. The plugin
1673             constantly tests the default route using ICMP
1674             (<command>ping</command>). Note, that this plugin requires
1675             multi-threading support. Note also, that you need a static default
1676             route on the node. The plugin accepts the following
1677             parameters.</para>
1678
1679             <variablelist>
1680               <varlistentry>
1681                 <term><option>PlParam</option> interval
1682                 <replaceable>1</replaceable>-<replaceable>3600</replaceable></term>
1683
1684                 <listitem>
1685                   <para>Determines the time between ping tests. Defaults to
1686                   <replaceable>5</replaceable>.</para>
1687                 </listitem>
1688               </varlistentry>
1689
1690               <varlistentry>
1691                 <term><option>PlParam</option> ping
1692                 <replaceable>ipaddr</replaceable></term>
1693
1694                 <listitem>
1695                   <para>Adds a ping destination address. If one or more IPv4
1696                   addresses are configured, the plugin performs a ping test on
1697                   these addresses in descending order. If a ping test is
1698                   successful, subsequent addresses won't be pinged No
1699                   default.</para>
1700                 </listitem>
1701               </varlistentry>
1702
1703               <varlistentry>
1704                 <term><option>PlParam</option> hna "<replaceable>ipaddr
1705                 netmask-or-prefix</replaceable>"</term>
1706
1707                 <listitem>
1708                   <para>Specifies an optional HNA entry to be announced if the
1709                   ping test succeeds. Note, that the <option>PlParam</option>
1710                   sequence matters: to link a specific HNA entry to a ping
1711                   test, add the desired <replaceable>hna</replaceable>
1712                   parameter followed by one or more
1713                   <replaceable>ping</replaceable> parameters. Defaults to
1714                   <replaceable>0.0.0.0 0.0.0.0</replaceable>.</para>
1715                 </listitem>
1716               </varlistentry>
1717             </variablelist>
1718           </listitem>
1719         </varlistentry>
1720
1721         <varlistentry>
1722           <term><option>LoadPlugin olsrd_dyn_gw_plain.so.0.4 {
1723           <replaceable>...</replaceable> }</option></term>
1724
1725           <listitem>
1726             <para>This plugin announces <quote>HNA { 0.0.0.0 0.0.0.0 }</quote>
1727             if it detects a static default route. To maintain the default
1728             route, you need an external program such as a cron job. The plugin
1729             accepts no parameters.</para>
1730           </listitem>
1731         </varlistentry>
1732
1733         <varlistentry>
1734           <term><option>LoadPlugin olsrd_httpinfo.so.0.1 {
1735           <replaceable>...</replaceable> }</option></term>
1736
1737           <listitem>
1738             <para>This plugin can be used to query internal information via a
1739             web browser. The plugin implements a tiny HTTP server and
1740             publishes information on several pages. The plugin accepts the
1741             following parameters.</para>
1742
1743             <variablelist>
1744               <varlistentry>
1745                 <term><option>PlParam</option> port
1746                 <replaceable>1</replaceable>-<replaceable>65535</replaceable></term>
1747
1748                 <listitem>
1749                   <para>Determines the port number to be queried. No default,
1750                   <replaceable>8080</replaceable> recommended.</para>
1751                 </listitem>
1752               </varlistentry>
1753
1754               <varlistentry>
1755                 <term><option>PlParam</option> host
1756                 <replaceable>ipaddr</replaceable></term>
1757
1758                 <term><option>PlParam</option> host4
1759                 <replaceable>ipaddr</replaceable></term>
1760
1761                 <listitem>
1762                   <para>Adds a single IPv4 address to the list of allowed
1763                   source addresses. No default.</para>
1764                 </listitem>
1765               </varlistentry>
1766
1767               <varlistentry>
1768                 <term><option>PlParam</option> net "<replaceable>ipaddr
1769                 netmask</replaceable>"</term>
1770
1771                 <term><option>PlParam</option> net4 "<replaceable>ipaddr
1772                 netmask</replaceable>"</term>
1773
1774                 <listitem>
1775                   <para>Adds an IPv4 network range to the list of allowed
1776                   source addresses. No default.</para>
1777                 </listitem>
1778               </varlistentry>
1779
1780               <varlistentry>
1781                 <term><option>PlParam</option> host6
1782                 <replaceable>IPv6-address</replaceable></term>
1783
1784                 <listitem>
1785                   <para>Adds a single IPv6 address to the list of allowed
1786                   source addresses. No default.</para>
1787                 </listitem>
1788               </varlistentry>
1789
1790               <varlistentry>
1791                 <term><option>PlParam</option> net6 "<replaceable>IPv6-address
1792                 0-128</replaceable>"</term>
1793
1794                 <listitem>
1795                   <para>Adds an IPv6 network range to the list of allowed
1796                   source addresses. No default.</para>
1797                 </listitem>
1798               </varlistentry>
1799
1800               <varlistentry>
1801                 <term><option>PlParam</option> resolve
1802                 <replaceable>yes</replaceable>|<replaceable>true</replaceable>|<replaceable>no</replaceable>|<replaceable>false</replaceable></term>
1803
1804                 <listitem>
1805                   <para>Determines if the plugin tries to resolve IP addresses
1806                   to names when generating output. Note, that if you are using
1807                   private IP addresses in your mesh, you also need to load
1808                   <option>olsrd_nameservice.so.0.3</option> and link the local
1809                   <filename>/etc/hosts</filename> file to the
1810                   <option>hosts-file</option> generated by this plugin.
1811                   Otherwise this option slows down the plugins operation.
1812                   Defaults to <replaceable>no</replaceable>.</para>
1813                 </listitem>
1814               </varlistentry>
1815             </variablelist>
1816           </listitem>
1817         </varlistentry>
1818
1819         <varlistentry>
1820           <term><option>LoadPlugin olsrd_lq_etx_ff.so.0.1 {
1821           <replaceable>...</replaceable> }</option></term>
1822
1823           <listitem>
1824             <para>This plugin realized the LQ/ETX detection algorithm based on
1825             OLSR packet loss. This algorithm is compatible to the LQ
1826             calculation used by previous versions of
1827             <productname>olsrd</productname>, so this algorithm is also the
1828             compiled-in default. Note, that <productname>olsrd</productname>
1829             needs to send large signaling packet for this to work optimal,
1830             which is only true if you have a larger mesh (&gt;50 nodes). The
1831             plugin accepts no parameters.</para>
1832           </listitem>
1833         </varlistentry>
1834
1835         <varlistentry>
1836           <term><option>LoadPlugin olsrd_lq_etx_float.so.0.1 {
1837           <replaceable>...</replaceable> }</option></term>
1838
1839           <listitem>
1840             <para>This plugin calculates the link quality based on HELLO and
1841             LQ_HELLO message loss. While calculating, it uses floating point
1842             math. Note, that HELLO messages trigger a send-buffer-flush, so
1843             basically HELLOs are sent in small packets. Because the packet
1844             loss for small packets is much lower than for large packets, these
1845             algorithms may not discover optimal routes. The plugin accepts the
1846             following parameters.</para>
1847
1848             <variablelist>
1849               <varlistentry>
1850                 <term><option>PlParam</option> LinkQualityAging
1851                 <replaceable>0.01</replaceable>-<replaceable>1.0</replaceable></term>
1852
1853                 <listitem>
1854                   <para>This setting controls the LQ/ETX change speed for the
1855                   plugin. A higher value will result in faster LQ/ETX changes.
1856                   Defaults to <replaceable>0.1</replaceable>.</para>
1857                 </listitem>
1858               </varlistentry>
1859             </variablelist>
1860           </listitem>
1861         </varlistentry>
1862
1863         <varlistentry>
1864           <term><option>LoadPlugin olsrd_lq_etx_fpm.so.0.1 {
1865           <replaceable>...</replaceable> }</option></term>
1866
1867           <listitem>
1868             <para>This plugin calculates the link quality based on HELLO and
1869             LQ_HELLO message loss. While calculating, it uses integer-based
1870             fixed point math (FPM). Note, that HELLO messages trigger a
1871             send-buffer-flush, so basically HELLOs are sent in small packets.
1872             Because the packet loss for small packets is much lower than for
1873             large packets, these algorithms may not discover optimal routes.
1874             The plugin accepts the following parameters.</para>
1875
1876             <variablelist>
1877               <varlistentry>
1878                 <term><option>PlParam</option> LinkQualityAging
1879                 <replaceable>0.01</replaceable>-<replaceable>1.0</replaceable></term>
1880
1881                 <listitem>
1882                   <para>This setting controls the LQ/ETX change speed for the
1883                   plugin. A higher value will result in faster LQ/ETX changes.
1884                   Defaults to <replaceable>0.1</replaceable>.</para>
1885                 </listitem>
1886               </varlistentry>
1887             </variablelist>
1888           </listitem>
1889         </varlistentry>
1890
1891         <varlistentry>
1892           <term><option>LoadPlugin olsrd_lq_etx_rfc.so.0.1 {
1893           <replaceable>...</replaceable> }</option></term>
1894
1895           <listitem>
1896             <para>This plugin realizes the hop-optimized metric required by
1897             RFC 3626. You can load this plugin if you require standard-conform
1898             operation.</para>
1899
1900             <variablelist>
1901               <varlistentry>
1902                 <term><option>PlParam</option> UseHysteresis
1903                 <replaceable>yes</replaceable>|<replaceable>no</replaceable></term>
1904
1905                 <listitem>
1906                   <para>If set to <replaceable>yes,</replaceable> hysteresis
1907                   will be used as explained in section 14 of RFC 3626. The
1908                   setting determines if hysteresis is used. Defaults to
1909                   <replaceable>no</replaceable>.</para>
1910                 </listitem>
1911               </varlistentry>
1912
1913               <varlistentry>
1914                 <term><option>PlParam</option> HystScaling
1915                 <replaceable>0.01</replaceable>-<replaceable>0.99</replaceable></term>
1916
1917                 <listitem>
1918                   <para>Sets the scaling value used by the hysteresis
1919                   algorithm. This must be a positive floating point value
1920                   smaller than <replaceable>1.0</replaceable>. Consult RFC
1921                   3626 for details. Defaults to
1922                   <replaceable>0.5</replaceable>.</para>
1923                 </listitem>
1924               </varlistentry>
1925
1926               <varlistentry>
1927                 <term><option>PlParam</option> HystThrHigh
1928                 <replaceable>0.0</replaceable>-<replaceable>1.0</replaceable></term>
1929
1930                 <listitem>
1931                   <para>This option sets the upper threshold for accepting a
1932                   link in hysteresis calculation. The value must be higher
1933                   than the one set as the lower threshold. Defaults to
1934                   <replaceable>0.8</replaceable>.</para>
1935                 </listitem>
1936               </varlistentry>
1937
1938               <varlistentry>
1939                 <term><option>PlParam</option> HystThrLow
1940                 <replaceable>0.0</replaceable>-<replaceable>1.0</replaceable></term>
1941
1942                 <listitem>
1943                   <para>This option sets the lower threshold for setting a
1944                   link to asymmetric using hysteresis. The value must be lower
1945                   than the one set as the upper threshold. Defaults to
1946                   <replaceable>0.3</replaceable>.</para>
1947                 </listitem>
1948               </varlistentry>
1949             </variablelist>
1950           </listitem>
1951         </varlistentry>
1952
1953         <varlistentry>
1954           <term><option>LoadPlugin olsrd_mini.so.0.1 {
1955           <replaceable>...</replaceable> }</option></term>
1956
1957           <listitem>
1958             <para>This plugin is an example to be copied if you want to
1959             program a new plugin. The plugin accepts the following
1960             parameters.</para>
1961
1962             <variablelist>
1963               <varlistentry>
1964                 <term><option>PlParam</option> test
1965                 "<replaceable>some-text</replaceable>"</term>
1966
1967                 <listitem>
1968                   <para>Prints out some text during plugin initialization. No
1969                   default.</para>
1970                 </listitem>
1971               </varlistentry>
1972             </variablelist>
1973           </listitem>
1974         </varlistentry>
1975
1976         <varlistentry>
1977           <term><option>LoadPlugin olsrd_nameservice.so.0.3 {
1978           <replaceable>...</replaceable> }</option></term>
1979
1980           <listitem>
1981             <para>This plugin floods node information through the mesh
1982             piggy-backed on the OLSR protocol. It also collects information
1983             received by other nodes and stores that information in different
1984             text files on a regularly basis. The plugin accepts the following
1985             parameters.</para>
1986
1987             <variablelist>
1988               <title>General</title>
1989
1990               <varlistentry>
1991                 <term><option>PlParam</option> interval
1992                 <replaceable>1</replaceable>-<replaceable>3968</replaceable></term>
1993
1994                 <listitem>
1995                   <para>Determines the interval for sending NAME messages in
1996                   seconds. Defaults to <replaceable>120</replaceable> (2
1997                   minutes).</para>
1998                 </listitem>
1999               </varlistentry>
2000
2001               <varlistentry>
2002                 <term><option>PlParam</option> timeout
2003                 <replaceable>1.0</replaceable>-<replaceable>3968.0</replaceable></term>
2004
2005                 <listitem>
2006                   <para>Determines the validity time for received NAME
2007                   messages in seconds. Defaults to
2008                   <replaceable>1800.0</replaceable> (30 minutes)</para>
2009                 </listitem>
2010               </varlistentry>
2011             </variablelist>
2012
2013             <variablelist>
2014               <title>Host Names</title>
2015
2016               <varlistentry>
2017                 <term><option>PlParam</option> name
2018                 <replaceable>hostname</replaceable></term>
2019
2020                 <listitem>
2021                   <para>Configures a host name for the
2022                   <productname>olsrd</productname> node. This name together
2023                   with the main IP address of <productname>olsrd</productname>
2024                   is flooded though the mesh. You can specify this parameter
2025                   more than once to flood different names. No default.</para>
2026                 </listitem>
2027               </varlistentry>
2028
2029               <varlistentry>
2030                 <term><option>PlParam</option> suffix
2031                 <replaceable>dotname</replaceable></term>
2032
2033                 <listitem>
2034                   <para>Configures a suffix which is appended to all received
2035                   names. No default, but <replaceable>.olsr</replaceable>
2036                   (with a dot) is recommended to prevent DNS name
2037                   spoofing.</para>
2038                 </listitem>
2039               </varlistentry>
2040
2041               <varlistentry>
2042                 <term><option>PlParam</option> hosts-file
2043                 <replaceable>filename</replaceable></term>
2044
2045                 <listitem>
2046                   <para>The plugin writes received IP addresses and names to a
2047                   resolver compatible file which is updated on a regularly
2048                   basis. To overwrite the local hosts file, specify
2049                   <filename>/etc/hosts</filename> (Linux, BSD) or
2050                   <filename>c:\\windows\\system32\\drivers\\etc\\hosts</filename>
2051                   (Windows). Defaults to
2052                   <filename>/var/run/hosts_olsr</filename> (Linux, BSD) or
2053                   <filename>c:\windows\hosts_olsr</filename> (Windows).</para>
2054                 </listitem>
2055               </varlistentry>
2056
2057               <varlistentry>
2058                 <term><option>PlParam</option> add-hosts
2059                 <replaceable>filename</replaceable></term>
2060
2061                 <listitem>
2062                   <para>Configures a file which contents are appended when
2063                   writing the <option>hosts-file</option>. If
2064                   <productname>olsrd</productname> is configured to overwrite
2065                   your /etc/hosts file, you may rename your current /etc/hosts
2066                   file and configure this parameter to preserve any static
2067                   entries. No default.</para>
2068                 </listitem>
2069               </varlistentry>
2070
2071               <varlistentry>
2072                 <term><option>PlParam</option> name-change-script
2073                 <replaceable>filename</replaceable></term>
2074
2075                 <listitem>
2076                   <para>Configures a shell script which is executed after
2077                   updating the <option>hosts-file</option>. Can be used to
2078                   update a website or database. No default.</para>
2079                 </listitem>
2080               </varlistentry>
2081
2082               <varlistentry>
2083                 <term><option>PlParam</option> sighup-pid-file
2084                 <replaceable>filename</replaceable></term>
2085
2086                 <listitem>
2087                   <para>Sends a SIGHUP to the process specified by the pidfile
2088                   (usually <filename>/var/run/dnsmasq.pid</filename>) when the
2089                   host name table changes. This is useful for letting
2090                   <productname>dnsmasq</productname> or
2091                   <productname>bind</productname> know they have to reload
2092                   their hosts file. Linux or BSD only, no default.</para>
2093                 </listitem>
2094               </varlistentry>
2095
2096               <varlistentry>
2097                 <term><option>PlParam</option>
2098                 <replaceable>[ipaddr]</replaceable>
2099                 <replaceable>hostname</replaceable></term>
2100
2101                 <listitem>
2102                   <para>Adds a host name to be announced for the specified IP
2103                   address. Note, that this parameter is not commonly used,
2104                   specify the <option>name</option> parameter instead (see
2105                   above). The IP address has to be either from one of the
2106                   <productname>olsrd</productname> interfaces or within a
2107                   configured HNA network. This parameter can be specified
2108                   multiple times. No default.</para>
2109                 </listitem>
2110               </varlistentry>
2111             </variablelist>
2112
2113             <variablelist>
2114               <title>Services</title>
2115
2116               <varlistentry>
2117                 <term><option>PlParam</option> service
2118                 "<replaceable>announcement</replaceable>"</term>
2119
2120                 <listitem>
2121                   <para>Floods the configured service announcement through the
2122                   mesh. The announcement must include 3 fields separated with
2123                   a pipe character:
2124                   <replaceable>URL</replaceable>|<replaceable>Protocol</replaceable>|<replaceable>Description</replaceable>.
2125                   The <replaceable>URL</replaceable> field needs to start with
2126                   a protocol id, determines an IP or host.suffix combination
2127                   and adds a port number. Examples:
2128                   <quote>http://10.0.0.1:80</quote> or
2129                   <quote>ftp://myname.olsr:20</quote>.
2130                   <productname>olsrd</productname> also checks, if the address
2131                   is a local IP address, is included with any configured HNA
2132                   range, or is equal to a configured <option>name</option> and
2133                   <option>suffix</option> parameter. The
2134                   <replaceable>Protocol</replaceable> field indicates either
2135                   <replaceable>tcp</replaceable> or
2136                   <replaceable>udp</replaceable>. Use any non-empty text for
2137                   the <replaceable>Description</replaceable> field. You can
2138                   specify this parameter more than once to flood different
2139                   services. No default.</para>
2140                 </listitem>
2141               </varlistentry>
2142
2143               <varlistentry>
2144                 <term><option>PlParam</option> services-file
2145                 <replaceable>filename</replaceable></term>
2146
2147                 <listitem>
2148                   <para>The plugin writes received service announcements to a
2149                   file which is updated on a regularly basis. Defaults to
2150                   <filename>/var/run/services_olsr</filename> (Linux, BSD) or
2151                   <filename>c:\windows\services_olsr</filename>
2152                   (Windows).</para>
2153                 </listitem>
2154               </varlistentry>
2155
2156               <varlistentry>
2157                 <term><option>PlParam</option> services-change-script
2158                 <replaceable>filename</replaceable></term>
2159
2160                 <listitem>
2161                   <para>Configures a shell script which is executed after
2162                   updating the <option>services-file</option>. No
2163                   default.</para>
2164                 </listitem>
2165               </varlistentry>
2166             </variablelist>
2167
2168             <variablelist>
2169               <title>MAC Addresses</title>
2170
2171               <varlistentry>
2172                 <term><option>PlParam</option> mac
2173                 <replaceable>xx:xx:xx:xx:xx:xx[,0-255]</replaceable></term>
2174
2175                 <listitem>
2176                   <para>Floods the configured MAC address through the mesh.
2177                   This MAC address may be used to fine control captive portal
2178                   solutions based on MAC adresses. The optional decimal number
2179                   designates a class. You can specify this parameter more than
2180                   once to flood different MAC addresses. No default.</para>
2181                 </listitem>
2182               </varlistentry>
2183
2184               <varlistentry>
2185                 <term><option>PlParam</option> macs-file
2186                 <replaceable>filename</replaceable></term>
2187
2188                 <listitem>
2189                   <para>The plugin writes received MAC adresses to a file
2190                   which is updated on a regularly basis. Defaults to
2191                   <filename>/var/run/macs_olsr</filename> (Linux, BSD) or
2192                   <filename>c:\windows\macs_olsr</filename> (Windows).</para>
2193                 </listitem>
2194               </varlistentry>
2195
2196               <varlistentry>
2197                 <term><option>PlParam</option> macs-change-script
2198                 <replaceable>filename</replaceable></term>
2199
2200                 <listitem>
2201                   <para>Configures a shell script which is executed after
2202                   updating the <option>macs-file</option>. No default.</para>
2203                 </listitem>
2204               </varlistentry>
2205             </variablelist>
2206
2207             <variablelist>
2208               <title>DNS Forwarders</title>
2209
2210               <varlistentry>
2211                 <term><option>PlParam</option> dns-server
2212                 <replaceable>ipaddr</replaceable></term>
2213
2214                 <listitem>
2215                   <para>Announces the configured IP address which should
2216                   indicate a DNS server or DNS forwarder. If you configure
2217                   <replaceable>0.0.0.0</replaceable>, the main IP address of
2218                   <productname>olsrd</productname> will be replaced. Other
2219                   running <productname>olsrd</productname> instances will
2220                   receive a list of announced DNS server IP addresses, select
2221                   the currently best reachable IP address, and write the
2222                   selected IP address to the <option>resolv-file</option>
2223                   file.</para>
2224                 </listitem>
2225               </varlistentry>
2226
2227               <varlistentry>
2228                 <term><option>PlParam</option> resolv-file
2229                 <replaceable>filename</replaceable></term>
2230
2231                 <listitem>
2232                   <para>Defaults to
2233                   <filename>/var/run/resolvconf_olsr</filename> (Linux, BSD)
2234                   or <filename>c:\windows\resolvconf_olsr</filename>
2235                   (Windows).</para>
2236                 </listitem>
2237               </varlistentry>
2238             </variablelist>
2239
2240             <variablelist>
2241               <title>GPS Positions</title>
2242
2243               <varlistentry>
2244                 <term><option>PlParam</option> lat
2245                 <replaceable>latitude</replaceable></term>
2246
2247                 <listitem>
2248                   <para>Configures a decimal float value (latitude) for this
2249                   node to be flooded in the mesh. No default.</para>
2250                 </listitem>
2251               </varlistentry>
2252
2253               <varlistentry>
2254                 <term><option>PlParam</option> lon
2255                 <replaceable>longitude</replaceable></term>
2256
2257                 <listitem>
2258                   <para>Configures a decimal float value (longitude) for this
2259                   node to be flooded in the mesh. No default.</para>
2260                 </listitem>
2261               </varlistentry>
2262
2263               <varlistentry>
2264                 <term><option>PlParam</option> latlon-file
2265                 <replaceable>filename</replaceable></term>
2266
2267                 <listitem>
2268                   <para>The plugin writes received positions to a file which
2269                   is updated on a regularly basis. The file format provides
2270                   javascript-compatible function calls ready for inclusion to
2271                   a web page. The file is written only, if the
2272                   <option>lat</option> and <option>lon</option> parameters are
2273                   set. Defaults to <filename>/var/run/latlon.js</filename>
2274                   (Linux, BSD) or <filename>c:\windows\latlon.js</filename>
2275                   (Windows).</para>
2276                 </listitem>
2277               </varlistentry>
2278
2279               <varlistentry>
2280                 <term><option>PlParam</option> latlon-infile
2281                 <replaceable>filename</replaceable></term>
2282
2283                 <listitem>
2284                   <para>Configures a file to read positions from. This
2285                   parameter is meant to be used by a moving GPS receiver,
2286                   which may write comma separated decimal latitude and
2287                   longitude to this file. This will overwrite the
2288                   <option>lat</option> and <option>lon</option> parameters
2289                   during runtime. No default.</para>
2290                 </listitem>
2291               </varlistentry>
2292             </variablelist>
2293           </listitem>
2294         </varlistentry>
2295
2296         <varlistentry>
2297           <term><option>LoadPlugin olsrd_quagga.so.0.2.2 {
2298           <replaceable>...</replaceable> }</option></term>
2299
2300           <listitem>
2301             <para>This plugin allows you to import or export
2302             <productname>olsrd</productname> routing information from or to
2303             the <productname>quagga</productname> routing daemon (see <ulink
2304             url="http://www.quagga.net/">http://www.quagga.net/</ulink>). You
2305             need a patched and running <productname>quagga</productname>
2306             routing daemon to load this plugin successfully. The plugin
2307             accepts the following parameters.</para>
2308
2309             <variablelist>
2310               <varlistentry>
2311                 <term><option>PlParam</option> redistribute
2312                 <replaceable>system</replaceable>|<replaceable>kernel</replaceable>|<replaceable>connect</replaceable>|<replaceable>static</replaceable>|<replaceable>rip</replaceable>|<replaceable>ripng</replaceable>|<replaceable>ospf</replaceable>|<replaceable>ospf6</replaceable>|<replaceable>isis</replaceable>|<replaceable>bgp</replaceable>|<replaceable>hsls</replaceable></term>
2313
2314                 <listitem>
2315                   <para>Notifies <productname>Zebra</productname> to add a
2316                   specific protocol for redistribution. You may add this
2317                   parameter more than once.</para>
2318                 </listitem>
2319               </varlistentry>
2320
2321               <varlistentry>
2322                 <term><option>PlParam</option> ExportRoutes
2323                 <replaceable>only/both</replaceable></term>
2324
2325                 <listitem>
2326                   <para>Determines, if <productname>olsrd</productname> should
2327                   <replaceable>only</replaceable> export routes to
2328                   <productname>quagga</productname> or should export routes to
2329                   <replaceable>both</replaceable>
2330                   <productname>quagga</productname> and kernel. If this
2331                   parameter is unset, no routes are exported to
2332                   <productname>quagga</productname>.</para>
2333                 </listitem>
2334               </varlistentry>
2335
2336               <varlistentry>
2337                 <term><option>PlParam</option> Distance
2338                 <replaceable>0</replaceable>-<replaceable>255</replaceable></term>
2339
2340                 <listitem>
2341                   <para>Configures the administrative distance for routes
2342                   exported to <productname>Zebra</productname>. Defaults to
2343                   <replaceable>0</replaceable>.</para>
2344                 </listitem>
2345               </varlistentry>
2346
2347               <varlistentry>
2348                 <term><option>PlParam</option> LocalPref
2349                 <replaceable>yes</replaceable>|<replaceable>true</replaceable>|<replaceable>no</replaceable>|<replaceable>false</replaceable></term>
2350
2351                 <listitem>
2352                   <para>Sets the SELECTED flag on the routes exported to
2353                   <productname>Zebra</productname> which means these routes
2354                   are preferred in any case. Defaults to
2355                   <replaceable>no</replaceable>.</para>
2356                 </listitem>
2357               </varlistentry>
2358             </variablelist>
2359           </listitem>
2360         </varlistentry>
2361
2362         <varlistentry>
2363           <term><option>LoadPlugin olsrd_secure.so.0.5 {
2364           <replaceable>...</replaceable> }</option></term>
2365
2366           <listitem>
2367             <para>This plugin uses a secret pre shared key for signature
2368             generation and verification of incoming OLSR messages. All nodes
2369             that participate in an OLSR routing domain need to use the same
2370             key. The key as a size of 128-bits and is read in from a key file
2371             which should contain 16 bytes of binary data. The plugin accepts
2372             the following parameters.</para>
2373
2374             <variablelist>
2375               <varlistentry>
2376                 <term><option>PlParam</option> keyfile
2377                 <replaceable>filename</replaceable></term>
2378
2379                 <listitem>
2380                   <para>Configure a filename to read the pre shared key from.
2381                   Defaults to
2382                   <filename>/etc/olsrd.d/olsrd_secure_key</filename>.</para>
2383                 </listitem>
2384               </varlistentry>
2385             </variablelist>
2386           </listitem>
2387         </varlistentry>
2388
2389         <varlistentry>
2390           <term><option>LoadPlugin olsrd_txtinfo.so.0.1 {
2391           <replaceable>...</replaceable> }</option></term>
2392
2393           <listitem>
2394             <para>This plugin can be used to query internal information via
2395             the <guilabel>wget</guilabel> command. This plugin is a de-bloated
2396             and scriptable version of the httpinfo-Plugin. Example usage:
2397             <command>wget -q -O - http://localhost:2006/neighbours</command>
2398             to display the current neighbour table. The plugin accepts the
2399             following parameters.</para>
2400
2401             <variablelist>
2402               <varlistentry>
2403                 <term><option>PlParam</option> port
2404                 <replaceable>1</replaceable>-<replaceable>65535</replaceable></term>
2405
2406                 <listitem>
2407                   <para>Determines the port number to be queried. Defaults to
2408                   <replaceable>2006</replaceable>.</para>
2409                 </listitem>
2410               </varlistentry>
2411
2412               <varlistentry>
2413                 <term><option>PlParam</option> accept
2414                 <replaceable>ipaddr</replaceable></term>
2415
2416                 <listitem>
2417                   <para>Adds a single IP address to the list of allowed source
2418                   addresses. Defaults to <replaceable>127.0.0.1</replaceable>
2419                   for IPv4 or <replaceable>::1</replaceable> for IPv6.</para>
2420                 </listitem>
2421               </varlistentry>
2422             </variablelist>
2423           </listitem>
2424         </varlistentry>
2425
2426         <varlistentry>
2427           <term><option>LoadPlugin olsrd_watchdog.so.0.1 {
2428           <replaceable>...</replaceable> }</option></term>
2429
2430           <listitem>
2431             <para>This plugin writes the current time to a file on a regularly
2432             basis. This can be used to detect a freezed instance of
2433             <productname>olsrd</productname> by an external script or cron
2434             job. The plugin accepts the following parameters.</para>
2435
2436             <variablelist>
2437               <varlistentry>
2438                 <term><option>PlParam</option> file
2439                 <replaceable>filename</replaceable></term>
2440
2441                 <listitem>
2442                   <para>Determines the file to be written. Defaults to
2443                   <filename>/tmp/olsr.watchdog</filename>.</para>
2444                 </listitem>
2445               </varlistentry>
2446
2447               <varlistentry>
2448                 <term><option>PlParam</option> interval
2449                 <replaceable>1</replaceable>-<replaceable>3600</replaceable></term>
2450
2451                 <listitem>
2452                   <para>Determines the update interval in seconds. Defaults to
2453                   <replaceable>5</replaceable>.</para>
2454                 </listitem>
2455               </varlistentry>
2456             </variablelist>
2457           </listitem>
2458         </varlistentry>
2459       </variablelist>
2460     </refsect1>
2461
2462     <refsect1>
2463       <title>Misc</title>
2464
2465       <para>The homepage of <productname>olsrd</productname> is <ulink
2466       url="http://www.olsr.org">http://www.olsr.org</ulink></para>
2467     </refsect1>
2468
2469     <refsect1>
2470       <title>Files</title>
2471
2472       <para><filename>/etc/olsrd.conf</filename></para>
2473     </refsect1>
2474
2475     <refsect1>
2476       <title>See Also</title>
2477
2478       <simplelist type="inline">
2479         <member><xref endterm="olsrd_8-title" linkend="olsrd_8" /></member>
2480       </simplelist>
2481     </refsect1>
2482   </refentry>
2483 </article>