Removed olsrd-switch as well as -H (emul interface)
authorSven-Ola Tuecke <sven-ola@gmx.de>
Sat, 3 Jan 2009 20:26:21 +0000 (21:26 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Sat, 3 Jan 2009 20:26:21 +0000 (21:26 +0100)
22 files changed:
Makefile
README
README-Olsr-Switch.html [deleted file]
files/Makefile
files/olsr_switch.8.gz [deleted file]
files/olsrd-manpages.xml
files/olsrd.8.gz
files/olsrd.conf.5.gz
src/interfaces.c
src/olsr_cfg.c
src/olsr_cfg.h
src/olsr_switch/Makefile [deleted file]
src/olsr_switch/commands.h [deleted file]
src/olsr_switch/link_rules.c [deleted file]
src/olsr_switch/link_rules.h [deleted file]
src/olsr_switch/main.c [deleted file]
src/olsr_switch/ohs_cmd.c [deleted file]
src/olsr_switch/ohs_cmd.h [deleted file]
src/olsr_switch/olsr_host_switch.h [deleted file]
src/process_routes.c
src/unix/ifnet.c
src/win32/ifnet.c

index 3b3fb55..f76c240 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -54,12 +54,11 @@ LDFLAGS +=  -Wl,--out-implib=libolsrd.a
 LDFLAGS +=     -Wl,--export-all-symbols
 endif
 
-SWITCHDIR =    src/olsr_switch
 CFGDIR =       src/cfgparser
 #include $(CFGDIR)/local.mk
-TAG_SRCS =     $(SRCS) $(HDRS) $(wildcard $(CFGDIR)/*.[ch] $(SWITCHDIR)/*.[ch])
+TAG_SRCS =     $(SRCS) $(HDRS) $(wildcard $(CFGDIR)/*.[ch])
 
-.PHONY: default_target switch
+.PHONY: default_target
 default_target: $(EXENAME)
 
 $(EXENAME):    $(OBJS) src/builddata.o
@@ -68,9 +67,6 @@ $(EXENAME):   $(OBJS) src/builddata.o
 cfgparser:     $(CFGDEPS) src/builddata.o
                $(MAKE) -C $(CFGDIR)
 
-switch:                
-       $(MAKECMD) -C $(SWITCHDIR)
-
 show-ignored-warnings:
        CC="$(CC)" $(TOPDIR)/gcc-warnings $(ALL_WARNINGS) > /dev/null
 
@@ -100,7 +96,6 @@ uberclean:   clean clean_libs
        -rm -f $(TAGFILE)
 #      BSD-xargs has no "--no-run-if-empty" aka "-r"
        find . \( -name '*.[od]' -o -name '*~' \) -not -path "*/.hg*" -print0 | xargs -0 rm -f
-       $(MAKECMD) -C $(SWITCHDIR) clean
        $(MAKECMD) -C $(CFGDIR) clean
 
 install: install_olsrd
@@ -240,6 +235,6 @@ watchdog:
                $(MAKECMD) -C lib/watchdog
                $(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) install
 
-build_all:     all switch libs
+build_all:     all libs
 install_all:   install install_libs
 clean_all:     uberclean clean_libs
diff --git a/README b/README
index 91d2b52..c4a9a27 100644 (file)
--- a/README
+++ b/README
@@ -228,7 +228,6 @@ To use the plugins add them to the olsrd configuration file.
 COMPONENT/OS   Linux   Win32   FreeBSD NetBSD  OpenBSD OSX
 ------------------------------------------------------------
 olsrd          +/+     +/+     +/+     +/+     +/+     ?
-olsr_switch    +/+     +/+     +/+     +/+     +/+     ?
 ------------------------------------------------------------
 PLUGINS
 bmf            +/+     +/?     +/+     +/+     +/+     -
diff --git a/README-Olsr-Switch.html b/README-Olsr-Switch.html
deleted file mode 100644 (file)
index ef69834..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-       <TITLE>Olsr Switch</TITLE>
-       <STYLE>
-       <!--
-               H1 { color: #000000 }
-               P { color: #000000; font-family: "verdana", "arial", sans-serif; font-size: 10pt }
-               H2 { color: #000000 }
-               H3 { color: #000000 }
-               PRE { color: #000000 }
-       -->
-       </STYLE>
-</HEAD>
-<BODY>
-<H1>Olsr_Switch network simulation</H1>
-</P>
-<H2>Summary</H2>
-<P>This document gives a brief introduction to the <A HREF="http://www.olsr.org/">olsr.org</A>
-OLSR daemon network simulation extentions and tools. The network
-simulation tool olsr_switch provides olsrd processes running in a
-special <I>host-emultion</I> mode with access to a virtual network.
-Multiple such processes can run on a host. This network can be freely
-manipulated by the user allowing for simulation of dynamic
-large-scale networks. 
-</P>
-<P>Only IPv4 is supported for now. 
-</P>
-<H2>Background</H2>
-<P>olsr_switch was inspired by the uml_switch used to communicate
-between <A HREF="http://user-mode-linux.sourceforge.net/">UML</A>
-instances, which I have used for olsrd testing. Also I remember
-seeing that the guys at LRI working on the <A HREF="http://qolsr.lri.fr/">qolsr</A>
-project has done something similar. 
-</P>
-<P>The target users for this kind of things are probably mainly
-developers and researchers. But it might come in handy for others as
-well. 
-</P>
-<H2>Description</H2>
-<H3>olsr.org</H3>
-<P>The olsr.org OLSR daemon is an implementation of the <A HREF="http://ietf.org/rfc/rfc3626.txt">Optimized
-Link State Routing protocol</A> a IP routing protocol for mobile
-ad-hoc networks. Multiple interesting extensions are available for
-the implementation. Read more at <A HREF="http://www.olsr.org/">olsr.org</A>.
-</P>
-<H3>olsr_switch</H3>
-<P>The application, called olsr_switch, is really a traffic router
-that will allow multiple olsrd instances to connect and communicate
-over TCP via the loopback interface. Connecting to olsr_switch on
-remote hosts will be possible, but it is not implemented at the
-current time. 
-</P>
-<P>Basically olsr_switch works on two datasets - clients and links. A
-client is a connected olsrd process and there are two uni-directional
-link between all nodes(A-&gt;B and B-&gt;A) that can be manipulated
-independently. When receiving traffic from a olsrd client the switch
-will forward this traffic to all other clients to which it has a
-valid link. Links can be set to three different &quot;modes&quot;
-based on the <I>quality</I> set on the link: 
-</P>
-<UL>
-       <LI><P STYLE="margin-bottom: 0in"><B>Open</B>(quality 100) - all
-       traffic will be forwarded over this link. 
-       </P>
-       <LI><P STYLE="margin-bottom: 0in"><B>Closed</B>(quality 0) - no
-       traffic will be forwarded over this link. 
-       </P>
-       <LI><P><B>Lossy</B>(quality 1-99) - in this mode the quality
-       constraint is used as the chance in percentage, for traffic to be
-       forwarded over the link. So if quality is set to 25 there will in
-       average be 75% packet loss. 
-       </P>
-</UL>
-<P>The application provides the user with a prompt/shell where
-various commands for topology manipulation or data retrieval are
-available. A help command is provided for the users convenience. This
-help command will also provide the user with specific help on all
-available commands. More on this later. 
-</P>
-<H3>olsrd host-emulation clients</H3>
-<P>The communication interface against olsr_switch can naturally not
-be 100% transparent for the olsrd process which normally runs on
-UDP/698 on &quot;real&quot; network interfaces. Olsrd itself had to
-be modified to set up a virtual interface connecting to olsr_switch.
-This virtual interface is transparent to all overlying functionality.
-This means that that olsrd host-emulation can run in both RFC and LQ
-mode, and that plugins can be loaded normally etc. But no routes are
-added by the olsrd process. Later on route information might be
-signaled from the olsrd instance to olsr_switch so that a centralized
-route database is available to the user. As of now, you can watch the
-olsrd debug output or easier yet, run one node with the httpinfo
-plugin to get the route/topology/link information. 
-</P>
-<P>Currently olsrd cannot run on both real and host-emulation
-interfaces, but this might change in the future if I get convinced
-that it is useful. No routes can be added by the host-emulating olsrd
-instances, so 
-</P>
-<H2>Building and running</H2>
-<P>As of yet, olsr_switch builds and runs on GNU/Linux and FreeBSD
-systems. 
-</P>
-<H3>Building</H3>
-<P>The olsr.org olsrd source code and pre-compiled packages can be
-downloaded from the olsr.org <A HREF="http://www.olsr.org/index.cgi?action=download">download</A>
-section. But as of now you need the CVS version if you want the
-olsr_switch code. To check out the current snapshot do: 
-</P>
-<PRE>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/olsrd login
-
-cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/olsrd co olsrd-current</PRE><P>
-Now enter the olsrd source directory and do: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">olsrd-current# make</PRE><P>
-to build olsrd itself, and: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">olsrd-current# make switch</PRE><P>
-to build olsr_switch. If no error messages occurred, you should now
-have the two executables <I>olsrd</I> and <I>olsr_switch</I>
-available in the current directory. 
-</P>
-<H3>Running</H3>
-<P>Before starting any olsrd host-emu clients the switch must be
-started. This is done using the command <I>olsr_switch</I> and the
-application will initiate the communication socket and provide the
-user with a prompt for input: 
-</P>
-<PRE>olsrd-current# ./olsr_switch
-olsrd host-switch daemon version 0.1 starting
-Initiating socket TCP port 10150
-OHS command interpreter reading from STDIN
-&gt;</PRE><P>
-<BR><BR>
-</P>
-<P>olsrd_switch has a buildt-in command for starting and
-stopping local olsrd instances and we will learn more about 
-this later. But olsrd can also be ran in host-emulation mode
-from the command line. To start olsrd in host-emulation mode do: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">./olsrd -hemu <B>IP-ADDRESS</B></PRE><P>
-Here <I>IP-ADDRESS</I> will be the IP address that the process will
-set as its main address in the emulation mode. This address has no
-connection to the real IP-stack and can be chosen freely. Of cause,
-no two instances can run using the same IP.<BR>It might be wise to
-have a separate olsrd configuration file for host-emulation. In that
-case issue: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">./olsrd -f <B>FILENAME</B> -hemu <B>IP-ADDRESS</B></PRE><P>
-As of now there is no emulated destination address used. All traffic
-will be passed on regardless of the network address used. Olsrd
-communicates using broadcast/multicast so that multiple &quot;overlapping&quot;
-networks might exist. 
-</P>
-<H2>Command-line interface</H2>
-<P>Blah blah blah 
-</P>
-<H3>help</H3>
-<P>Type 'help cmd' for help on a specific command 
-</P>
-<PRE>&gt; help
-Olsrd host switch version 0.1
-Available commands:
-        help - Help on shell commands
-        exit - Exits olsr host switch
-        log - Displays or sets log bits
-        list - List all connected clients or links
-        link - Manipulate links</PRE><H3>
-list</H3>
-<P>The <I>list</I> command is used for client and link listing. The
-help page states: 
-</P>
-<PRE>&gt; help list
-Usage: <B>list &lt;clients|links&gt;</B>
-Description:
-<I>This command will list all the clients or all the links registered </I>
-<I>by olsr_switch. By default clients are listed.</I></PRE><H3>
-link</H3>
-<P>The <I>link</I> command is used for manipulating links. Here is
-the help page for this command: 
-</P>
-<PRE>&gt; help link
-Usage: <B>link &lt;bi&gt; [srcIP|*] [dstIP|*] [0-100]</B>
-Description:
-<I>This command is used for manipulating olsr links. The link quality </I>
-<I>is a number between 0-100 representing the chance in percentage </I>
-<I>for a packet to be forwarded</I>
-<I>on the link.</I>
-To make the link between 10.0.0.1 and 10.0.0.2 have 50% packetloss do:
- link 10.0.0.1 10.0.0.2 50
-Note that this will only effect the unidirectional link 
-10.0.0.1 -&gt; 10.0.0.2. To make the changes affect traffic 
-in both directions do:
- link bi 10.0.0.1 10.0.0.2 50
-To completely block a link do:
- link 10.0.0.1 10.0.0.2 0
-To make all traffic pass(delete the entry) do:
- link 10.0.0.1 10.0.0.2 100
-Note that &quot;bi&quot; can be used in all these examples.
-Wildcard source and/or destinations are also supported.
-To block all traffic from a node do:
-link 10.0.0.1 * 0
-To set 50% packetloss on all links to 10.0.0.2 do:
- link * 10.0.0.2 50
-To delete all links do:
- link * * 100
-Wildcards can also be used in combination with 'bi'.
-To list all manipulated links use 'list links'.</PRE>
-<H3>olsrd</H3>
-<P>The <I>olsrd</I> command is used for manipulating links. Here is
-the help page for this command: 
-</P>
-<PRE>
-> help olsrd
-Usage: <B>olsrd [start|stop|show|setb|seta] [IP|path|args]</B>
-Description:
-<I>This command is used for managing local olsrd instances from within olsr_switch.</I>
-<I>The command can be configured in runtime using the setb and seta sub-commands.</I>
-To show the current olsrd command-configuration do:
- olsrd show
-To set the olsrd binary path do:
- olsrd setb /full/path/to/olsrd
-To start a olsrd instance with a IP address of 10.0.0.1, do:
- olsrd start 10.0.0.1
-To stop that same instance do:
- olsrd stop 10.0.0.1
-</PRE>
-<H3>others</H3>
-<P>Two other commands are available: 
-</P>
-<UL>
-       <LI><P STYLE="margin-bottom: 0in"><B>exit</B> - terminates
-       olsr_switch. 
-       </P>
-       <LI><P><B>log</B> - sets the log level. 
-       </P>
-</UL>
-<P>Read the help pages for details. 
-</P>
-<H2>Running olsrd in host-emulation mode</H2>
-<P>Now for a real world example of connecting olsrd instances. Let's
-assume we have a modified configuration file, <I>/etc/olsrd.emu.conf</I>
-that we use for host-emu instances. We'll choose the 10.0.0.0/24 IP
-address space for our clients.<BR>First start the olsr_switch in one
-terminal: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">./olsr_switch</PRE><P>
-Now start the olsrd instances in other terminal(s). If you want to
-follow olsrd operation you should use a debug value &gt; 0. To easen
-CPU usage and terminal count you can start multiple instances that
-will run in the background using the <I>-d 0</I> option. In this
-example we'll run our olsrd instances in the foreground using debug
-level 1. Start them off(in separate terminals) using: 
-</P>
-<PRE STYLE="margin-bottom: 0.2in">./olsrd -f /etc/olsrd.emu.conf -hemu 10.0.0.x -d 1</PRE><P>
-where x is 1-8(we'll run 8 instances). The <A HREF="http://www.gnu.org/software/screen/">screen</A>
-terminal multiplexer application is <I>highly</I> recomended for
-making your life easier if working on multiple terminals. 
-</P>
-<P>Here is the output form the 10.0.0.1 instance of olsrd after some
-time: 
-</P>
-<PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
-
---- 20:53:26.58 ---------------------------------------------------- LINKS
-
-IP address       hyst   LQ     lost   total  NLQ    ETX
-10.0.0.8         0.000  1.000  0      10     1.000  1.00
-10.0.0.7         0.000  1.000  0      10     1.000  1.00
-10.0.0.6         0.000  1.000  0      10     1.000  1.00
-10.0.0.5         0.000  1.000  0      10     1.000  1.00
-10.0.0.4         0.000  1.000  0      10     1.000  1.00
-10.0.0.3         0.000  1.000  0      10     1.000  1.00
-10.0.0.2         0.000  1.000  0      10     1.000  1.00
-
---- 20:53:26.58 ------------------------------------------------ NEIGHBORS
-
-IP address       LQ     NLQ    SYM   MPR   MPRS  will
-10.0.0.2         1.000  1.000  YES   NO    NO    3
-10.0.0.3         1.000  1.000  YES   NO    NO    3
-10.0.0.4         1.000  1.000  YES   NO    NO    3
-10.0.0.5         1.000  1.000  YES   NO    NO    3
-10.0.0.6         1.000  1.000  YES   NO    NO    3
-10.0.0.7         1.000  1.000  YES   NO    NO    3
-10.0.0.8         1.000  1.000  YES   NO    NO    3
-
---- 20:53:26.58 ------------------------------------------------- TOPOLOGY
-
-Source IP addr   Dest IP addr     LQ     ILQ    ETX
-</PRE><P>
-We now have our own virtual network! Notice that you can
-start olsrd instances from olsr_switch using the <i>olsrd</i>
-command. The equvivalent of the above command line statement
-would be:
-<PRE>
-olsrd start 10.0.0.x
-</PRE>
-<P>
-Given that the olsrd command is configured properly
-(see olsrd show, setb and seta).
-</P>
-<P>
-At our switch prompt the command
-<I>list</I> yields the following output: 
-</P>
-<PRE>All connected clients:
-        10.0.0.8 - Rx: 647 Tx: 89 LinkCnt: 0
-        10.0.0.7 - Rx: 752 Tx: 105 LinkCnt: 0
-        10.0.0.6 - Rx: 790 Tx: 120 LinkCnt: 0
-        10.0.0.5 - Rx: 809 Tx: 112 LinkCnt: 0
-        10.0.0.4 - Rx: 811 Tx: 125 LinkCnt: 0
-        10.0.0.3 - Rx: 804 Tx: 138 LinkCnt: 0
-        10.0.0.2 - Rx: 805 Tx: 140 LinkCnt: 0
-        10.0.0.1 - Rx: 829 Tx: 119 LinkCnt: 0</PRE><P>
-Hey - everything is running a-ok! 
-</P>
-<H2>Manipulating links</H2>
-<P>So lets create some link trouble. This introduction has become too
-long already, so we'll introduce two simple example conditions: 
-</P>
-<UL>
-       <LI><P STYLE="margin-bottom: 0in">We want 10.0.0.1 only to have a
-       link to 10.0.0.2 and no one else. 
-       </P>
-       <LI><P>We want 10.0.0.8 only to have 25% chance of getting direct
-       traffic trough to 10.0.0.2,3,4 
-       </P>
-</UL>
-<P>Here's what we need to do: 
-</P>
-<PRE>&gt; link bi 10.0.0.1 * 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.8 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.7 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.6 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.5 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.4 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.3 quality 0
-Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.2 quality 0
-
-
-&gt; link bi 10.0.0.1 10.0.0.2 100
-Removing bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.2 quality 100
-
-&gt; list links
-All configured links:
-        10.0.0.8 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.7 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.6 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.5 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.4 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.3 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.3 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.4 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.5 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.6 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.7 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.8 Quality: 0
-</PRE><P>
-Now our first condition is met. First all bidirectional links from
-10.0.0.1 was blocked and then the bidirectional link to 10.0.0.2 was
-opened. Now 10.0.0.1 can only see 10.0.0.2 as a neighbor. Note that
-only manipulated links are listed when issuing 'list links'. olsrd at
-10.0.0.1 now shows: 
-</P>
-<PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
-
---- 21:17:46.06 ---------------------------------------------------- LINKS
-
-IP address       hyst   LQ     lost   total  NLQ    ETX
-10.0.0.2         0.000  1.000  0      10     1.000  1.00
-
---- 21:17:46.06 ------------------------------------------------ NEIGHBORS
-
-IP address       LQ     NLQ    SYM   MPR   MPRS  will
-10.0.0.2         1.000  1.000  YES   YES   NO    3
-
---- 21:17:46.06 ------------------------------------------------- TOPOLOGY
-
-Source IP addr   Dest IP addr     LQ     ILQ    ETX
-10.0.0.2         10.0.0.1         1.000  1.000  1.00
-10.0.0.2         10.0.0.3         1.000  1.000  1.00
-10.0.0.2         10.0.0.4         1.000  1.000  1.00
-10.0.0.2         10.0.0.5         1.000  1.000  1.00
-10.0.0.2         10.0.0.6         1.000  1.000  1.00
-10.0.0.2         10.0.0.7         1.000  1.000  1.00
-10.0.0.2         10.0.0.8         1.000  1.000  1.00</PRE><P>
-works like a charm. Now let's make sure we can meet condition two: 
-</P>
-<PRE>&gt; link bi 10.0.0.8 10.0.0.2 25
-Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.2 quality 25
-
-&gt; link bi 10.0.0.8 10.0.0.3 25
-Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.3 quality 25
-
-&gt; link bi 10.0.0.8 10.0.0.4 25
-Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.4 quality 25
-
-&gt; list links
-All configured links:
-        10.0.0.8 =&gt; 10.0.0.4 Quality: 25
-        10.0.0.8 =&gt; 10.0.0.3 Quality: 25
-        10.0.0.8 =&gt; 10.0.0.2 Quality: 25
-        10.0.0.8 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.7 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.6 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.5 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.4 =&gt; 10.0.0.8 Quality: 25
-        10.0.0.4 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.3 =&gt; 10.0.0.8 Quality: 25
-        10.0.0.3 =&gt; 10.0.0.1 Quality: 0
-        10.0.0.2 =&gt; 10.0.0.8 Quality: 25
-        10.0.0.1 =&gt; 10.0.0.3 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.4 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.5 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.6 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.7 Quality: 0
-        10.0.0.1 =&gt; 10.0.0.8 Quality: 0
-</PRE><P>
-Now for a look at olsrd 10.0.0.8s output: 
-</P>
-<PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
-
---- 21:23:00.35 ---------------------------------------------------- LINKS
-
-IP address       hyst   LQ     lost   total  NLQ    ETX
-10.0.0.7         0.000  1.000  0      10     1.000  1.00
-10.0.0.5         0.000  1.000  0      10     1.000  1.00
-10.0.0.6         0.000  1.000  0      10     1.000  1.00
-10.0.0.2         0.000  0.800  2      10     0.498  2.51
-10.0.0.3         0.000  0.600  4      10     0.498  3.35
-10.0.0.4         0.000  0.900  1      10     0.800  1.39
-
---- 21:23:00.35 ------------------------------------------------ NEIGHBORS
-
-IP address       LQ     NLQ    SYM   MPR   MPRS  will
-10.0.0.2         0.800  0.498  YES   YES   NO    3
-10.0.0.3         0.600  0.498  NO    NO    NO    3
-10.0.0.4         0.900  0.800  YES   NO    NO    3
-10.0.0.5         1.000  1.000  YES   NO    NO    3
-10.0.0.6         1.000  1.000  YES   YES   NO    3
-10.0.0.7         1.000  1.000  YES   YES   NO    3
-
---- 21:23:00.35 ------------------------------------------------- TOPOLOGY
-
-Source IP addr   Dest IP addr     LQ     ILQ    ETX
-10.0.0.2         10.0.0.1         1.000  1.000  1.00
-10.0.0.2         10.0.0.3         1.000  1.000  1.00
-10.0.0.2         10.0.0.4         1.000  1.000  1.00
-10.0.0.2         10.0.0.5         1.000  1.000  1.00
-10.0.0.2         10.0.0.6         1.000  1.000  1.00
-10.0.0.2         10.0.0.7         1.000  1.000  1.00
-10.0.0.2         10.0.0.8         0.898  0.498  2.24
-10.0.0.5         10.0.0.4         1.000  1.000  1.00
-10.0.0.6         10.0.0.8         1.000  1.000  1.00
-10.0.0.7         10.0.0.2         1.000  1.000  1.00
-10.0.0.7         10.0.0.3         1.000  1.000  1.00
-10.0.0.7         10.0.0.8         1.000  1.000  1.00
-</PRE><P>
-Yes, there most certainly are some very weak links here. 
-</P>
-<P>Well, lets leave it at that :-) The command line interface is
-meant to be used by applications as well as humans, so if somebody
-wants to create a GUI front-end that should not be to much work. 
-</P>
-<H2>Performance</H2>
-<P>Regarding CPU load I have not done any real testing, but I did try
-seeing how far I could get on my 1.3Ghz/512MB-RAM desktop system
-running LQ olsrd instances in the background initiated from olsrd_switch. 
-When reaching a certain amount (15+) the cPU load is very high for 
-neighbor detection, but as soon as links stabelize the CPU is almost
-idle again. I have ran with 30+ nodes with no problem. But do not start
-to many instances at the same time.
-</P>
-<P>
-Note that, this
-was only using a idle network(no topology changes except new nodes joining). 
-But as soon as olsrd instances can connect from other hosts one can 
-distribute the load. Also the application will be subject to various future
-optimizations.
-</P>
-<P>
-Network load measurement tools will also be on the to-do list.
-</P>
-<HR>
-<P><I>by <A HREF="mailto:andreto--at--olsr.org">Andreas T&oslash;nnesen</A></I>
-</P>
-</BODY>
-</HTML>
index e3d0573..a06a9bd 100644 (file)
@@ -1,6 +1,5 @@
 MANS += olsrd.8.gz
 MANS += olsrd.conf.5.gz
-MANS += olsr_switch.8.gz
 
 # Requires 'apt-get install docbook2x docbook-xml'
 $(MANS): olsrd-manpages.xml
diff --git a/files/olsr_switch.8.gz b/files/olsr_switch.8.gz
deleted file mode 100644 (file)
index fe4c053..0000000
Binary files a/files/olsr_switch.8.gz and /dev/null differ
index a64e7ac..0eba56d 100644 (file)
 
             <arg>--config</arg>
 
-            <replaceable> configfile</replaceable>
+            <replaceable>configfile</replaceable>
           </group>
 
           <group choice="req">
 
             <arg>--DebugLevel</arg>
 
-            <replaceable> level</replaceable>
+            <replaceable>level</replaceable>
           </group>
 
           <group>
 
             <arg>--hemu</arg>
 
-            <replaceable> ipaddr</replaceable>
+            <replaceable>ipaddr</replaceable>
           </group>
 
           <arg>interface1</arg>
                 support cooperation too well. To cooperate, disable at least
                 any active firewall solution on the WLAN card to enable
                 forwarding for others. For security, disable all protocols and
-                services for the WLAN card with the exception of basic TCP/IP.
-                </para>
+                services for the WLAN card with the exception of basic
+                TCP/IP.</para>
               </listitem>
             </varlistentry>
 
           </listitem>
         </varlistentry>
 
-        <varlistentry>
-          <term><option>-H <replaceable>ipaddr</replaceable></option> or
-          <option>--hemu <replaceable>ipaddr</replaceable></option></term>
-
-          <listitem>
-            <para>Use this option to connect to the <xref
-            endterm="olsr_switch_8-title" linkend="olsr_switch_8" /> network
-            simulation application. Here <replaceable>ipaddr</replaceable>
-            will be the IP address that the process will set as its main
-            address in the emulation mode. This emulated interfaces have no
-            connection to the real IP stack and can be chosen freely.</para>
-          </listitem>
-        </varlistentry>
-
         <varlistentry>
           <term><option>-i</option></term>
 
       </simplelist>
     </refsect1>
   </refentry>
-
-  <refentry id="olsr_switch_8">
-    <indexterm>
-      <primary><command>olsr_switch</command></primary>
-    </indexterm>
-
-    <refentryinfo>
-      <titleabbrev>Olsrd Network Simulator</titleabbrev>
-    </refentryinfo>
-
-    <refmeta>
-      <refentrytitle id="olsr_switch_8-title">olsr_switch</refentrytitle>
-
-      <manvolnum>8</manvolnum>
-    </refmeta>
-
-    <refnamediv>
-      <refname>olsr_switch</refname>
-
-      <refpurpose><productname>olsrd</productname> network
-      simulator</refpurpose>
-    </refnamediv>
-
-    <refsynopsisdiv>
-      <cmdsynopsis>
-        <command>olsr_switch</command>
-
-        <arg>-foo <replaceable>foo</replaceable></arg>
-
-        <arg>-bar <replaceable>bar</replaceable></arg>
-      </cmdsynopsis>
-    </refsynopsisdiv>
-
-    <refsect1>
-      <title>Description</title>
-
-      <para><command>olsr_switch</command> is an implementation of the
-      Optimized Link State Routing protocol for Mobile Ad-Hoc networks
-      (MANET). The protocol is described in RFC3626. It is designed to be run
-      as a standalone server process - but as it is still in an experimental
-      stage most users will prefer running it with some debug output which is
-      directed to STDOUT.</para>
-
-      <para>This manual page only lists the command line arguments. For
-      details of the configuration file see the comments included in
-      <filename>/etc/olsrd.conf</filename>. Note that none of these options
-      need to be set at the command line - all these options and others can be
-      set in the configuration file.</para>
-
-      <para>The homepage of <productname>olsrd</productname> is <ulink
-      url="http://www.olsr.org">http://www.olsr.org</ulink></para>
-    </refsect1>
-
-    <refsect1>
-      <title>Options</title>
-
-      <variablelist>
-        <varlistentry>
-          <term><option>-foo <replaceable>foo</replaceable></option></term>
-
-          <listitem>
-            <para>This option specifies on what network interfaces
-            <productname>olsrd</productname> should run. These interfaces
-            cannot be aliased interfaces such as eth0:1.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term><option>-bar <replaceable>bar</replaceable></option></term>
-
-          <listitem>
-            <para>This option overrides the default configuration file path
-            used by <productname>olsrd</productname> -
-            <filename>/etc/olsrd.conf</filename></para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsect1>
-
-    <refsect1>
-      <title>Files</title>
-
-      <para><filename>/etc/olsrd.conf</filename></para>
-    </refsect1>
-
-    <refsect1>
-      <title>See also</title>
-
-      <simplelist type="inline">
-        <member><xref endterm="olsrd_8-title" linkend="olsrd_8" /></member>
-
-        <member><xref endterm="olsrd_conf_5-title"
-        linkend="olsrd_conf_5" /></member>
-      </simplelist>
-    </refsect1>
-  </refentry>
 </article>
index 3c7db94..fc408f3 100644 (file)
Binary files a/files/olsrd.8.gz and b/files/olsrd.8.gz differ
index 6d0858e..eb2c70f 100644 (file)
Binary files a/files/olsrd.conf.5.gz and b/files/olsrd.conf.5.gz differ
index c0bcc3a..2db85fd 100644 (file)
@@ -116,13 +116,7 @@ ifinit(void)
 
   /* Run trough all interfaces immediately */
   for (tmp_if = olsr_cnf->if_configs; tmp_if != NULL; tmp_if = tmp_if->next) {
-    if (tmp_if->host_emul) {
-      add_hemu_if(tmp_if);
-    } else {
-      if (!olsr_cnf->host_emul) {      /* XXX: TEMPORARY! */
-       chk_if_up(tmp_if, 1);
-      }
-    }
+    chk_if_up(tmp_if, 1);
   }
 
   /* Kick a periodic timer for the network interface update function */
@@ -147,13 +141,6 @@ check_interface_updates(void *foo __attribute__((unused)))
 
   for (tmp_if = olsr_cnf->if_configs; tmp_if != NULL; tmp_if = tmp_if->next) {
 
-    if (tmp_if->host_emul) {
-       continue;
-    }
-    if (olsr_cnf->host_emul) { /* XXX: TEMPORARY! */
-      continue;
-    }
-
     if (!tmp_if->cnf->autodetect_chg) {
 #ifdef DEBUG
       /* Don't check this interface */
index eff55b2..48ebf39 100644 (file)
@@ -302,7 +302,6 @@ queue_if(const char *name, struct olsr_config *cfg)
   new_if = olsr_malloc(sizeof(*new_if), "queue interface");
   new_if->name = olsr_strdup(name);
   /* new_if->config = NULL; */
-  /* new_if->host_emul = false; */
   /* memset(&new_if->hemu_ip, 0, sizeof(new_if->hemu_ip)); */
   /* new_if->interf = NULL; */
   new_if->cnf = get_default_olsr_if_options();
@@ -641,10 +640,6 @@ parse_cfg_loadplugin(const char *argstr, struct olsr_config *cfg)
 static void
 parse_cfg_option(const int optint, const char *argstr, const int line, struct olsr_config *cfg)
 {
-#ifdef DEBUG
-  struct ipaddr_str buf;
-#endif
-
   switch (optint) {
   case 'D':                    /* delgw */
     cfg->del_gws = true;
@@ -658,26 +653,6 @@ parse_cfg_option(const int optint, const char *argstr, const int line, struct ol
     PARSER_DEBUG_PRINTF("Calling net_set_disp_pack_out(true)\n");
     net_set_disp_pack_out(true);
     break;
-  case 'H':                    /* hemu (ip4) */
-    {
-      union olsr_ip_addr ipaddr;
-      struct olsr_if_config *new_if;
-
-      if (inet_pton(AF_INET, argstr, &ipaddr) <= 0) {
-        fprintf(stderr, "Failed converting IP address %s\n", argstr);
-        exit(EXIT_FAILURE);
-      }
-
-      /* Add hemu interface */
-      if (NULL != (new_if = queue_if("hcif01", cfg))) {
-        new_if->host_emul = true;
-        new_if->hemu_ip = ipaddr;
-        cfg->host_emul = true;
-        PARSER_DEBUG_PRINTF("host_emul with %s\n", ip_to_string(cfg->ip_version, &buf, &new_if->hemu_ip));
-      }
-      PARSER_DEBUG_PRINTF("host_emul set to %d\n", cfg->host_emul);
-    }
-    break;
   case 'i':                    /* iface */
     /* Ignored */
     break;
@@ -928,7 +903,6 @@ olsr_parse_cfg(int argc, char *argv[], const char *conf_file_name)
     {"dispin",                   no_argument,       0, 'X'},
     {"dispout",                  no_argument,       0, 'O'},
     {"help",                     no_argument,       0, 'h'},
-    {"hemu",                     required_argument, 0, 'H'}, /* (ip4) */
     {"iface",                    no_argument,       0, 'i'}, /* if0 if1... */
 #ifdef WIN32
     {"int",                      no_argument,       0, 'l'},
@@ -1268,7 +1242,6 @@ olsr_get_default_cfg(void)
 
   cfg->debug_level = DEF_DEBUGLVL;
   cfg->no_fork = false;
-  cfg->host_emul = false;
   cfg->ip_version = AF_INET;
   cfg->ipsize = sizeof(struct in_addr);
   cfg->maxplen = 32;
index 9ef7101..0fd4fa2 100644 (file)
@@ -139,7 +139,6 @@ struct olsr_if_options {
 struct olsr_if_config {
   char *name;
   char *config;
-  bool host_emul;
   union olsr_ip_addr hemu_ip;
   struct interface *interf;
   struct olsr_if_options *cnf;
@@ -178,7 +177,6 @@ struct olsr_config {
   size_t ipsize;                       /* Size of address */
   uint8_t maxplen;                     /* maximum prefix len */
   unsigned char no_fork:1;
-  unsigned char host_emul:1;
   unsigned char allow_no_interfaces:1;
   unsigned char willingness_auto:1;
   unsigned char clear_screen:1;
diff --git a/src/olsr_switch/Makefile b/src/olsr_switch/Makefile
deleted file mode 100644 (file)
index 9434068..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-TOPDIR=../..
-include $(TOPDIR)/Makefile.inc
-
-ifeq ($(OS), win32)
-BINNAME = olsr_switch.exe
-OBJS += ../win32/compat.o
-else
-BINNAME = olsr_switch
-endif
-
-COMMON_SRCS=$(wildcard $(TOPDIR)/src/common/*.c)
-OBJS += $(COMMON_SRCS:%.c=%.o)
-
-
-default_target:        $(OBJS)
-       $(CC) $(LDFLAGS) -o $(TOPDIR)/$(BINNAME) $(OBJS) $(LIBS)
-
-ohs_cmd.o: CFLAGS += -Wno-cast-qual
-
-main.o: CFLAGS += $(NO_STRICT_OVERFLOW)
-
-clean:
-       rm -f *.[od]
-       rm -f *~ .#* #*#
-       rm -f $(TOPDIR)/$(BINNAME)
diff --git a/src/olsr_switch/commands.h b/src/olsr_switch/commands.h
deleted file mode 100644 (file)
index 1ff3f02..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-
-#ifndef _COMMAND
-#define _COMMAND
-
-#include "ohs_cmd.h"
-
-
-static const struct ohs_command ohs_commands[] =
-  {
-    { "help", "help",
-      "Help on shell commands",
-      "Help on shell commands",
-      ohs_cmd_help
-    },
-    { "exit", "exit",
-      "Exits olsr host switch",
-      "Exits olsr host switch",
-      ohs_cmd_exit
-    },
-    { "log", "log <set [type]>",
-      "Displays or sets log bits",
-      "This command sets or clears various logbits. Available logbits are:\n FORWARD - display info about all traffic forwarding\n CONNECT - display info about all connections happening\n LINK - display all link lookup information\n",
-      ohs_cmd_log
-    },
-    { "list", "list <clients|links>",
-      "List all connected clients or links",
-      "This command will list all the clients or all the links registered by olsr_switch. By default clients are listed.",
-      ohs_cmd_list
-    },
-    { "link", "link <bi> [srcIP|*] [dstIP|*] [0-100]",
-      "Manipulate links",
-      "This command is used for manipulating olsr links. The link quality is a number between 0-100 representing the chance in percentage for a packet to be forwarded on the link.\nTo make the link between 10.0.0.1 and 10.0.0.2 have 50% packet loss do:\nlink 10.0.0.1 10.0.0.2 50\nNote that this will only effect the unidirectional link 10.0.0.1 -> 10.0.0.2.\nTo make the changes affect traffic in both directions do:\nlink bi 10.0.0.1 10.0.0.2 50\nTo completely block a link do:\nlink 10.0.0.1 10.0.0.2 0\nTo make all traffic pass(delete the entry) do:\nlink 10.0.0.1 10.0.0.2 100\nNote that \"bi\" can be used in all these examples.\nWildcard source and/or destinations are also supported.\nTo block all traffic from a node do:\nlink 10.0.0.1 * 0\nTo set 50% packet loss on all links to 10.0.0.2 do:\nlink * 10.0.0.2 50\nTo delete all links do:\nlink * * 100\nWildcards can also be used in combination with 'bi'.\nTo list all manipulated links use 'list links'.\n",
-      ohs_cmd_link
-    },
-    { "olsrd", "olsrd [start|stop|show|setb|seta] [IP|path|args]",
-      "Start or stop local olsrd processes. Also used to set the olsrd binary path and arguments",
-      "This command is used for managing local olsrd instances from within olsr_switch.\nThe command can be configured in runtime using the setb and seta sub-commands.\nTo show the current olsrd command-configuration do:\nolsrd show\nTo set the olsrd binary path do:\nolsrd setb /full/path/to/olsrd\nTo start a olsrd instance with a IP address of 10.0.0.1, do:\nolsrd start 10.0.0.1\nTo stop that same instance do:\nolsrd stop 10.0.0.1\nseta would set arguments but is currently not implemented\n",
-      ohs_cmd_olsrd
-    },
-    { NULL, NULL,
-      NULL,
-      NULL,
-      NULL
-    }
-  };
-
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/link_rules.c b/src/olsr_switch/link_rules.c
deleted file mode 100644 (file)
index 76df24c..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#include "link_rules.h"
-#include "olsr_host_switch.h"
-#include "ipcalc.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-ohs_check_link(struct ohs_connection *oc, union olsr_ip_addr *dst)
-{
-  struct ohs_ip_link *links;
-  for (links = oc->links; links != NULL; links = links->next) {
-    int r;
-    if (!ipequal(&links->dst, dst)) {
-        continue;
-    }
-    if (links->quality == 0) {
-      if (logbits & LOG_LINK) {
-        struct ipaddr_str addrstr, dststr;
-        printf("%s -> %s Q: %d\n",
-               olsr_ip_to_string(&addrstr, &oc->ip_addr),
-               olsr_ip_to_string(&dststr, dst),
-               links->quality);
-      }
-      return 0;
-    }
-
-    r = 1 + (int)(100.0 / (RAND_MAX + 1.0) * rand());
-
-    if (logbits & LOG_LINK) {
-      struct ipaddr_str addrstr, dststr;
-      printf("%s -> %s Q: %d R: %d\n",  olsr_ip_to_string(&addrstr, &oc->ip_addr),
-             olsr_ip_to_string(&dststr, dst), links->quality, r);
-    }
-    /* Random - based on quality */
-    return links->quality > r ? 0 : 1;
-  }
-  return 1;
-}
-
-int
-ohs_delete_all_related_links(struct ohs_connection *oc)
-{
-  struct ohs_ip_link *links = oc->links;
-  int cnt = 0;
-
-  /* Delete links from this node*/
-  while(links)
-    {
-      struct ohs_ip_link *tmp_link = links;
-      links = links->next;
-      free(tmp_link);
-      cnt++;
-    }
-
-  /* Delete links to this node */
-
-  // XXX - ToDo
-
-  return cnt;
-}
-
-struct ohs_ip_link *
-add_link(struct ohs_connection *src, struct ohs_connection *dst)
-{
-  struct ohs_ip_link *link;
-
-  /* Create new link */
-  link = malloc(sizeof(struct ohs_ip_link));
-  if(!link)
-    OHS_OUT_OF_MEMORY("New link");
-  /* Queue */
-  link->next = src->links;
-  src->links = link;
-  link->dst = dst->ip_addr;
-  src->linkcnt++;
-
-  return link;
-}
-
-int
-remove_link(struct ohs_connection *oc, struct ohs_ip_link *lnk)
-{
-  struct ohs_ip_link *links = oc->links;
-  struct ohs_ip_link *prev_link = NULL;
-
-  while(links)
-    {
-      if(links == lnk)
-        {
-          /* Remove */
-          if(prev_link)
-            prev_link->next = links->next;
-          else
-            oc->links = links->next;
-
-          free(lnk);
-          oc->linkcnt--;
-          return 1;
-        }
-      prev_link = links;
-      links = links->next;
-    }
-  return 0;
-}
-
-struct ohs_ip_link *
-get_link(struct ohs_connection *oc, union olsr_ip_addr *dst)
-{
-  struct ohs_ip_link *links;
-  for (links = oc->links; links != NULL; links = links->next) {
-    if (ipequal(&links->dst, dst)) {
-        return links;
-    }
-  }
-  return NULL;
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/link_rules.h b/src/olsr_switch/link_rules.h
deleted file mode 100644 (file)
index d841c61..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-
-
-#ifndef _OLSR_SWITCH_LINK_RULES
-#define _OLSR_SWITCH_LINK_RULES
-
-#include "olsr_types.h"
-#include "olsr_host_switch.h"
-int
-ohs_check_link(struct ohs_connection *, union olsr_ip_addr *);
-
-struct ohs_ip_link *
-get_link(struct ohs_connection *, union olsr_ip_addr *);
-
-struct ohs_ip_link *
-add_link(struct ohs_connection *, struct ohs_connection *);
-
-int
-remove_link(struct ohs_connection *, struct ohs_ip_link *);
-
-int
-ohs_delete_all_related_links(struct ohs_connection *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/main.c b/src/olsr_switch/main.c
deleted file mode 100644 (file)
index 25a1c23..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-/* olsrd host-switch daemon */
-
-#include "olsr_host_switch.h"
-#include "link_rules.h"
-#include "ohs_cmd.h"
-#include "ipcalc.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <errno.h>
-#include <signal.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <time.h>
-
-#ifdef WIN32
-#undef errno
-#define errno WSAGetLastError()
-#undef strerror
-#define strerror(x) StrError(x)
-#else
-#include <sys/wait.h>
-#endif
-
-static int srv_socket;
-
-#define OHS_BUFSIZE 1500
-static uint8_t data_buffer[OHS_BUFSIZE];
-
-struct ohs_connection *ohs_conns;
-
-//static int ip_version;
-//int ipsize;
-static struct olsr_config olsr_cnf_data;
-struct olsr_config *olsr_cnf = &olsr_cnf_data;
-
-uint32_t logbits;
-
-/* local functions */
-static int
-ohs_init_new_connection(int);
-
-static int
-ohs_route_data(struct ohs_connection *);
-
-static int
-ohs_init_connect_sockets(void);
-
-static int
-ohs_configure(void);
-
-#if !defined WIN32
-static void
-ohs_listen_loop(void) __attribute__((noreturn));
-#else
-static void
-ohs_listen_loop(void);
-#endif
-
-#ifdef WIN32
-int __stdcall
-ohs_close(unsigned long signo __attribute__((unused)))
-#else
-void
-ohs_close(int signo __attribute__((unused)))
-#endif
-{
-  printf("OHS: exit\n");
-
-  CLOSESOCKET(srv_socket);
-
-  exit(0);
-}
-
-struct ohs_connection *
-get_client_by_addr(const union olsr_ip_addr *adr)
-{
-  struct ohs_connection *oc;
-  for (oc = ohs_conns; oc != NULL; oc = oc->next) {
-    if (ipequal(adr, &oc->ip_addr)) {
-        return oc;
-    }
-  }
-  return NULL;
-}
-
-
-static int
-ohs_init_new_connection(int s)
-{
-  struct ohs_connection *oc;
-  int i;
-
-  if(logbits & LOG_CONNECT) {
-    printf("ohs_init_new_connection\n");
-  }
-  /* Create new client node */
-  oc = calloc(1, sizeof(struct ohs_connection));
-  if (!oc) {
-    OHS_OUT_OF_MEMORY("New connection");
-  }
-
-  oc->socket = s;
-  oc->links = NULL;
-  oc->rx = 0;
-  oc->tx = 0;
-  oc->linkcnt = 0;
-
-  // hack alert: WSAEventSelect makes sockets non-blocking, so the
-  // recv() may return without having read anything on Windows; hence
-  // re-try for 2 seconds on Windows; shouldn't harm Linux et al.
-
-  /* Get "fake IP" */
-  for (i = 0; i < 20; i++) {
-    /* Win32 needs that cast. */
-      if (recv(oc->socket, (void *)&oc->ip_addr, olsr_cnf->ipsize, 0) == (int)olsr_cnf->ipsize) {
-      break;
-    }
-#if defined WIN32
-    Sleep(100);
-#endif
-  }
-
-  if (i == 20) {
-    printf("Failed to fetch IP address! (%s)\n", strerror(errno));
-    return -1;
-  }
-
-  if (logbits & LOG_CONNECT) {
-    struct ipaddr_str addrstr;
-    printf("IP: %s\n", olsr_ip_to_string(&addrstr, &oc->ip_addr));
-  }
-  if (get_client_by_addr(&oc->ip_addr)) {
-    if (logbits & LOG_CONNECT) {
-      struct ipaddr_str addrstr;
-      printf("IP: %s DUPLICATE! Disconecting client!\n", olsr_ip_to_string(&addrstr, &oc->ip_addr));
-    }
-    CLOSESOCKET(s);
-    free(oc);
-    return -1;
-  }
-
-  /* Queue */
-  oc->next = ohs_conns;
-  ohs_conns = oc;
-  return 1;
-}
-
-int
-ohs_delete_connection(struct ohs_connection *oc)
-{
-  if (!oc) {
-    return -1;
-  }
-  /* Close the socket */
-  CLOSESOCKET(oc->socket);
-
-  if(logbits & LOG_CONNECT) {
-    struct ipaddr_str addrstr;
-    printf("Removing entry %s\n", olsr_ip_to_string(&addrstr, &oc->ip_addr));
-  }
-  /* De-queue */
-  if(oc == ohs_conns) {
-    ohs_conns = ohs_conns->next;
-  } else {
-    struct ohs_connection *curr_entry = ohs_conns->next;
-    struct ohs_connection *prev_entry = ohs_conns;
-
-    while (curr_entry != NULL) {
-      if(curr_entry == oc) {
-        prev_entry->next = curr_entry->next;
-        break;
-      }
-      prev_entry = curr_entry;
-      curr_entry = curr_entry->next;
-    }
-  }
-  ohs_delete_all_related_links(oc);
-
-  free(oc);
-  return 0;
-}
-
-static int
-ohs_route_data(struct ohs_connection *oc)
-{
-  struct ohs_connection *ohs_cs;
-  ssize_t len;
-  int cnt = 0;
-
-  oc->tx++;
-  /* Read data */
-  if((len = recv(oc->socket, data_buffer, OHS_BUFSIZE, 0)) <= 0)
-    return -1;
-
-  if(logbits & LOG_FORWARD) {
-    struct ipaddr_str addrstr;
-    printf("Received %ld bytes from %s\n", (long)len, olsr_ip_to_string(&addrstr, &oc->ip_addr));
-  }
-  /* Loop trough clients */
-  for(ohs_cs = ohs_conns; ohs_cs; ohs_cs = ohs_cs->next) {
-    /* Check that the link is active open */
-    if(ohs_check_link(oc, &ohs_cs->ip_addr) &&
-       oc->socket != ohs_cs->socket) {
-      ssize_t sent;
-
-      /* Send link addr */
-      if (send(ohs_cs->socket, (const void *)&oc->ip_addr, olsr_cnf->ipsize, 0) != (int)olsr_cnf->ipsize) {
-          printf("Error sending link address!\n");
-      }
-      /* Send data */
-      if (logbits & LOG_FORWARD) {
-          struct ipaddr_str addrstr, addrstr2;
-          printf("Sending %d bytes %s=>%s\n",
-                 (int)len,
-                 olsr_ip_to_string(&addrstr, &oc->ip_addr),
-                 olsr_ip_to_string(&addrstr2, &ohs_cs->ip_addr));
-      }
-
-      sent = send(ohs_cs->socket, data_buffer, len, 0);
-      if(sent != len) {
-        printf("Error sending(buf %d != sent %d)\n", (int)len, (int)sent);
-      }
-      ohs_cs->rx++;
-      cnt++;
-    }
-  }
-  return cnt;
-}
-
-static int
-ohs_init_connect_sockets(void)
-{
-  uint32_t yes = 1;
-  struct sockaddr_in sin4;
-
-  printf("Initiating socket TCP port %d\n", OHS_TCP_PORT);
-
-  if((srv_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0)
-    {
-      printf("Could not initialize socket(%d): %s\n", srv_socket, strerror(errno));
-      exit(0);
-    }
-
-  if(setsockopt(srv_socket, SOL_SOCKET, SO_REUSEADDR,
-               (char *)&yes, sizeof(yes)) < 0)
-    {
-      printf("SO_REUSEADDR failed for socket: %s\n", strerror(errno));
-      CLOSESOCKET(srv_socket);
-      exit(0);
-    }
-
-  /* complete the socket structure */
-  memset(&sin4, 0, sizeof(sin4));
-  sin4.sin_family = AF_INET;
-  sin4.sin_addr.s_addr = INADDR_ANY;
-  sin4.sin_port = htons(OHS_TCP_PORT);
-
-  /* bind the socket to the port number */
-  if (bind(srv_socket, (struct sockaddr *) &sin4, sizeof(sin4)) == -1)
-    {
-      printf("bind failed for socket: %s\n", strerror(errno));
-      CLOSESOCKET(srv_socket);
-      exit(0);
-    }
-
-  /* show that we are willing to listen */
-  if (listen(srv_socket, 5) == -1)
-    {
-      printf("listen failed for socket: %s\n", strerror(errno));
-      CLOSESOCKET(srv_socket);
-      exit(0);
-    }
-  return 1;
-}
-
-
-static int
-ohs_configure(void)
-{
-
-  return 1;
-}
-
-static void accept_handler(void)
-{
-  struct sockaddr_in pin;
-  socklen_t addrlen = sizeof(pin);
-  int s;
-
-  memset(&pin, 0 , sizeof(pin));
-
-  if((s = accept(srv_socket, (struct sockaddr *)&pin, &addrlen)) < 0)
-    {
-      printf("accept failed socket: %s\n", strerror(errno));
-    }
-  else
-    {
-      /* Create new node */
-      ohs_init_new_connection(s);
-    }
-}
-
-static void stdin_handler(void)
-{
-  ohs_parse_command();
-}
-
-static void read_handler(struct ohs_connection *con)
-{
-  if (ohs_route_data(con) < 0)
-    ohs_delete_connection(con);
-}
-
-static void
-ohs_listen_loop(void)
-{
-#if !defined WIN32
-  int n;
-  fd_set ibits;
-  int fn_stdin = fileno(stdin);
-
-  while(1)
-    {
-      int high;
-
-      struct ohs_connection *ohs_cs;
-
-      high = 0;
-      FD_ZERO(&ibits);
-
-      /* Add server socket */
-      high = srv_socket;
-      FD_SET(srv_socket, &ibits);
-
-      if(fn_stdin > high)
-       high = fn_stdin;
-
-      FD_SET(fn_stdin, &ibits);
-
-      /* Add clients */
-      for(ohs_cs = ohs_conns; ohs_cs; ohs_cs = ohs_cs->next)
-       {
-         if(ohs_cs->socket > high)
-           high = ohs_cs->socket;
-
-         FD_SET(ohs_cs->socket, &ibits);
-       }
-
-      /* block */
-      n = select(high + 1, &ibits, 0, 0, NULL);
-
-      if(n == 0)
-        continue;
-
-      /* Did somethig go wrong? */
-      if (n < 0)
-       {
-         if(errno == EINTR)
-           continue;
-
-         printf("Error select: %s", strerror(errno));
-          continue;
-       }
-
-      /* Check server socket */
-      if(FD_ISSET(srv_socket, &ibits))
-        accept_handler();
-
-      /* Loop trough clients */
-      ohs_cs = ohs_conns;
-      while(ohs_cs)
-       {
-         struct ohs_connection *ohs_tmp = ohs_cs;
-         ohs_cs = ohs_cs->next;
-
-         if(FD_ISSET(ohs_tmp->socket, &ibits))
-            read_handler(ohs_tmp);
-       }
-
-      if(FD_ISSET(fn_stdin, &ibits))
-        stdin_handler();
-
-    }
-#else
-  HANDLE Objects[2];
-  WSANETWORKEVENTS NetEvents;
-  struct ohs_connection *Walker, *TmpWalker;
-  unsigned int Res;
-
-  Objects[0] = GetStdHandle(STD_INPUT_HANDLE);
-  Objects[1] = WSACreateEvent();
-
-  if (WSAEventSelect(srv_socket, Objects[1], FD_ACCEPT) == SOCKET_ERROR)
-  {
-    fprintf(stderr, "WSAEventSelect failed (1): %s\n", strerror(errno));
-    return;
-  }
-
-  while (1)
-  {
-    for (Walker = ohs_conns; Walker != NULL; Walker = Walker->next)
-    {
-      if (WSAEventSelect(Walker->socket, Objects[1], FD_READ | FD_CLOSE) == SOCKET_ERROR)
-      {
-        fprintf(stderr, "WSAEventSelect failed (2): %s\n", strerror(errno));
-        Sleep(1000);
-        continue;
-      }
-    }
-
-    Res = WaitForMultipleObjects(2, Objects, FALSE, INFINITE);
-
-    if (Res == WAIT_FAILED)
-    {
-      fprintf(stderr, "WaitForMultipleObjects failed: %s\n", strerror(GetLastError()));
-      Sleep(1000);
-      continue;
-    }
-
-    if (Res == WAIT_OBJECT_0)
-      stdin_handler();
-
-    else if (Res == WAIT_OBJECT_0 + 1)
-    {
-      if (WSAEnumNetworkEvents(srv_socket, Objects[1], &NetEvents) == SOCKET_ERROR)
-        fprintf(stderr, "WSAEnumNetworkEvents failed (1): %s\n", strerror(errno));
-
-      else
-      {
-        if ((NetEvents.lNetworkEvents & FD_ACCEPT) != 0)
-          accept_handler();
-      }
-
-      for (Walker = ohs_conns; Walker != NULL; Walker = TmpWalker)
-      {
-        TmpWalker = Walker->next;
-
-        if (WSAEnumNetworkEvents(Walker->socket, Objects[1], &NetEvents) == SOCKET_ERROR)
-          fprintf(stderr, "WSAEnumNetworkEvents failed (2): %s\n", strerror(errno));
-
-        else
-        {
-          if ((NetEvents.lNetworkEvents & (FD_READ | FD_CLOSE)) != 0)
-            read_handler(Walker);
-        }
-      }
-    }
-  }
-
-#endif
-}
-
-int
-main(void)
-{
-
-#ifdef WIN32
-  WSADATA WsaData;
-
-  if (WSAStartup(0x0202, &WsaData))
-    {
-      fprintf(stderr, "Could not initialize WinSock.\n");
-      exit(EXIT_FAILURE);
-    }
-
-  SetConsoleCtrlHandler(ohs_close, true);
-
-#else
-  signal(SIGINT, ohs_close);
-  signal(SIGTERM, ohs_close);
-
-  /* Avoid zombie children */
-  signal(SIGCHLD, SIG_IGN);
-#endif
-
-  printf("olsrd host-switch daemon version %s starting\n", OHS_VERSION);
-
-  logbits = LOG_DEFAULT;
-  olsr_cnf->ip_version = AF_INET;
-  olsr_cnf->ipsize = sizeof(struct in_addr);
-
-  srand((unsigned int)time(NULL));
-
-  ohs_set_olsrd_path(OHS_DEFAULT_OLSRD_PATH);
-
-  ohs_init_connect_sockets();
-
-  ohs_configure();
-
-  printf("OHS command interpreter reading from STDIN\n");
-  printf("\n> ");
-  fflush(stdout);
-
-  ohs_listen_loop();
-
-  ohs_close(0);
-
-  return 1;
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/ohs_cmd.c b/src/olsr_switch/ohs_cmd.c
deleted file mode 100644 (file)
index 20ee34f..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#include "olsr_host_switch.h"
-#include "olsr_types.h"
-#include "commands.h"
-#include "link_rules.h"
-#include "ipcalc.h"
-#include "../common/string.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-
-
-#define TOK_BUF_SIZE 500
-static char tok_buf[TOK_BUF_SIZE];
-
-#define MAX_OLSRD_ARGS 10
-static char olsrd_path[FILENAME_MAX];
-
-static int
-get_next_token(const char *src, char *dst, size_t buflen)
-{
-  int i = 0, j = 0;
-
-  dst[0] = 0;
-  /* Skip leading spaces */
-  while(src[j] == ' ' && src[j] != 0)
-    {
-      j++;
-    }
-
-  src += j;
-  i = 0;
-  while((src[i] != ' ') && (src[i] != 0) && (i < ((int)buflen - 1)))
-    {
-      dst[i] = src[i];
-      i++;
-    }
-  dst[i] = 0;
-
-  //if(strlen(dst))
-  //printf("Extracted token: %s\n", dst);
-  return i + j;
-}
-
-int
-ohs_set_olsrd_path(const char *path)
-{
-  strscpy(olsrd_path, path, sizeof(olsrd_path));
-  return 0;
-}
-
-#ifdef WIN32
-int
-ohs_cmd_olsrd(const char *args __attribute__((unused)))
-{
-  printf("olsrd command not available in windows version\nStart instances manually\n");
-  return 0;
-}
-#else
-int
-ohs_cmd_olsrd(const char *args)
-{
-  const char *olsrd_args[MAX_OLSRD_ARGS];
-  struct in_addr iaddr;
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if(!strlen(tok_buf))
-    goto print_usage;
-
-  /* Start olsrd instance */
-  if(!strncmp(tok_buf, "start", strlen("start")))
-    {
-      int argc = 0, i = 0;
-
-      args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-      if(!strlen(tok_buf))
-       goto print_usage;
-
-      if(!inet_aton(tok_buf, &iaddr))
-       {
-         printf("Invalid IP %s\n", tok_buf);
-         goto print_usage;
-       }
-
-      olsrd_args[argc++] = olsrd_path;
-
-      if(1) /* config file is set */
-       {
-         olsrd_args[argc++] = "-f";
-         olsrd_args[argc++] = "/etc/olsrd-emu.conf";
-       }
-      olsrd_args[argc++] = "-hemu";
-      olsrd_args[argc++] = tok_buf;
-
-      olsrd_args[argc++] = "-d";
-      olsrd_args[argc++] = "0";
-      olsrd_args[argc++] = "-nofork";
-      olsrd_args[argc] = NULL;
-
-      printf("Executing: %s", olsrd_path);
-      for(i = 0; i < argc; i++)
-       printf(" %s", olsrd_args[i]);
-      printf("\n");
-
-      if(fork())
-       return 1;
-
-      if(execve(olsrd_path, (char * const *)olsrd_args, NULL) < 0)
-       {
-         printf("Error executing olsrd: %s\n", strerror(errno));
-         exit(1);
-       }
-    }
-  /* Stop olsrd instance */
-  else if(!strncmp(tok_buf, "stop", strlen("stop")))
-    {
-      struct ohs_connection *oc;
-
-      args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-      if(!strlen(tok_buf))
-       goto print_usage;
-
-      if(!inet_aton(tok_buf, &iaddr))
-       {
-         printf("Invalid IP %s\n", tok_buf);
-         goto print_usage;
-       }
-
-      oc = get_client_by_addr((union olsr_ip_addr *)&iaddr.s_addr);
-
-      if(!oc)
-       {
-         printf("No such client: %s\n", tok_buf);
-         return -1;
-       }
-      ohs_delete_connection(oc);
-
-      return 1;
-    }
-  /* Set olsrd binary path */
-  else if(!strncmp(tok_buf, "setb", strlen("setb")))
-    {
-      struct stat sbuf;
-
-      args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-      if(!strlen(tok_buf))
-       goto print_usage;
-
-      if(stat(tok_buf, &sbuf) < 0)
-       {
-         printf("Error setting binary \"%s\": %s\n",
-                tok_buf, strerror(errno));
-         return -1;
-       }
-
-      if((sbuf.st_mode & S_IFDIR) || !(sbuf.st_mode & S_IXUSR))
-       {
-         printf("Error setting binary \"%s\": Not a regular execuatble file!\n",
-                tok_buf);
-         return -1;
-       }
-
-      printf("New olsrd binary path:\"%s\"\n", tok_buf);
-      ohs_set_olsrd_path(tok_buf);
-
-      return 1;
-
-    }
-  /* Set arguments */
-  else if(!strncmp(tok_buf, "seta", strlen("seta")))
-    {
-       printf("Error - NOT IMPLEMENTED YET\n");
-       return 1;
-    }
-  /* Show settings */
-  else if(!strncmp(tok_buf, "show", strlen("show")))
-    {
-      printf("olsrd command settings:\n\tBinary path: %s\n\tArguments  : \n",
-            olsrd_path);
-      return 1;
-    }
-
- print_usage:
-  printf("Usage: olsrd [start|stop|show|setb|seta] [IP|path|args]\n");
-  return 0;
-}
-#endif
-
-int
-ohs_cmd_link(const char *args)
-{
-  uint8_t bi = 0, wildc_src = 0, wildc_dst = 0;
-  struct ohs_connection *src, *dst;
-  struct in_addr iaddr;
-  int qual;
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if (!strlen(tok_buf)) {
-    goto print_usage;
-  }
-  if(!strncmp(tok_buf, "bi", strlen("bi"))) {
-    bi = 1;
-    args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-    if (!strlen(tok_buf)) {
-      goto print_usage;
-    }
-  }
-
-  if(tok_buf[0] == '*') {
-    wildc_src = 1;
-    src = ohs_conns;
-  } else {
-    if (!inet_aton(tok_buf, &iaddr)) {
-      printf("Invalid src IP %s\n", tok_buf);
-      return -1;
-    }
-
-    src = get_client_by_addr((union olsr_ip_addr *)&iaddr.s_addr);
-
-    if (!src) {
-        printf("No such client: %s!\n", tok_buf);
-        return -1;
-    }
-  }
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if (!strlen(tok_buf)) {
-    goto print_usage;
-  }
-
-  if(tok_buf[0] == '*') {
-    wildc_dst = 1;
-    dst = ohs_conns;
-  } else {
-    if(!inet_aton(tok_buf, &iaddr)) {
-      printf("Invalid src IP %s\n", tok_buf);
-      return -1;
-    }
-
-    dst = get_client_by_addr((union olsr_ip_addr *)&iaddr.s_addr);
-    if (!dst) {
-      printf("No such client: %s!\n", tok_buf);
-      return -1;
-    }
-  }
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if (!strlen(tok_buf)) {
-    goto print_usage;
-  }
-
-  /* No use for bi if both src and dst are widcards */
-  if (wildc_src && wildc_dst) {
-    bi = 0;
-  }
-
-  qual = atoi(tok_buf);
-
-  if(qual < 0 || qual > 100) {
-    printf("Link quality out of range(0-100)\n");
-    return -1;
-  }
-
-  while (src) {
-    while (dst) {
-      struct ipaddr_str srcaddrstr, dstaddrstr;
-
-      if(src != dst) {
-        struct ohs_ip_link *fwd_link = get_link(src, &dst->ip_addr);
-        struct ohs_ip_link *inv_link = bi ? get_link(dst, &src->ip_addr) : NULL;
-        if(qual == 100)  {
-          /* Remove link entry */
-          if (fwd_link) {
-           remove_link(src, fwd_link);
-          }
-          if (inv_link) {
-            remove_link(dst, inv_link);
-          }
-        } else  {
-          if (!fwd_link) {
-            /* Create new link */
-            fwd_link = add_link(src, dst);
-          }
-
-          fwd_link->quality = qual;
-
-          if (bi) {
-            if(!inv_link) {
-              /* Create new link */
-              inv_link = add_link(dst, src);
-            }
-            inv_link->quality = qual;
-          }
-        }
-        printf("%s %sdirectional link(s) %s %c=> %s quality %d\n",
-               (qual == 100) ? "Removing" : "Setting",
-               bi ? "bi" : "uni",
-               olsr_ip_to_string(&srcaddrstr, &src->ip_addr),
-               bi ? '<' : '=',
-               olsr_ip_to_string(&dstaddrstr, &dst->ip_addr),
-               qual);
-      }
-      if (wildc_dst) {
-           dst = dst->next;
-      } else {
-           break;
-      }
-    }
-    dst = wildc_dst ? ohs_conns : dst;
-    src = wildc_src ? src->next : NULL;
-  }
-
-  return 1;
- print_usage:
-  printf("link <bi> srcIP dstIP [0-100]");
-  return -1;
-}
-
-int
-ohs_cmd_list(const char *args)
-{
-  struct ohs_connection *oc = ohs_conns;
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if(!strlen(tok_buf) ||
-     !strncmp(tok_buf, "clients", strlen("clients"))) {
-    printf("All connected clients:\n");
-
-    while(oc) {
-      struct ipaddr_str addrstr;
-      printf("\t%s - Rx: %u Tx: %u LinkCnt: %u\n",
-             olsr_ip_to_string(&addrstr, &oc->ip_addr),
-             oc->rx,
-             oc->tx,
-             oc->linkcnt);
-      oc = oc->next;
-    }
-  }
-  else if(!strncmp(tok_buf, "links", strlen("links"))) {
-    printf("All configured links:\n");
-    while (oc) {
-      struct ohs_ip_link *links = oc->links;
-      while (links) {
-          struct ipaddr_str addrstr, dststr;
-        printf("\t%s => %s Quality: %d\n",
-               olsr_ip_to_string(&addrstr, &oc->ip_addr),
-               olsr_ip_to_string(&dststr, &links->dst),
-               links->quality);
-
-        links = links->next;
-      }
-      oc = oc->next;
-    }
-  } else {
-    printf("list [clients|links]");
-    return -1;
-  }
-  return 1;
-}
-
-int
-ohs_cmd_help(const char *args)
-{
-  int i;
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if(!strlen(tok_buf))
-    {
-      printf("Olsrd host switch version %s\n", OHS_VERSION);
-      printf("Available commands:\n");
-
-      for(i = 0; ohs_commands[i].cmd; i++)
-       {
-         if(ohs_commands[i].helptext_brief)
-           printf("\t%s - %s\n",
-                  ohs_commands[i].cmd,
-                  ohs_commands[i].helptext_brief);
-       }
-      printf("\nType 'help cmd' for help on a specific command\n");
-    }
-  else
-    {
-      for(i = 0; ohs_commands[i].cmd; i++)
-       {
-         if(!strncmp(tok_buf, ohs_commands[i].cmd, strlen(ohs_commands[i].cmd)))
-           {
-             printf("Usage: %s\nDescription:\n%s\n",
-                    ohs_commands[i].syntax,
-                    ohs_commands[i].helptext_long);
-             return 1;
-           }
-       }
-
-      printf("Usage: help <command>\n");
-    }
-
-  return i;
-}
-
-int
-ohs_cmd_log(const char *args)
-{
-  uint8_t set = 0;
-
-  args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-  if(strlen(tok_buf) &&
-     ((set = !strncmp(tok_buf, "set", strlen("set"))) ||
-      !strncmp(tok_buf, "unset", strlen("unset"))))
-    {
-        uint32_t new_bit = 0;
-
-        args += get_next_token(args, tok_buf, TOK_BUF_SIZE);
-
-        if(!strlen(tok_buf))
-            goto print_usage;
-
-
-        if(!strncmp(tok_buf, "CON", strlen("CON")))
-           new_bit = LOG_CONNECT;
-        else if(!strncmp(tok_buf, "FOR", strlen("FOR")))
-           new_bit = LOG_FORWARD;
-        else if(!strncmp(tok_buf, "LIN", strlen("LIN")))
-           new_bit = LOG_LINK;
-
-        if(!new_bit)
-           goto print_usage;
-
-        if(set)
-           logbits |= new_bit;
-        else
-           logbits &= ~new_bit;
-
-        printf("%s log bit: 0x%08x, new log: 0x%08x\n", set ? "Setting" : "Removing",
-               new_bit, logbits);
-
-    }
-  else
-    {
-      if(strlen(tok_buf))
-       goto print_usage;
-
-      printf("Log: (0x%08x) ", logbits);
-      if(logbits & LOG_CONNECT)
-       printf("CONNECT ");
-      if(logbits & LOG_FORWARD)
-       printf("FORWARD ");
-      if(logbits & LOG_LINK)
-       printf("LINK ");
-
-      printf("\n");
-    }
-  return 1;
-
- print_usage:
-  printf("Usage: log <[set|unset] [CONNECT|FORWARD|LINK]>\n");
-  return 0;
-
-}
-
-int
-ohs_cmd_exit(const char *args __attribute__((unused)))
-{
-
-  printf("Exitting... bye-bye!\n");
-
-  ohs_close(0);
-}
-
-void
-ohs_parse_command(void)
-{
-  static char cmd_line[500];
-  static int cmd_len = 0;
-  char *args;
-  char cmd_token[20];
-  int i;
-#if defined WIN32
-  char c;
-  unsigned long Read;
-  INPUT_RECORD InRec;
-  KEY_EVENT_RECORD *KeyEventRec;
-#endif
-
-#if defined WIN32
-  if (!ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &InRec, sizeof (InRec), &Read))
-  {
-    fprintf(stderr, "ReadConsoleInput failed: %s\n", strerror(GetLastError()));
-    return;
-  }
-
-  if (InRec.EventType != KEY_EVENT)
-    return;
-
-  KeyEventRec = &InRec.Event.KeyEvent;
-
-  if (!KeyEventRec->bKeyDown)
-    return;
-
-  c = KeyEventRec->uChar.AsciiChar;
-
-  if (c == 8)
-  {
-    if (cmd_len == 0)
-      return;
-
-    cmd_len--;
-
-    fputc(8, stdout);
-    fputc(32, stdout);
-    fputc(8, stdout);
-
-    fflush(stdout);
-
-    return;
-  }
-
-  fputc(c, stdout);
-  fflush(stdout);
-
-  if (c != '\n' && c != '\r' && cmd_len < (int)sizeof (cmd_line) - 1)
-    cmd_line[cmd_len++] = (char)c;
-
-  else
-#else
-  if(fgets(cmd_line, sizeof (cmd_line), stdin) == NULL) {
-    ohs_cmd_exit(NULL);
-  }
-
-  for (cmd_len = 0; cmd_line[cmd_len] != 0 && cmd_line[cmd_len] != '\n';
-       cmd_len++);
-#endif
-
-  {
-    cmd_line[cmd_len] = 0;
-    cmd_len = 0;
-
-    args = cmd_line + get_next_token(cmd_line, cmd_token, sizeof (cmd_token));
-
-    for (i = 0; ohs_commands[i].cmd != NULL; i++)
-    {
-      if (strcmp(cmd_token, ohs_commands[i].cmd) == 0)
-      {
-        if(ohs_commands[i].cmd_cb != NULL)
-          ohs_commands[i].cmd_cb(args);
-
-        else
-          printf("No action registered on cmd %s!\n", cmd_token);
-
-        break;
-      }
-    }
-
-    if(ohs_commands[i].cmd == NULL)
-      printf("%s: no such cmd!\n", cmd_token);
-
-    printf("\n> ");
-    fflush(stdout);
-  }
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/ohs_cmd.h b/src/olsr_switch/ohs_cmd.h
deleted file mode 100644 (file)
index ed1f6a0..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-
-#ifndef _OHS_CMD
-#define _OHS_CMD
-
-#include <stdio.h>
-
-struct ohs_command
-{
-  const char *cmd;
-  const char *syntax;
-  const char *helptext_brief;
-  const char *helptext_long;
-  int (*cmd_cb)(const char *);
-};
-
-int
-ohs_set_olsrd_path(const char *);
-
-void
-ohs_parse_command(void);
-
-int
-ohs_cmd_olsrd(const char *);
-
-int
-ohs_cmd_list(const char *);
-
-int
-ohs_cmd_help(const char *);
-
-int
-ohs_cmd_exit(const char *) __attribute__((noreturn));
-
-int
-ohs_cmd_log(const char *);
-
-int
-ohs_cmd_link(const char *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/olsr_switch/olsr_host_switch.h b/src/olsr_switch/olsr_host_switch.h
deleted file mode 100644 (file)
index e12c9f9..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2005, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#ifndef _OLSR_HOST_SWITCH
-#define _OLSR_HOST_SWITCH
-
-#include "olsr_types.h"
-
-#define OHS_TCP_PORT 10150
-
-#define OHS_VERSION "0.1"
-
-#define OHS_DEFAULT_OLSRD_PATH "./olsrd"
-
-#define OHS_OUT_OF_MEMORY(s) do { printf("ohsd: out of memory \"%s\"!\n", s); ohs_close(0); } while (0)
-
-#ifdef WIN32
-int __stdcall ohs_close(unsigned long signal) __attribute__((noreturn));
-#else
-void ohs_close(int) __attribute__((noreturn));
-#endif
-
-struct ohs_ip_link
-{
-  union olsr_ip_addr   dst;
-  uint8_t            quality; /* 0 - 100 */
-  struct ohs_ip_link   *next;
-};
-
-struct ohs_connection
-{
-  union olsr_ip_addr     ip_addr;
-  int                    socket;
-  uint32_t             rx;
-  uint32_t             tx;
-  uint32_t             linkcnt;
-  struct ohs_ip_link     *links;
-  struct ohs_connection  *next;
-};
-
-extern uint32_t logbits;
-
-extern struct ohs_connection *ohs_conns;
-
-#define LOG_DEFAULT 0x0
-#define LOG_FORWARD 0x1
-#define LOG_CONNECT 0x2
-#define LOG_LINK    0x4
-
-#ifdef WIN32
-int __stdcall
-SignalHandler(unsigned long);
-#else
-void
-ohs_close(int);
-#endif
-
-struct ohs_connection *
-get_client_by_addr(const union olsr_ip_addr *);
-
-int
-ohs_delete_connection(struct ohs_connection *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
index 26b75f8..52fa525 100644 (file)
@@ -157,21 +157,19 @@ olsr_enqueue_rt(struct list_node *head_node, struct rt_entry *rt)
 static void
 olsr_delete_kernel_route(struct rt_entry *rt)
 {
-  if(!olsr_cnf->host_emul) {
-    int16_t error = olsr_cnf->ip_version == AF_INET ?
-      olsr_delroute_function(rt) : olsr_delroute6_function(rt);
+  int16_t error = olsr_cnf->ip_version == AF_INET ?
+    olsr_delroute_function(rt) : olsr_delroute6_function(rt);
 
-    if(error < 0) {
-      const char * const err_msg = strerror(errno);
-      const char * const routestr = olsr_rt_to_string(rt);
-      OLSR_PRINTF(1, "KERN: ERROR deleting %s: %s\n", routestr, err_msg);
+  if(error < 0) {
+    const char * const err_msg = strerror(errno);
+    const char * const routestr = olsr_rt_to_string(rt);
+    OLSR_PRINTF(1, "KERN: ERROR deleting %s: %s\n", routestr, err_msg);
 
-      olsr_syslog(OLSR_LOG_ERR, "Delete route %s: %s", routestr, err_msg);
-    } else {
+    olsr_syslog(OLSR_LOG_ERR, "Delete route %s: %s", routestr, err_msg);
+  } else {
 
-      /* release the interface. */
-      unlock_interface(rt->rt_nexthop.interface);
-    }
+    /* release the interface. */
+    unlock_interface(rt->rt_nexthop.interface);
   }
 }
 
@@ -184,27 +182,25 @@ static void
 olsr_add_kernel_route(struct rt_entry *rt)
 {
 
-  if(!olsr_cnf->host_emul) {
-    int16_t error = (olsr_cnf->ip_version == AF_INET) ?
-      olsr_addroute_function(rt) : olsr_addroute6_function(rt);
+  int16_t error = (olsr_cnf->ip_version == AF_INET) ?
+    olsr_addroute_function(rt) : olsr_addroute6_function(rt);
 
-    if(error < 0) {
-      const char * const err_msg = strerror(errno);
-      const char * const routestr = olsr_rtp_to_string(rt->rt_best);
-      OLSR_PRINTF(1, "KERN: ERROR adding %s: %s\n", routestr, err_msg);
+  if(error < 0) {
+    const char * const err_msg = strerror(errno);
+    const char * const routestr = olsr_rtp_to_string(rt->rt_best);
+    OLSR_PRINTF(1, "KERN: ERROR adding %s: %s\n", routestr, err_msg);
 
-      olsr_syslog(OLSR_LOG_ERR, "Add route %s: %s", routestr, err_msg);
-    } else {
+    olsr_syslog(OLSR_LOG_ERR, "Add route %s: %s", routestr, err_msg);
+  } else {
 
-      /* route addition has suceeded */
+    /* route addition has suceeded */
 
-      /* save the nexthop and metric in the route entry */
-      rt->rt_nexthop = rt->rt_best->rtp_nexthop;
-      rt->rt_metric = rt->rt_best->rtp_metric;
+    /* save the nexthop and metric in the route entry */
+    rt->rt_nexthop = rt->rt_best->rtp_nexthop;
+    rt->rt_metric = rt->rt_best->rtp_metric;
 
-      /* lock the interface such that it does not vanish underneath us */
-      lock_interface(rt->rt_nexthop.interface);
-    }
+    /* lock the interface such that it does not vanish underneath us */
+    lock_interface(rt->rt_nexthop.interface);
   }
 }
 
index 36cdcbf..c88ac91 100644 (file)
@@ -119,9 +119,6 @@ chk_if_changed(struct olsr_if_config *iface)
   OLSR_PRINTF(3, "Checking if %s is set down or changed\n", iface->name);
 #endif
 
-  if (iface->host_emul) {
-    return -1;
-  }
   ifp = iface->interf;
   if (!ifp) {
     return 0;
@@ -329,9 +326,6 @@ int add_hemu_if (struct olsr_if_config *iface)
   struct ipaddr_str buf;
   size_t name_size;
 
-  if (!iface->host_emul)
-    return -1;
-
   ifp = olsr_cookie_malloc(interface_mem_cookie);
 
   iface->interf = ifp;
@@ -493,10 +487,6 @@ chk_if_up(struct olsr_if_config *iface, int debuglvl __attribute__((unused)))
   struct ifreq ifr;
   const char *ifr_basename;
 
-  if (iface->host_emul) {
-    return -1;
-  }
-
   /*
    * Sanity check.
    */
index a1d109d..e60fe7b 100644 (file)
@@ -530,9 +530,6 @@ int add_hemu_if(struct olsr_if_config *iface)
   struct ipaddr_str buf;
   size_t name_size;
 
-  if(!iface->host_emul)
-    return -1;
-
   ifp = olsr_cookie_malloc(interface_mem_cookie);
 
   iface->interf = ifp;