Removed cfgparser, win32 adaption pending
authorSven-Ola Tuecke <sven-ola@gmx.de>
Sat, 3 Jan 2009 20:33:53 +0000 (21:33 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Sat, 3 Jan 2009 20:33:53 +0000 (21:33 +0100)
13 files changed:
Makefile
gnu-indent.sh
src/cfgparser/Makefile [deleted file]
src/cfgparser/README [deleted file]
src/cfgparser/cfgfile_gen.c [deleted file]
src/cfgparser/local.mk [deleted file]
src/cfgparser/olsrd.conf.example [deleted file]
src/cfgparser/olsrd_cfgparser.def [deleted file]
src/cfgparser/olsrd_conf.c [deleted file]
src/cfgparser/olsrd_conf.h [deleted file]
src/cfgparser/oparse.y [deleted file]
src/cfgparser/oscan.lex [deleted file]
src/cfgparser/version-script.txt [deleted file]

index f76c240..5af37b6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -54,9 +54,7 @@ LDFLAGS +=    -Wl,--out-implib=libolsrd.a
 LDFLAGS +=     -Wl,--export-all-symbols
 endif
 
-CFGDIR =       src/cfgparser
-#include $(CFGDIR)/local.mk
-TAG_SRCS =     $(SRCS) $(HDRS) $(wildcard $(CFGDIR)/*.[ch])
+TAG_SRCS =     $(SRCS) $(HDRS)
 
 .PHONY: default_target
 default_target: $(EXENAME)
@@ -64,9 +62,6 @@ default_target: $(EXENAME)
 $(EXENAME):    $(OBJS) src/builddata.o
                $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
 
-cfgparser:     $(CFGDEPS) src/builddata.o
-               $(MAKE) -C $(CFGDIR)
-
 show-ignored-warnings:
        CC="$(CC)" $(TOPDIR)/gcc-warnings $(ALL_WARNINGS) > /dev/null
 
@@ -96,7 +91,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 $(CFGDIR) clean
 
 install: install_olsrd
 
index 37ee12b..3995dd2 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test -f ${0%/*}/src/cfgparser/oparse.c && {
+test -f ${0%/*}/src/olsr.d && {
   cat>&2 <<EOF
 This script reformats all source files. Be careful
 with doing so. You need a clean source tree, e.g.
diff --git a/src/cfgparser/Makefile b/src/cfgparser/Makefile
deleted file mode 100644 (file)
index c44ecba..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-
-# The olsr.org Optimized Link-State Routing daemon(olsrd)
-# Copyright (c) 2004, 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.
-#
-
-TOPDIR=../..
-include $(TOPDIR)/Makefile.inc
-
-# delete the variables from above
-SRCS =
-HDRS =
-
-include local.mk
-
-ifeq ($(OS), win32)
-
-LIBNAME ?=     olsrd_cfgparser.dll
-BINNAME ?=     olsrd_cfgparser.exe
-OBJS +=                ../win32/compat.o ../ipcalc.o ../builddata.o ../common/autobuf.o ../common/string.o
-
-else
-
-LIBNAME ?=     olsrd_cfgparser.so.0.1
-BINNAME ?=     olsrd_cfgparser
-endif
-
-
-ifdef MAKEBIN
-
-CPPFLAGS +=    -DMAKEBIN 
-NAME =         $(BINNAME)
-
-else 
-
-# build lib per default
-
-ifeq (${OS}, osx)
-LDFLAGS +=     -dynamiclib -single_module
-else
-LDFLAGS +=     -shared -Wl,-soname,$(LIBNAME)
-endif
-
-ifeq (${OS}, win32)
-LDFLAGS +=     -Wl,--out-implib=libolsrd_cfgparser.a -Wl,--export-all-symbols
-endif
-
-CPPFLAGS +=    -DMAKELIB
-NAME =         $(LIBNAME)
-
-endif
-
-.PHONY: install clean uberclean
-
-# Targets
-default_target: $(NAME)
-
-$(NAME):       $(OBJS)
-               $(CC) $(LDFLAGS) -o "$@" $^ $(LIBS)
-
-install:
-               install -D -m 755 $(NAME) $(LIBDIR)/$(NAME)
-               /sbin/ldconfig -n $(LIBDIR)
-
-clean:
-               rm -f *.[od~] $(LIBNAME) $(BINNAME) $(TMPFILES)
-
-uberclean:     clean
diff --git a/src/cfgparser/README b/src/cfgparser/README
deleted file mode 100644 (file)
index 73b8098..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-
-TODO..
-
-The configparser can be built in three ways.
-
-1. As part of olsrd. This is done when building olsrd.
-
-2. As a binary executable. Just do 'make' in the current
-   directory(src/cfgparser). The binary will be called
-   olsrd_cfgparser
-
-3. As a shared library. Do 'make MAKELIB=1' in the current
-   directory(src/cfgparser).
-
-
-the parser can both parse configfiles and write such files
-based on provided data.
-
-More to come.
-
-
-- Andreas
diff --git a/src/cfgparser/cfgfile_gen.c b/src/cfgparser/cfgfile_gen.c
deleted file mode 100644 (file)
index 8c37369..0000000
+++ /dev/null
@@ -1,360 +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 "olsrd_conf.h"
-#include "../olsr_cfg.h"
-#include "../ipcalc.h"
-#include "../net_olsr.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-
-int
-cfgparser_olsrd_write_cnf(const struct olsrd_config *cnf, const char *fname)
-{
-  struct autobuf abuf;
-  FILE *fd = fopen(fname, "w");
-  if (fd == NULL) {
-    fprintf(stderr, "Could not open file %s for writing\n%s\n", fname, strerror(errno));
-    return -1;
-  }
-
-  printf("Writing config to file \"%s\".... ", fname);
-
-  abuf_init(&abuf, 0);
-  cfgparser_olsrd_write_cnf_buf(&abuf, cnf, false);
-  fputs(abuf.buf, fd);
-
-  abuf_free(&abuf);
-  fclose(fd);
-  printf("DONE\n");
-
-  return 1;
-}
-
-static INLINE void append_float(struct autobuf *abuf, const char *name, float val, float deflt, bool first)
-{
-  if (val != deflt) {
-    abuf_appendf(abuf, "    %s\t%0.2f\n", name, val);
-  } else if (first) {
-    abuf_appendf(abuf, "    #%s\t%0.2f\n", name, val);
-  }
-}
-
-void
-cfgparser_olsrd_write_cnf_buf(struct autobuf *abuf, const struct olsrd_config *cnf, bool write_more_comments)
-{
-  char ipv6_buf[INET6_ADDRSTRLEN];             /* buffer for IPv6 inet_ntop */
-  const char *s;
-
-  abuf_appendf(abuf, "#\n"
-                     "# Configuration file for %s\n"
-                     "# automatically generated by olsrd-cnf parser v.  %s\n"
-                     "#\n\n", olsrd_version, PARSER_VERSION);
-
-  /* Debug level */
-  abuf_appendf(abuf, "# Debug level(0-9)\n"
-                     "# If set to 0 the daemon runs in the background\n"
-                     "DebugLevel\t%d\n\n", cnf->debug_level);
-
-  /* IP version */
-  abuf_appendf(abuf, "# IP version to use (4 or 6)\n"
-                     "IpVersion\t%d\n\n", cnf->ip_version == AF_INET ? 4 : 6);
-
-  /* FIB Metric */
-  abuf_appendf(abuf, "# FIBMetric (\"%s\", \"%s\", or \"%s\")\n"
-                     "FIBMetric\t\"%s\"\n\n",
-                     CFG_FIBM_FLAT, CFG_FIBM_CORRECT, CFG_FIBM_APPROX,
-                     FIBM_FLAT == cnf->fib_metric ? CFG_FIBM_FLAT : FIBM_CORRECT == cnf->fib_metric ? CFG_FIBM_CORRECT : CFG_FIBM_APPROX);
-
-  /* HNA IPv4/IPv6 */
-  abuf_appendf(abuf, "# HNA IPv%d routes\n"
-                     "# syntax: netaddr/prefix\n"
-                     "Hna%d {\n", cnf->ip_version == AF_INET ? 4 : 6, cnf->ip_version == AF_INET ? 4 : 6);
-  if (cnf->hna_entries) {
-    struct ip_prefix_list *h;
-    for (h  = cnf->hna_entries; h != NULL; h = h->next) {
-      struct ipprefix_str strbuf;
-      abuf_appendf(abuf, "    %s\n", olsr_ip_prefix_to_string(&strbuf, &h->net));
-    }
-  }
-  abuf_appendf(abuf, "}\n\n");
-
-  /* No interfaces */
-  abuf_appendf(abuf, "# Should olsrd keep on running even if there are\n"
-                     "# no interfaces available? This is a good idea\n"
-                     "# for a PCMCIA/USB hotswap environment.\n"
-                     "# \"yes\" OR \"no\"\n"
-                     "AllowNoInt\t%s\n\n", cnf->allow_no_interfaces ? "yes" : "no");
-
-  /* TOS */
-  abuf_appendf(abuf, "# TOS(type of service) to use. Default is 16\n"
-                      "TosValue\t%d\n\n", cnf->tos);
-
-  /* RtProto */
-    abuf_appendf(abuf, "# Routing proto flag to use. Default is 4 (BOOT)\n"
-                         "RtProto\t\t%d\n\n", cnf->rtproto);
-
-  /* RtTable */
-  abuf_appendf(abuf, "# Policy Routing Table to use. Default is 254\n"
-                     "RtTable\t\t%d\n\n", cnf->rttable);
-
-  /* RtTableDefault */
-  abuf_appendf(abuf, "# Policy Routing Table to use for the default Route. Default is 0 (Take the same table as specified by RtTable)\n"
-                     "RtTableDefault\t\t%d\n\n", cnf->rttable_default);
-
-  /* Willingness */
-  abuf_appendf(abuf, "# The fixed willingness to use(0-7)\n"
-                     "# If not set willingness will be calculated\n"
-                     "# dynammically based on battery/power status\n"
-                     "%sWillingness\t%d\n\n", cnf->willingness_auto ? "#" : "", cnf->willingness_auto ? 4 : cnf->willingness);
-
-  /* IPC */
-  abuf_appendf(abuf, "# Allow processes like the GUI front-end\n"
-                     "# to connect to the daemon.\n"
-                     "IpcConnect {\n"
-                     "    MaxConnections\t%d\n", cnf->ipc_connections);
-
-  if (cnf->ipc_nets) {
-    struct ip_prefix_list *ie;
-    for (ie = cnf->ipc_nets; ie != NULL; ie = ie->next) {
-      if (ie->net.prefix_len == olsr_cnf->maxplen) {
-        struct ipaddr_str strbuf;
-        abuf_appendf(abuf, "    Host\t\t%s\n", olsr_ip_to_string(&strbuf, &ie->net.prefix));
-      } else {
-        struct ipprefix_str strbuf;
-        abuf_appendf(abuf, "    Net\t\t\t%s\n", olsr_ip_prefix_to_string(&strbuf, &ie->net));
-      }
-    }
-  }
-
-  abuf_appendf(abuf, "}\n");
-
-  /* Pollrate */
-  abuf_appendf(abuf, "# Polling rate in seconds(float).\n"
-                     "# Auto uses default value 0.05 sec\n"
-                     "Pollrate\t%0.2f\n", conv_pollrate_to_secs(cnf->pollrate));
-
-  /* NIC Changes Pollrate */
-  abuf_appendf(abuf, "# Interval to poll network interfaces for configuration\n"
-                     "# changes. Defaults to 2.5 seconds\n"
-                     "NicChgsPollInt\t%0.2f\n", cnf->nic_chgs_pollrate);
-
-  /* TC redundancy */
-  abuf_appendf(abuf, "# TC redundancy\n"
-                     "# Specifies how much neighbor info should\n"
-                     "# be sent in TC messages\n"
-                     "# Possible values are:\n"
-                     "# 0 - only send MPR selectors\n"
-                     "# 1 - send MPR selectors and MPRs\n"
-                     "# 2 - send all neighbors\n"
-                     "# defaults to 0\n"
-                     "TcRedundancy\t%d\n\n", cnf->tc_redundancy);
-
-  /* MPR coverage */
-  abuf_appendf(abuf, "# MPR coverage\n"
-                     "# Specifies how many MPRs a node should\n"
-                     "# try select to reach every 2 hop neighbor\n"
-                     "# Can be set to any integer >0\n"
-                     "# defaults to 1\n"
-                     "MprCoverage\t%d\n\n", cnf->mpr_coverage);
-
-  abuf_appendf(abuf, "# Fish Eye algorithm\n"
-                     "# 0 = do not use fish eye\n"
-                     "# 1 = use fish eye\n"
-                     "LinkQualityFishEye\t%d\n\n", cnf->lq_fish);
-
-  if (cnf->lq_algorithm != NULL) {
-    abuf_appendf(abuf, "# Link quality algorithm (if LinkQualityLevel > 0)\n"
-                       "# etx_fpm (hello loss, fixed point math)\n"
-                       "# etx_float (hello loss, floating point)\n"
-                       "# etx_ff (packet loss for freifunk compat)\n"
-                       "LinkQualityAlgorithm\t\"%s\"\n\n", cnf->lq_algorithm);
-  }
-
-  abuf_appendf(abuf, "# Link quality aging factor\n"
-                     "LinkQualityAging\t%f\n\n", cnf->lq_aging);
-
-  abuf_appendf(abuf, "# NAT threshold\n"
-                     "NatThreshold\t%f\n\n", cnf->lq_nat_thresh);
-
-  abuf_appendf(abuf, "# Clear screen when printing debug output?\n"
-                     "ClearScreen\t%s\n\n", cnf->clear_screen ? "yes" : "no");
-
-  /* Plugins */
-  abuf_appendf(abuf, "# Olsrd plugins to load\n"
-                     "# This must be the absolute path to the file\n"
-                     "# or the loader will use the following scheme:\n"
-                     "# - Try the paths in the LD_LIBRARY_PATH \n"
-                     "#   environment variable.\n"
-                     "# - The list of libraries cached in /etc/ld.so.cache\n"
-                     "# - /lib, followed by /usr/lib\n\n");
-  if (cnf->plugins) {
-    struct plugin_entry *pe;
-    for (pe = cnf->plugins; pe != NULL; pe = pe->next) {
-      struct plugin_param  *pp;
-      abuf_appendf(abuf, "LoadPlugin \"%s\" {\n", pe->name);
-      for (pp = pe->params; pp != NULL; pp = pp->next) {
-        abuf_appendf(abuf, "    PlParam \"%s\"\t\"%s\"\n", pp->key, pp->value);
-      }
-      abuf_appendf(abuf, "}\n");
-    }
-  }
-  abuf_appendf(abuf, "\n");
-
-  /* Interfaces */
-  abuf_appendf(abuf, "# Interfaces\n"
-                     "# Multiple interfaces with the same configuration\n"
-                     "# can shar the same config block. Just list the\n"
-                     "# interfaces(e.g. Interface \"eth0\" \"eth2\"\n");
-  /* Interfaces */
-  if (cnf->interfaces) {
-    struct olsr_if *in;
-    bool first;
-    for (in = cnf->interfaces, first = write_more_comments;
-         in != NULL;
-         in = in->next, first = false)        {
-      abuf_appendf(abuf, "Interface \"%s\" {\n", in->name);
-
-      if (first) {
-        abuf_appendf(abuf, "    # IPv4 broadcast address to use. The\n"
-                           "    # one usefull example would be 255.255.255.255\n"
-                           "    # If not defined the broadcastaddress\n"
-                           "    # every card is configured with is used\n\n");
-      }
-
-      if (in->cnf->ipv4_broadcast.v4.s_addr) {
-        abuf_appendf(abuf, "    Ip4Broadcast\t%s\n", inet_ntoa(in->cnf->ipv4_broadcast.v4));
-      } else if (first) {
-        abuf_appendf(abuf, "    #Ip4Broadcast\t255.255.255.255\n");
-      }
-
-      if (first) {
-        abuf_appendf(abuf, "\n    # IPv6 address type to use.\n"
-                           "    # Must be 'auto', 'site-local', 'unique-local' or 'global'\n\n");
-      }
-      if (in->cnf->ipv6_addrtype == OLSR_IP6T_SITELOCAL) s = CFG_IP6T_SITELOCAL;
-      else if(in->cnf->ipv6_addrtype == OLSR_IP6T_UNIQUELOCAL) s = CFG_IP6T_UNIQUELOCAL;
-      else if(in->cnf->ipv6_addrtype == OLSR_IP6T_GLOBAL) s = CFG_IP6T_GLOBAL;
-      else s = CFG_IP6T_AUTO;
-      abuf_appendf(abuf, "    Ip6AddrType\t%s\n\n", s);
-
-      if (first) {
-        abuf_appendf(abuf, "\n"
-                           "    # IPv6 multicast address to use when\n"
-                           "    # using site-local addresses.\n"
-                           "    # If not defined, ff05::15 is used\n");
-      }
-      abuf_appendf(abuf, "    Ip6MulticastSite\t%s\n", inet_ntop(AF_INET6, &in->cnf->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
-      if (first) {
-        abuf_appendf(abuf, "\n    # IPv6 multicast address to use when\n"
-                           "    # using global addresses\n"
-                           "    # If not defined, ff0e::1 is used\n");
-      }
-      abuf_appendf(abuf, "    Ip6MulticastGlobal\t%s\n", inet_ntop(AF_INET6, &in->cnf->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
-      if (first) {
-        abuf_appendf(abuf, "\n");
-      }
-      abuf_appendf(abuf, "    # Olsrd can autodetect changes in\n"
-                         "    # interface configurations. Enabled by default\n"
-                         "    # turn off to save CPU.\n"
-                         "    AutoDetectChanges: %s\n\n", in->cnf->autodetect_chg ? "yes" : "no");
-
-      if (first) {
-        abuf_appendf(abuf, "    # Emission and validity intervals.\n"
-                           "    # If not defined, RFC proposed values will\n"
-                           "    # in most cases be used.\n");
-      }
-      append_float(abuf, "HelloInterval", in->cnf->hello_params.emission_interval, HELLO_INTERVAL, first);
-      append_float(abuf, "HelloValidityTime", in->cnf->hello_params.validity_time, NEIGHB_HOLD_TIME, first);
-      append_float(abuf, "TcInterval", in->cnf->tc_params.emission_interval, TC_INTERVAL, first);
-      append_float(abuf, "TcValidityTime", in->cnf->tc_params.validity_time, TOP_HOLD_TIME, first);
-      append_float(abuf, "MidValidityTime", in->cnf->mid_params.validity_time, MID_HOLD_TIME, first);
-      append_float(abuf, "HnaInterval", in->cnf->hna_params.emission_interval, HNA_INTERVAL, first);
-      append_float(abuf, "HnaValidityTime", in->cnf->hna_params.validity_time, HNA_HOLD_TIME, first);
-      if (in->cnf->lq_mult == NULL) {
-        if (first) {
-          abuf_appendf(abuf, "    #LinkQualityMult\tdefault 1.0\n");
-        }
-      } else {
-        struct olsr_lq_mult *mult;
-        for (mult = in->cnf->lq_mult; mult != NULL; mult = mult->next) {
-          abuf_appendf(abuf, "    LinkQualityMult\t%s %0.2f\n",
-                            inet_ntop(cnf->ip_version, &mult->addr, ipv6_buf, sizeof(ipv6_buf)),
-                            (float)mult->value / 65536.0);
-        }
-      }
-
-      if (first) {
-        abuf_appendf(abuf, "    # When multiple links exist between hosts\n"
-                           "    # the weight of interface is used to determine\n"
-                           "    # the link to use. Normally the weight is\n"
-                           "    # automatically calculated by olsrd based\n"
-                           "    # on the characteristics of the interface,\n"
-                           "    # but here you can specify a fixed value.\n"
-                           "    # Olsrd will choose links with the lowest value.\n"
-                           "    # Note:\n"
-                           "    # Interface weight is used only when LinkQualityLevel is 0.\n"
-                           "    # For any other value of LinkQualityLevel, the interface ETX\n"
-                           "    # value is used instead.\n\n");
-      }
-      if (in->cnf->weight.fixed) {
-        abuf_appendf(abuf, "    Weight\t %d\n", in->cnf->weight.value);
-      } else if (first) {
-        abuf_appendf(abuf, "    #Weight\t 0\n");
-      }
-
-      abuf_appendf(abuf, "}\n\n");
-    }
-  }
-  abuf_appendf(abuf, "\n# END AUTOGENERATED CONFIG\n");
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/cfgparser/local.mk b/src/cfgparser/local.mk
deleted file mode 100644 (file)
index c947cc8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-
-# The olsr.org Optimized Link-State Routing daemon(olsrd)
-# Copyright (c) 2004, 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.
-#
-
-# avoid the $(if) everywhere
-C=$(if $(CFGDIR),$(CFGDIR)/)
-
-# add the variables as we may have others already there
-SRCS += $(foreach file,olsrd_conf oparse oscan cfgfile_gen,$(C)$(file).c)
-OBJS += $(foreach file,olsrd_conf oparse oscan cfgfile_gen,$(C)$(file).o)
-HDRS += $(foreach file,olsrd_conf oparse,$(C)$(file).h)
-
-$(C)oscan.c: $(C)oscan.lex $(C)Makefile
-       $(FLEX) -Cem -o"$@-tmp" "$<"
-       sed     -e '/^static/s/yy_get_next_buffer[\(][\)]/yy_get_next_buffer(void)/' \
-               -e '/^static/s/yy_get_previous_state[\(][\)]/yy_get_previous_state(void)/' \
-               -e '/^static/s/yygrowstack[\(][\)]/yygrowstack(void)/' \
-               -e '/^static/s/input[\(][\)]/input(void)/' \
-               -e '/^static  *void  *yy_fatal_error/s/^\(.*)\);$$/\1 __attribute__((noreturn));/' \
-               -e 's/register //' \
-               -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \
-               < "$@-tmp" >"$@"
-       $(RM) "$@-tmp"
-
-# we need a dependency to generate oparse before we compile oscan.c
-$(C)oscan.o: $(C)oparse.c
-# we need potentially another -I directory
-$(C)oscan.o: CPPFLAGS += $(if $(CFGDIR),-I$(CFGDIR)) -DYY_NO_INPUT
-$(C)oscan.o: CFLAGS += -Wno-sign-compare
-
-$(C)oparse.c: $(C)oparse.y $(C)olsrd_conf.h $(C)Makefile
-       $(BISON) -d -o "$@-tmp" "$<"
-       sed     -e 's/register //' \
-               -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \
-               < "$@-tmp" >"$@"
-       mv "$(subst .c,.h,$@-tmp)" "$(subst .c,.h,$@)"
-       $(RM) "$@-tmp" "$(subst .c,.h,$@-tmp)"
-$(C)oparse.o: CPPFLAGS += -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=1
-
-# and a few files to be cleaned
-TMPFILES += $(foreach pat,oscan.c oparse.c oparse.h,$(C)$(pat) $(C)$(pat)-tmp)
diff --git a/src/cfgparser/olsrd.conf.example b/src/cfgparser/olsrd.conf.example
deleted file mode 100644 (file)
index 3b4db63..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-#
-# UniK OLSR daemon config file
-#
-# Lines starting with a # are discarded
-#
-
-# Debug level(0-9)
-# If set to 0 the daemon runs in the background
-
-DebugLevel     1
-
-# IP version to use (4 or 6)
-
-IpVersion      4
-
-# HNA IPv4 routes
-# syntax: netaddr netmask
-# Example Internet gateway:
-# 0.0.0.0 0.0.0.0
-
-Hna4
-{
-    0.0.0.0   0.0.0.0
-    15.15.0.0 255.255.255.0
-    15.16.0.0 255.255.255.0
-}
-
-# HNA IPv6 routes
-# syntax: netaddr prefix
-# Example Internet gateway:
-Hna6
-{
-     ::              0
-    fecb:ab:ed:: 48
-    fecb:ff:dd::dd:d 48
-    fec0:2200:106:: 48
-    fec0:2200:106:0:0:0:0:0 48
-}
-
-
-# Should olsrd keep on running even if there are
-# no interfaces available? This is a good idea
-# for a PCMCIA/USB hotswap environment.
-# "yes" OR "no"
-
-AllowNoInt     yes
-
-# TOS(type of service) value for
-# the IP header of control traffic.
-# If not set it will default to 16
-
-#TosValue      16
-
-# The fixed willingness to use(0-7)
-# If not set willingness will be calculated
-# dynammically based on battery/power status
-
-#Willingness           4
-
-# Allow processes like the GUI front-end
-# to connect to the daemon.
-
-IpcConnect
-{
-     # Determines how many simultaneously
-     # IPC connections that will be allowed
-     # Setting this to 0 disables IPC
-
-     MaxConnections  1
-
-     # By default only 127.0.0.1 is allowed
-     # to connect. Here allowed hosts can
-     # be added
-
-     Host            127.0.0.1
-     Host            10.0.0.5
-
-     # Specify entire net-ranges that are 
-     # allowed to connect
-
-     Net             192.168.1.0 255.255.255.0     
-}
-
-# Wether to use hysteresis or not
-# Hysteresis adds more robustness to the
-# link sensing but delays neighbor registration.
-# Used by default. 'yes' or 'no'
-
-UseHysteresis  yes
-
-# Hysteresis parameters
-# Do not alter these unless you know 
-# what you are doing!
-# Set to auto by default. Allowed
-# values are floating point values
-# in the interval 0,1
-# THR_LOW must always be lower than
-# THR_HIGH!!
-
-#HystScaling   0.50
-#HystThrHigh   0.80
-#HystThrLow    0.30
-
-
-# Polling rate in seconds(float). 
-# Default value 0.05 sec
-
-Pollrate       0.05
-
-
-# TC redundancy
-# Specifies how much neighbor info should
-# be sent in TC messages
-# Possible values are:
-# 0 - only send MPR selectors
-# 1 - send MPR selectors and MPRs
-# 2 - send all neighbors
-#
-# defaults to 0
-
-TcRedundancy   0
-
-#
-# NatThreshold 
-#
-# (currently this is only in the freifunk firmware)
-# If the NAT-Endpoint (the preferred 0/0 HNA 
-# emitting node) is to be changed, the ETX value of the current 0/0 is 
-# compared to the new one. If the ETX difference is too small, the default 
-# route isn't changed. 
-#NatThreshold  0.9
-
-#
-# MPR coverage
-# Specifies how many MPRs a node should
-# try select to reach every 2 hop neighbor
-#
-# Can be set to any integer >0
-#
-# defaults to 1
-
-MprCoverage    1
-
-
-# Olsrd plugins to load
-# This must be the absolute path to the file
-# or the loader will use the following scheme:
-# - Try the paths in the LD_LIBRARY_PATH 
-#   environment variable.
-# - The list of libraries cached in /etc/ld.so.cache
-# - /lib, followed by /usr/lib
-LoadPlugin "olsrd_secure.so.0.3"
-{
-    PlParam     "key1"   "value1"
-    # Might be possible to set options here in
-    # future versions
-}
-
-LoadPlugin "olsrd_dyn_gw.so.0.1"
-{
-    PlParam     "key4"   "value3"
-    # Might be possible to set options here in
-    # future versions
-}
-
-# olsrd_dyn_gw.so.0.1
-# olsrd_power.so.0.1
-
-
-
-
-# Interfaces and their rules
-# Omitted options will be set to the
-# default values.
-Interface "eth0"
-{
-
-    # IPv4 broadcast address to use. The
-    # one usefull example would be 255.255.255.255
-    # If not defined the broadcastaddress
-    # every card is configured with is used
-
-    Ip4Broadcast       255.255.255.255
-
-    # IPv6 address scope to use.
-    # Must be 'site-local' or 'global'
-
-    # Ip6AddrType              site-local
-
-    # IPv6 multicast address to use when
-    # using site-local addresses.
-    # If not defined, ff05::15 is used
-
-    Ip6MulticastSite   ff05::11
-
-    # IPv6 multicast address to use when
-    # using global addresses
-    # If not defined, ff0e::1 is used
-
-    # Ip6MulticastGlobal       ff0e::1
-
-
-    # Emission intervals.
-    # If not defined, RFC proposed values will
-    # be used in most cases.
-
-    # Hello interval in seconds(float)
-    # HelloInterval    2.0
-
-    # HELLO validity time
-    # HelloValidityTime        6.0
-
-    # TC interval in seconds(float)
-    TcInterval        5.0
-
-    # TC validity time
-    # TcValidityTime   15.0
-
-    # MID interval in seconds(float)
-    # MidInterval      5.0
-
-    # MID validity time
-    # MidValidityTime  15.0
-
-    # HNA interval in seconds(float)
-    # HnaInterval      5.0
-
-    # HNA validity time
-    # HnaValidityTime  15.0
-}
-
-Interface "eth1"
-{
-    # IPv4 broadcast address to use. The
-    # one usefull example would be 255.255.255.255
-    # If not defined the broadcastaddress
-    # every card is configured with is used
-
-    # Ip4Broadcast     255.255.255.255
-
-    # IPv6 address scope to use.
-    # Must be 'site-local' or 'global'
-
-    Ip6AddrType                site-local
-
-    # IPv6 multicast address to use when
-    # using site-local addresses.
-    # If not defined, ff05::15 is used
-
-    Ip6MulticastSite   ff05::15
-
-    # IPv6 multicast address to use when
-    # using global addresses
-    # If not defined, ff0e::1 is used
-
-    Ip6MulticastGlobal ff0e::1
-
-
-    # Emission intervals.
-    # If not defined, RFC proposed values will
-    # be used in most cases.
-
-    # Hello interval in seconds(float)
-    HelloInterval    1.0
-
-    # HELLO validity time
-    HelloValidityTime  3.0
-
-    # TC interval in seconds(float)
-    TcInterval        4.0
-
-    # TC validity time
-    TcValidityTime     14.0
-
-    # MID interval in seconds(float)
-    MidInterval        5.0
-
-    # MID validity time
-    MidValidityTime    15.0
-
-    # HNA interval in seconds(float)
-    HnaInterval        5.0
-
-    # HNA validity time
-    HnaValidityTime    15.0
-
-}
diff --git a/src/cfgparser/olsrd_cfgparser.def b/src/cfgparser/olsrd_cfgparser.def
deleted file mode 100644 (file)
index 4642e03..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-EXPORTS
-       cfgparser_olsrd_parse_cnf
-       cfgparser_olsrd_sanity_check_cnf
-       cfgparser_olsrd_free_cnf
-       cfgparser_olsrd_print_cnf
-       cfgparser_olsrd_write_cnf
-       cfgparser_olsrd_write_cnf_buf
-       cfgparser_get_default_if_config
-       cfgparser_olsrd_get_default_cnf
-       win32_stdio_hack
-       win32_olsrd_malloc
-       win32_olsrd_free
diff --git a/src/cfgparser/olsrd_conf.c b/src/cfgparser/olsrd_conf.c
deleted file mode 100644 (file)
index a0363ef..0000000
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, 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 "olsrd_conf.h"
-#include "ipcalc.h"
-#include "olsr_cfg.h"
-#include "defs.h"
-#include "net_olsr.h"
-#include "olsr.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-
-extern FILE *yyin;
-extern int yyparse(void);
-
-static char copyright_string[] __attribute__((unused)) = "The olsr.org Optimized Link-State Routing daemon(olsrd) Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org) All rights reserved.";
-
-int current_line;
-
-#ifdef MAKEBIN
-
-/* Build as standalone binary */
-int
-main(int argc, char *argv[])
-{
-  struct olsrd_config *cnf;
-
-  if(argc == 1)
-    {
-      fprintf(stderr, "Usage: olsrd_cfgparser [filename] -print\n\n");
-      exit(EXIT_FAILURE);
-    }
-
-  if((cnf = olsrd_parse_cnf(argv[1])) != NULL)
-    {
-      if((argc > 2) && (!strcmp(argv[2], "-print")))
-       {
-         olsrd_print_cnf(cnf);
-         olsrd_write_cnf(cnf, "./out.conf");
-       }
-      else
-        printf("Use -print to view parsed values\n");
-      printf("Configfile parsed OK\n");
-    }
-  else
-    {
-      printf("Failed parsing \"%s\"\n", argv[1]);
-    }
-
-  return 0;
-}
-
-#else
-
-/* Build as part of olsrd */
-
-
-#endif
-
-struct olsrd_config *
-cfgparser_olsrd_parse_cnf(const char *filename)
-{
-  struct olsr_if *in, *new_ifqueue;
-  int rc;
-
-  /* Initialize the global varibles - oparse.y needs it there */
-  olsr_cnf = malloc(sizeof(*olsr_cnf));
-  if (olsr_cnf == NULL) {
-    fprintf(stderr, "Out of memory %s\n", __func__);
-    return NULL;
-  }
-
-  cfgparser_set_default_cnf(olsr_cnf);
-
-  printf("Parsing file: \"%s\"\n", filename);
-
-  yyin = fopen(filename, "r");
-  if (yyin == NULL) {
-    fprintf(stderr, "Cannot open configuration file '%s': %s.\n",
-            filename, strerror(errno));
-    cfgparser_olsrd_free_cnf(olsr_cnf);
-    olsr_cnf = NULL;
-    return NULL;
-  }
-
-  current_line = 1;
-  rc = yyparse();
-  fclose(yyin);
-  if (rc != 0) {
-    cfgparser_olsrd_free_cnf(olsr_cnf);
-    olsr_cnf = NULL;
-    return NULL;
-  }
-
-  /* Reverse the queue (added by user request) */
-  in = olsr_cnf->interfaces;
-  new_ifqueue = NULL;
-
-  while(in) {
-    struct olsr_if *in_tmp = in;
-    in = in->next;
-
-    in_tmp->next = new_ifqueue;
-    new_ifqueue = in_tmp;
-  }
-
-  olsr_cnf->interfaces = new_ifqueue;
-
-  for (in = olsr_cnf->interfaces; in != NULL; in = in->next) {
-      /* set various stuff */
-      in->interf = NULL;
-      in->host_emul = false;
-  }
-  return olsr_cnf;
-}
-
-
-int
-cfgparser_check_pollrate(float *pollrate)
-{
-  if (*pollrate > MAX_POLLRATE) {
-    fprintf(stderr, "Pollrate %0.2f is too large\n", *pollrate);
-    return -1;
-  }
-#ifdef WIN32
-#define sysconf(_SC_CLK_TCK) 1000L
-#endif
-  if (*pollrate < MIN_POLLRATE || *pollrate < 1.0/sysconf(_SC_CLK_TCK)) {
-    fprintf(stderr, "Pollrate %0.2f is too small - setting it to %ld\n", *pollrate, sysconf(_SC_CLK_TCK));
-    *pollrate = 1.0/sysconf(_SC_CLK_TCK);
-  }
-  return 0;
-}
-
-int
-cfgparser_olsrd_sanity_check_cnf(struct olsrd_config *cnf)
-{
-  struct olsr_if           *in = cnf->interfaces;
-  struct if_config_options *io;
-
-  /* Debug level */
-  if(cnf->debug_level < MIN_DEBUGLVL ||
-     cnf->debug_level > MAX_DEBUGLVL)
-    {
-      fprintf(stderr, "Debuglevel %d is not allowed\n", cnf->debug_level);
-      return -1;
-    }
-
-  /* IP version */
-  if(cnf->ip_version != AF_INET &&
-     cnf->ip_version != AF_INET6)
-    {
-      fprintf(stderr, "Ipversion %d not allowed!\n", cnf->ip_version);
-      return -1;
-    }
-
-  /* TOS */
-  if(//cnf->tos < MIN_TOS ||
-     cnf->tos > MAX_TOS)
-    {
-      fprintf(stderr, "TOS %d is not allowed\n", cnf->tos);
-      return -1;
-    }
-
-  if(cnf->willingness_auto == false &&
-     (cnf->willingness > MAX_WILLINGNESS))
-    {
-      fprintf(stderr, "Willingness %d is not allowed\n", cnf->willingness);
-      return -1;
-    }
-
-  /* Check Link quality dijkstra limit */
-  if (olsr_cnf->lq_dinter < conv_pollrate_to_secs(cnf->pollrate) && olsr_cnf->lq_dlimit != 255) {
-       fprintf(stderr, "Link quality dijkstra limit must be higher than pollrate\n");
-       return -1;
-  }
-
-  /* NIC Changes Pollrate */
-  if(cnf->nic_chgs_pollrate < MIN_NICCHGPOLLRT ||
-     cnf->nic_chgs_pollrate > MAX_NICCHGPOLLRT)
-    {
-      fprintf(stderr, "NIC Changes Pollrate %0.2f is not allowed\n", cnf->nic_chgs_pollrate);
-      return -1;
-    }
-
-  /* TC redundancy */
-  if(//cnf->tc_redundancy < MIN_TC_REDUNDANCY ||
-     cnf->tc_redundancy > MAX_TC_REDUNDANCY)
-    {
-      fprintf(stderr, "TC redundancy %d is not allowed\n", cnf->tc_redundancy);
-      return -1;
-    }
-
-  /* MPR coverage */
-  if(cnf->mpr_coverage < MIN_MPR_COVERAGE ||
-     cnf->mpr_coverage > MAX_MPR_COVERAGE)
-    {
-      fprintf(stderr, "MPR coverage %d is not allowed\n", cnf->mpr_coverage);
-      return -1;
-    }
-
-  /* Link quality window size */
-  if(cnf->lq_aging < MIN_LQ_AGING || cnf->lq_aging > MAX_LQ_AGING)
-    {
-      fprintf(stderr, "LQ aging factor %f is not allowed\n", cnf->lq_aging);
-      return -1;
-    }
-
-  /* NAT threshold value */
-  if(cnf->lq_nat_thresh < 0.1 || cnf->lq_nat_thresh > 1.0)
-    {
-      fprintf(stderr, "NAT threshold %f is not allowed\n", cnf->lq_nat_thresh);
-      return -1;
-    }
-
-  if(in == NULL)
-    {
-      fprintf(stderr, "No interfaces configured!\n");
-      return -1;
-    }
-
-  /* Interfaces */
-  while(in)
-    {
-      io = in->cnf;
-
-      if(in->name == NULL || !strlen(in->name))
-       {
-         fprintf(stderr, "Interface has no name!\n");
-         return -1;
-       }
-
-      if(io == NULL)
-       {
-         fprintf(stderr, "Interface %s has no configuration!\n", in->name);
-         return -1;
-       }
-
-      /* HELLO interval */
-
-      if (io->hello_params.validity_time < 0.0)
-      {
-        io->hello_params.validity_time = (int)(REFRESH_INTERVAL / cnf->lq_aging);
-      }
-
-      if(io->hello_params.emission_interval < conv_pollrate_to_secs(cnf->pollrate) ||
-        io->hello_params.emission_interval > io->hello_params.validity_time)
-       {
-         fprintf(stderr, "Bad HELLO parameters! (em: %0.2f, vt: %0.2f)\n", io->hello_params.emission_interval, io->hello_params.validity_time);
-         return -1;
-       }
-
-      /* TC interval */
-      if(io->tc_params.emission_interval < conv_pollrate_to_secs(cnf->pollrate) ||
-        io->tc_params.emission_interval > io->tc_params.validity_time)
-       {
-         fprintf(stderr, "Bad TC parameters! (em: %0.2f, vt: %0.2f)\n", io->tc_params.emission_interval, io->tc_params.validity_time);
-         return -1;
-       }
-
-      /* MID interval */
-      if(io->mid_params.emission_interval < conv_pollrate_to_secs(cnf->pollrate) ||
-        io->mid_params.emission_interval > io->mid_params.validity_time)
-       {
-         fprintf(stderr, "Bad MID parameters! (em: %0.2f, vt: %0.2f)\n", io->mid_params.emission_interval, io->mid_params.validity_time);
-         return -1;
-       }
-
-      /* HNA interval */
-      if(io->hna_params.emission_interval < conv_pollrate_to_secs(cnf->pollrate) ||
-        io->hna_params.emission_interval > io->hna_params.validity_time)
-       {
-         fprintf(stderr, "Bad HNA parameters! (em: %0.2f, vt: %0.2f)\n", io->hna_params.emission_interval, io->hna_params.validity_time);
-         return -1;
-       }
-
-      in = in->next;
-    }
-
-  return 0;
-}
-
-
-void
-cfgparser_olsrd_free_cnf(struct olsrd_config *cnf)
-{
-  struct ip_prefix_list   *hd,   *h = cnf->hna_entries;
-  struct olsr_if           *ind, *in = cnf->interfaces;
-  struct plugin_entry      *ped, *pe = cnf->plugins;
-  struct olsr_lq_mult      *mult, *next_mult;
-
-  while(h)
-    {
-      hd = h;
-      h = h->next;
-      free(hd);
-    }
-
-  while(in)
-    {
-      for (mult = in->cnf->lq_mult; mult != NULL; mult = next_mult)
-      {
-        next_mult = mult->next;
-        free(mult);
-      }
-
-      free(in->cnf);
-      ind = in;
-      in = in->next;
-      free(ind->name);
-      free(ind->config);
-      free(ind);
-    }
-
-  while(pe)
-    {
-      ped = pe;
-      pe = pe->next;
-      free(ped->name);
-      free(ped);
-    }
-
-  return;
-}
-
-
-
-struct olsrd_config *
-cfgparser_olsrd_get_default_cnf(void)
-{
-  struct olsrd_config *c = malloc(sizeof(struct olsrd_config));
-  if (c == NULL) {
-    fprintf(stderr, "Out of memory %s\n", __func__);
-    return NULL;
-  }
-
-  cfgparser_set_default_cnf(c);
-  return c;
-}
-
-
-
-
-void
-cfgparser_set_default_cnf(struct olsrd_config *cnf)
-{
-    memset(cnf, 0, sizeof(*cnf));
-
-    cnf->debug_level = DEF_DEBUGLVL;
-    cnf->no_fork = false;
-    cnf->host_emul = false;
-    cnf->ip_version  = AF_INET;
-    cnf->ipsize = sizeof(struct in_addr);
-    cnf->maxplen = 32;
-    cnf->allow_no_interfaces = DEF_ALLOW_NO_INTS;
-    cnf->tos = DEF_TOS;
-    cnf->rtproto = 3;
-    cnf->rttable = 254;
-    cnf->rttable_default = 0;
-    cnf->willingness_auto = DEF_WILL_AUTO;
-    cnf->ipc_connections = DEF_IPC_CONNECTIONS;
-    cnf->fib_metric = DEF_FIB_METRIC;
-
-    cnf->pollrate = conv_pollrate_to_microsecs(DEF_POLLRATE);
-    cnf->nic_chgs_pollrate = DEF_NICCHGPOLLRT;
-
-    cnf->tc_redundancy = TC_REDUNDANCY;
-    cnf->mpr_coverage = MPR_COVERAGE;
-    cnf->lq_fish = DEF_LQ_FISH;
-    cnf->lq_dlimit = DEF_LQ_DIJK_LIMIT;
-    cnf->lq_dinter = DEF_LQ_DIJK_INTER;
-    cnf->lq_aging = DEF_LQ_AGING;
-    cnf->lq_algorithm = NULL;
-    cnf->lq_nat_thresh = DEF_LQ_NAT_THRESH;
-    cnf->clear_screen = DEF_CLEAR_SCREEN;
-
-    cnf->del_gws = false;
-    cnf->will_int = 10 * HELLO_INTERVAL;
-    cnf->exit_value = EXIT_SUCCESS;
-    cnf->max_tc_vtime = 0.0;
-    cnf->ioctl_s = 0;
-
-#if defined linux
-    cnf->rts_linux = 0;
-#endif
-#if defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__ || defined __OpenBSD__
-    cnf->rts_bsd = 0;
-#endif
-}
-
-static void cfgparser_init_default_if_config(struct if_config_options *io)
-{
-  struct in6_addr in6;
-
-  memset(io, 0, sizeof(*io));
-
-  io->ipv6_addrtype = 1; /* XXX - FixMe */
-
-  inet_pton(AF_INET6, OLSR_IPV6_MCAST_SITE_LOCAL, &in6);
-  io->ipv6_multi_site.v6 = in6;
-
-  inet_pton(AF_INET6, OLSR_IPV6_MCAST_GLOBAL, &in6);
-  io->ipv6_multi_glbl.v6 = in6;
-
-  io->lq_mult = NULL;
-
-  io->weight.fixed = false;
-  io->weight.value = 0;
-
-  io->ipv6_addrtype = 0; /* global */
-
-  io->hello_params.emission_interval = HELLO_INTERVAL;
-  io->hello_params.validity_time = NEIGHB_HOLD_TIME;
-  io->tc_params.emission_interval = TC_INTERVAL;
-  io->tc_params.validity_time = TOP_HOLD_TIME;
-  io->mid_params.emission_interval = MID_INTERVAL;
-  io->mid_params.validity_time = MID_HOLD_TIME;
-  io->hna_params.emission_interval = HNA_INTERVAL;
-  io->hna_params.validity_time = HNA_HOLD_TIME;
-  io->autodetect_chg = true;
-}
-
-struct if_config_options *cfgparser_get_default_if_config(void)
-{
-  struct if_config_options *io = malloc(sizeof(*io));
-
-  if(io == NULL) {
-    fprintf(stderr, "Out of memory %s\n", __func__);
-    return NULL;
-  }
-  cfgparser_init_default_if_config(io);
-  return io;
-}
-
-
-void
-cfgparser_olsrd_print_cnf(const struct olsrd_config *cnf)
-{
-  struct ip_prefix_list   *h  = cnf->hna_entries;
-  struct olsr_if           *in = cnf->interfaces;
-  struct plugin_entry      *pe = cnf->plugins;
-  struct ip_prefix_list    *ie = cnf->ipc_nets;
-  struct olsr_lq_mult      *mult;
-  char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
-
-  printf(" *** olsrd configuration ***\n");
-
-  printf("Debug Level      : %d\n", cnf->debug_level);
-  if(cnf->ip_version == AF_INET6) {
-    printf("IpVersion        : 6\n");
-  } else {
-    printf("IpVersion        : 4\n");
-  }
-  if(cnf->allow_no_interfaces) {
-    printf("No interfaces    : ALLOWED\n");
-  } else {
-    printf("No interfaces    : NOT ALLOWED\n");
-  }
-  printf("TOS              : 0x%02x\n", cnf->tos);
-  printf("RtProto          : 0x%02x\n", cnf->rtproto);
-  printf("RtTable          : 0x%02x\n", cnf->rttable);
-  printf("RtTableDefault   : 0x%02x\n", cnf->rttable_default);
-  if(cnf->willingness_auto)
-    printf("Willingness      : AUTO\n");
-  else
-    printf("Willingness      : %d\n", cnf->willingness);
-
-  printf("IPC connections  : %d\n", cnf->ipc_connections);
-  while(ie) {
-    if (ie->net.prefix_len == olsr_cnf->maxplen) {
-      struct ipaddr_str strbuf;
-      printf("\tHost %s\n", olsr_ip_to_string(&strbuf, &ie->net.prefix));
-    } else {
-      struct ipprefix_str prefixstr;
-      printf("\tNet %s\n", olsr_ip_prefix_to_string(&prefixstr, &ie->net));
-    }
-    ie = ie->next;
-  }
-
-
-  printf("Pollrate         : %0.2f\n", conv_pollrate_to_secs(cnf->pollrate));
-
-  printf("NIC ChangPollrate: %0.2f\n", cnf->nic_chgs_pollrate);
-
-  printf("TC redundancy    : %d\n", cnf->tc_redundancy);
-
-  printf("MPR coverage     : %d\n", cnf->mpr_coverage);
-
-  printf("LQ fish eye      : %d\n", cnf->lq_fish);
-
-  printf("LQ Dijkstra limit: %d, %0.2f\n", cnf->lq_dlimit, cnf->lq_dinter);
-
-  printf("LQ aging factor  : %f\n", cnf->lq_aging);
-
-  printf("LQ algorithm name: %s\n", cnf->lq_algorithm ? cnf->lq_algorithm : "default");
-
-  printf("NAT threshold    : %f\n", cnf->lq_nat_thresh);
-
-  printf("Clear screen     : %s\n", cnf->clear_screen ? "yes" : "no");
-
-  /* Interfaces */
-  if(in)
-    {
-      printf("Interfaces:\n");
-      while(in)
-       {
-         printf(" dev: \"%s\"\n", in->name);
-
-         if(in->cnf->ipv4_broadcast.v4.s_addr)
-           {
-             printf("\tIPv4 broadcast           : %s\n", inet_ntoa(in->cnf->ipv4_broadcast.v4));
-           }
-         else
-           {
-             printf("\tIPv4 broadcast           : AUTO\n");
-           }
-
-         printf("\tIPv6 addrtype            : %s\n", in->cnf->ipv6_addrtype ? "site-local" : "global");
-
-         //union olsr_ip_addr       ipv6_multi_site;
-         //union olsr_ip_addr       ipv6_multi_glbl;
-         printf("\tIPv6 multicast site/glbl : %s", inet_ntop(AF_INET6, &in->cnf->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
-         printf("/%s\n", inet_ntop(AF_INET6, &in->cnf->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
-
-         printf("\tHELLO emission/validity  : %0.2f/%0.2f\n", in->cnf->hello_params.emission_interval, in->cnf->hello_params.validity_time);
-         printf("\tTC emission/validity     : %0.2f/%0.2f\n", in->cnf->tc_params.emission_interval, in->cnf->tc_params.validity_time);
-         printf("\tMID emission/validity    : %0.2f/%0.2f\n", in->cnf->mid_params.emission_interval, in->cnf->mid_params.validity_time);
-         printf("\tHNA emission/validity    : %0.2f/%0.2f\n", in->cnf->hna_params.emission_interval, in->cnf->hna_params.validity_time);
-
-          for (mult = in->cnf->lq_mult; mult != NULL; mult = mult->next)
-          {
-            printf("\tLinkQualityMult          : %s %0.2f\n", inet_ntop(cnf->ip_version, &mult->addr, ipv6_buf, sizeof (ipv6_buf)), (float)(mult->value)/65536.0);
-          }
-
-          printf("\tAutodetetc changes       : %s\n", in->cnf->autodetect_chg ? "yes" : "no");
-
-         in = in->next;
-       }
-    }
-
-
-
-
-  /* Plugins */
-  if(pe)
-    {
-      printf("Plugins:\n");
-
-      while(pe)
-       {
-         printf("\tName: \"%s\"\n", pe->name);
-         pe = pe->next;
-       }
-    }
-
-  /* HNA IPv4 and IPv6 */
-  if(h) {
-    printf("HNA%d entries:\n", cnf->ip_version == AF_INET ? 4 : 6);
-    while(h) {
-      struct ipprefix_str prefixstr;
-      printf("\t%s\n", olsr_ip_prefix_to_string(&prefixstr, &h->net));
-      h = h->next;
-    }
-  }
-}
-
-#if defined WIN32
-struct ioinfo
-{
-       unsigned int handle;
-       unsigned char attr;
-       char buff;
-       int flag;
-       CRITICAL_SECTION lock;
-};
-
-void win32_stdio_hack(unsigned int handle)
-{
-  HMODULE lib;
-  struct ioinfo **info;
-
-  lib = LoadLibrary("msvcrt.dll");
-
-  info = (struct ioinfo **)GetProcAddress(lib, "__pioinfo");
-
-  // (*info)[1].handle = handle;
-  // (*info)[1].attr = 0x89; // FOPEN | FTEXT | FPIPE;
-
-  (*info)[2].handle = handle;
-  (*info)[2].attr = 0x89;
-
-  // stdout->_file = 1;
-  stderr->_file = 2;
-
-  // setbuf(stdout, NULL);
-  setbuf(stderr, NULL);
-}
-
-void*
-win32_olsrd_malloc(size_t size)
-{
-       return malloc(size);
-}
-
-void
-win32_olsrd_free(void* ptr)
-{
-       free(ptr);
-}
-#endif
-
-void cfgparser_ip_prefix_list_add(struct ip_prefix_list **list,
-                        const union olsr_ip_addr *net,
-                        uint8_t prefix_len)
-{
-  struct ip_prefix_list *new_entry = malloc(sizeof(*new_entry));
-
-  new_entry->net.prefix = *net;
-  new_entry->net.prefix_len = prefix_len;
-
-  /* Queue */
-  new_entry->next = *list;
-  *list = new_entry;
-}
-
-int cfgparser_ip_prefix_list_remove(struct ip_prefix_list **list,
-                          const union olsr_ip_addr *net,
-                          uint8_t prefix_len)
-{
-  struct ip_prefix_list *h = *list, *prev = NULL;
-
-  while (h != NULL) {
-    if (ipequal(net, &h->net.prefix) && h->net.prefix_len == prefix_len) {
-      /* Dequeue */
-      if (prev == NULL) {
-        *list = h->next;
-      } else {
-        prev->next = h->next;
-      }
-      free(h);
-      return 1;
-    }
-    prev = h;
-    h = h->next;
-  }
-  return 0;
-}
-
-struct ip_prefix_list *cfgparser_ip_prefix_list_find(struct ip_prefix_list *list,
-                                           const union olsr_ip_addr *net,
-                                           uint8_t prefix_len)
-{
-  struct ip_prefix_list *h;
-  for (h = list; h != NULL; h = h->next) {
-    if (prefix_len == h->net.prefix_len && ipequal(net, &h->net.prefix)) {
-      return h;
-    }
-  }
-  return NULL;
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/cfgparser/olsrd_conf.h b/src/cfgparser/olsrd_conf.h
deleted file mode 100644 (file)
index 721f75a..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, 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 _OLSRD_CONF_H
-#define _OLSRD_CONF_H
-
-#include "olsr_types.h"
-#include "olsr_cfg.h"
-#include "../common/autobuf.h"
-
-/* fixme: kann weg */
-#define PARSER_VERSION "0.1.2"
-
-
-extern int current_line;
-
-struct conf_token {
-  uint32_t integer;
-  float      floating;
-  bool  boolean;
-  char       *string;
-};
-
-#if defined __cplusplus
-extern "C" {
-#endif
-
-void cfgparser_set_default_cnf(struct olsrd_config *);
-struct olsrd_config *cfgparser_olsrd_parse_cnf(const char *filename);
-void cfgparser_olsrd_free_cnf(struct olsrd_config *cnf);
-int cfgparser_olsrd_sanity_check_cnf(struct olsrd_config *cnf);
-struct olsrd_config *cfgparser_olsrd_get_default_cnf(void);
-struct if_config_options *cfgparser_get_default_if_config(void);
-void cfgparser_olsrd_print_cnf(const struct olsrd_config *cnf);
-int cfgparser_olsrd_write_cnf(const struct olsrd_config *cnf, const char *fname);
-void cfgparser_olsrd_write_cnf_buf(struct autobuf *abuf, const struct olsrd_config *cnf, bool write_more_comments);
-int cfgparser_check_pollrate(float *pollrate);
-
-void cfgparser_ip_prefix_list_add(struct ip_prefix_list **, const union olsr_ip_addr *, uint8_t);
-int cfgparser_ip_prefix_list_remove(struct ip_prefix_list **, const union olsr_ip_addr *, uint8_t);
-struct ip_prefix_list *cfgparser_ip_prefix_list_find(struct ip_prefix_list *, const union olsr_ip_addr *net, uint8_t prefix_len);
-
-#ifdef WIN32
-void win32_stdio_hack(unsigned int);
-void *win32_olsrd_malloc(size_t size);
-void win32_olsrd_free(void *ptr);
-#endif
-
-#if defined __cplusplus
-}
-#endif
-
-#endif /* _OLSRD_CONF_H */
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/cfgparser/oparse.y b/src/cfgparser/oparse.y
deleted file mode 100644 (file)
index e96d93b..0000000
+++ /dev/null
@@ -1,1046 +0,0 @@
-%{
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, 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 "olsrd_conf.h"
-#include "../defs.h"
-#include "../ipcalc.h"
-#include "../net_olsr.h"
-#include "../link_set.h"
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-
-#define PARSER_DEBUG 0
-
-#if PARSER_DEBUG
-#define PARSER_DEBUG_PRINTF(x, ...)   printf(x, ##args)
-#else
-#define PARSER_DEBUG_PRINTF(x, ...)   do { } while (0)
-#endif
-
-#define YYSTYPE struct conf_token *
-
-void yyerror(const char *);
-int yylex(void);
-
-static int ifs_in_curr_cfg = 0;
-
-static int lq_mult_helper(YYSTYPE ip_addr_arg, YYSTYPE mult_arg);
-static int add_ipv6_addr(YYSTYPE ipaddr_arg, YYSTYPE prefixlen_arg);
-
-static int lq_mult_helper(YYSTYPE ip_addr_arg, YYSTYPE mult_arg)
-{
-  union olsr_ip_addr addr;
-  int i;
-  struct olsr_if *walker;
-
-#if PARSER_DEBUG > 0
-  printf("\tLinkQualityMult %s %0.2f\n",
-         (ip_addr_arg != NULL) ? ip_addr_arg->string : "any",
-         mult_arg->floating);
-#endif
-
-  memset(&addr, 0, sizeof(addr));
-
-  if (ip_addr_arg != NULL &&
-     inet_pton(olsr_cnf->ip_version, ip_addr_arg->string, &addr) <= 0) {
-    fprintf(stderr, "Cannot parse IP address %s.\n", ip_addr_arg->string);
-    return -1;
-  }
-
-  walker = olsr_cnf->interfaces;
-
-  for (i = 0; i < ifs_in_curr_cfg; i++) {
-    struct olsr_lq_mult *mult = malloc(sizeof(*mult));
-    if (mult == NULL) {
-      fprintf(stderr, "Out of memory (LQ multiplier).\n");
-      return -1;
-    }
-
-    mult->addr = addr;
-    mult->value = (uint32_t)(mult_arg->floating * LINK_LOSS_MULTIPLIER);
-
-    mult->next = walker->cnf->lq_mult;
-    walker->cnf->lq_mult = mult;
-
-    walker = walker->next;
-  }
-
-  if (ip_addr_arg != NULL) {
-    free(ip_addr_arg->string);
-    free(ip_addr_arg);
-  }
-
-  free(mult_arg);
-
-  return 0;
-}
-
-static int add_ipv6_addr(YYSTYPE ipaddr_arg, YYSTYPE prefixlen_arg)
-{
-  union olsr_ip_addr ipaddr;
-  PARSER_DEBUG_PRINTF("HNA IPv6 entry: %s/%d\n", ipaddr_arg->string, prefixlen_arg->integer);
-
-  if (olsr_cnf->ip_version != AF_INET6) {
-    fprintf(stderr, "IPv6 addresses can only be used if \"IpVersion\" == 6\n");
-    return 1;
-  }
-
-  if(inet_pton(AF_INET6, ipaddr_arg->string, &ipaddr) <= 0) {
-    fprintf(stderr, "ihna6entry: Failed converting IP address %s\n", ipaddr_arg->string);
-    return 1;
-  }
-
-  if (prefixlen_arg->integer > 128) {
-    fprintf(stderr, "ihna6entry: Illegal IPv6 prefix length %u\n", prefixlen_arg->integer);
-    return 1;
-  }
-
-  /* Queue */
-  cfgparser_ip_prefix_list_add(&olsr_cnf->hna_entries, &ipaddr, prefixlen_arg->integer);
-
-  free(ipaddr_arg->string);
-  free(ipaddr_arg);
-  free(prefixlen_arg);
-
-  return 0;
-}
-
-%}
-
-%token TOK_SLASH
-%token TOK_OPEN
-%token TOK_CLOSE
-
-%token TOK_STRING
-%token TOK_INTEGER
-%token TOK_FLOAT
-%token TOK_BOOLEAN
-
-%token TOK_IP6TYPE
-
-%token TOK_DEBUGLEVEL
-%token TOK_IPVERSION
-%token TOK_HNA4
-%token TOK_HNA6
-%token TOK_PLUGIN
-%token TOK_INTERFACE
-%token TOK_NOINT
-%token TOK_TOS
-%token TOK_RTPROTO
-%token TOK_RTTABLE
-%token TOK_RTTABLE_DEFAULT
-%token TOK_WILLINGNESS
-%token TOK_IPCCON
-%token TOK_FIBMETRIC
-%token TOK_POLLRATE
-%token TOK_NICCHGSPOLLRT
-%token TOK_TCREDUNDANCY
-%token TOK_MPRCOVERAGE
-%token TOK_LQ_FISH
-%token TOK_LQ_DLIMIT
-%token TOK_LQ_WSIZE
-%token TOK_LQ_AGING
-%token TOK_LQ_PLUGIN
-%token TOK_LQ_NAT_THRESH
-%token TOK_LQ_MULT
-%token TOK_CLEAR_SCREEN
-%token TOK_PLPARAM
-
-%token TOK_HOSTLABEL
-%token TOK_NETLABEL
-%token TOK_MAXIPC
-
-%token TOK_IP4BROADCAST
-%token TOK_IP6ADDRTYPE
-%token TOK_IP6MULTISITE
-%token TOK_IP6MULTIGLOBAL
-%token TOK_IFWEIGHT
-%token TOK_HELLOINT
-%token TOK_HELLOVAL
-%token TOK_TCINT
-%token TOK_TCVAL
-%token TOK_MIDINT
-%token TOK_MIDVAL
-%token TOK_HNAINT
-%token TOK_HNAVAL
-%token TOK_AUTODETCHG
-
-%token TOK_IP4_ADDR
-%token TOK_IP6_ADDR
-%token TOK_DEFAULT
-
-%token TOK_COMMENT
-
-%%
-
-conf:
-          | conf block
-          | conf stmt
-;
-
-stmt:       idebug
-          | iipversion
-          | fibmetric
-          | bnoint
-          | atos
-          | arttable
-          | arttable_default
-          | awillingness
-          | fpollrate
-          | fnicchgspollrt
-          | atcredundancy
-          | amprcoverage
-          | alq_plugin
-          | alq_fish
-          | alq_dlimit
-          | anat_thresh
-          | alq_wsize
-          | alq_aging
-          | bclear_screen
-          | vcomment
-;
-
-block:      TOK_HNA4 hna4body
-          | TOK_HNA6 hna6body
-          | TOK_IPCCON ipcbody
-          | ifblock ifbody
-          | plblock plbody
-;
-
-hna4body:       TOK_OPEN hna4stmts TOK_CLOSE
-;
-
-hna4stmts: | hna4stmts hna4stmt
-;
-
-hna4stmt:  vcomment
-         | ihna4entry
-;
-
-hna6body:       TOK_OPEN hna6stmts TOK_CLOSE
-;
-
-hna6stmts: | hna6stmts hna6stmt
-;
-
-hna6stmt:  vcomment
-         | ihna6entry
-;
-
-ipcbody:    TOK_OPEN ipcstmts TOK_CLOSE
-;
-
-ipcstmts: | ipcstmts ipcstmt
-;
-
-ipcstmt:  vcomment
-          | imaxipc
-          | ipchost
-          | ipcnet
-;
-
-ifblock:   ifstart ifnicks
-;
-
-ifnicks:   | ifnicks ifnick
-;
-
-ifbody:     TOK_OPEN ifstmts TOK_CLOSE
-;
-
-ifstmts:   | ifstmts ifstmt
-;
-
-ifstmt:      vcomment
-             | iifweight
-             | isetip4br
-             | isetip6addrt
-             | isetip6mults
-             | isetip6multg
-             | isethelloint
-             | isethelloval
-             | isettcint
-             | isettcval
-             | isetmidint
-             | isetmidval
-             | isethnaint
-             | isethnaval
-             | isetautodetchg
-             | isetlqmult
-;
-
-plbody:     TOK_OPEN plstmts TOK_CLOSE
-;
-
-plstmts:   | plstmts plstmt
-;
-
-plstmt:     plparam
-          | vcomment
-;
-
-imaxipc: TOK_MAXIPC TOK_INTEGER
-{
-  if ($2->integer > 255) {
-    fprintf(stderr, "\"MaxConnections\" must be >= 0 and <= 255 (and not %u)\n", $2->integer);
-    YYABORT;
-  }
-  olsr_cnf->ipc_connections = $2->integer;
-  free($2);
-}
-;
-
-ipchost: TOK_HOSTLABEL TOK_IP4_ADDR
-{
-  union olsr_ip_addr ipaddr;
-  PARSER_DEBUG_PRINTF("\tIPC host: %s\n", $2->string);
-  
-  if (inet_aton($2->string, &ipaddr.v4) == 0) {
-    fprintf(stderr, "Failed converting IP address IPC %s\n", $2->string);
-    YYABORT;
-  }
-
-  cfgparser_ip_prefix_list_add(&olsr_cnf->ipc_nets, &ipaddr, olsr_cnf->maxplen);
-
-  free($2->string);
-  free($2);
-}
-;
-
-ipcnet: TOK_NETLABEL TOK_IP4_ADDR TOK_IP4_ADDR
-{
-  union olsr_ip_addr ipaddr, netmask;
-
-  PARSER_DEBUG_PRINTF("\tIPC net: %s/%s\n", $2->string, $3->string);
-  
-  if (inet_pton(AF_INET, $2->string, &ipaddr.v4) == 0) {
-    fprintf(stderr, "Failed converting IP net IPC %s\n", $2->string);
-    YYABORT;
-  }
-
-  if (inet_pton(AF_INET, $3->string, &netmask.v4) == 0) {
-    fprintf(stderr, "Failed converting IP mask IPC %s\n", $3->string);
-    YYABORT;
-  }
-
-  cfgparser_ip_prefix_list_add(&olsr_cnf->ipc_nets, &ipaddr, olsr_netmask_to_prefix(&netmask));
-
-  free($2->string);
-  free($2);
-  free($3->string);
-  free($3);
-}
-        |       TOK_NETLABEL TOK_IP4_ADDR TOK_SLASH TOK_INTEGER
-{
-  union olsr_ip_addr ipaddr;
-
-  PARSER_DEBUG_PRINTF("\tIPC net: %s/%s\n", $2->string, $3->string);
-  
-  if (inet_pton(AF_INET, $2->string, &ipaddr.v4) == 0) {
-    fprintf(stderr, "Failed converting IP net IPC %s\n", $2->string);
-    YYABORT;
-  }
-
-  if ($4->integer > olsr_cnf->maxplen) {
-    fprintf(stderr, "ipcnet: Prefix len %u > %d is not allowed!\n", $4->integer, olsr_cnf->maxplen);
-    YYABORT;
-  }
-
-  cfgparser_ip_prefix_list_add(&olsr_cnf->ipc_nets, &ipaddr, $4->integer);
-
-  free($2->string);
-  free($2);
-  free($4);
-}
-;
-
-iifweight:       TOK_IFWEIGHT TOK_INTEGER
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("Fixed willingness: %d\n", $2->integer);
-
-  while (ifcnt) {
-    ifs->cnf->weight.value = $2->integer;
-    ifs->cnf->weight.fixed = true;
-
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-
-isetip4br: TOK_IP4BROADCAST TOK_IP4_ADDR
-{
-  struct in_addr in;
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tIPv4 broadcast: %s\n", $2->string);
-
-  if (inet_aton($2->string, &in) == 0) {
-    fprintf(stderr, "isetip4br: Failed converting IP address %s\n", $2->string);
-    YYABORT;
-  }
-
-  while (ifcnt) {
-    ifs->cnf->ipv4_broadcast.v4 = in;
-
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2->string);
-  free($2);
-}
-;
-
-isetip6addrt: TOK_IP6ADDRTYPE TOK_IP6TYPE
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  while (ifcnt) {
-    ifs->cnf->ipv6_addrtype = $2->integer;
-
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-
-isetip6mults: TOK_IP6MULTISITE TOK_IP6_ADDR
-{
-  struct in6_addr in6;
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tIPv6 site-local multicast: %s\n", $2->string);
-
-  if (inet_pton(AF_INET6, $2->string, &in6) <= 0) {
-    fprintf(stderr, "isetip6mults: Failed converting IP address %s\n", $2->string);
-    YYABORT;
-  }
-
-  while (ifcnt) {
-    ifs->cnf->ipv6_multi_site.v6 = in6;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2->string);
-  free($2);
-}
-;
-
-
-isetip6multg: TOK_IP6MULTIGLOBAL TOK_IP6_ADDR
-{
-  struct in6_addr in6;
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tIPv6 global multicast: %s\n", $2->string);
-
-  if (inet_pton(AF_INET6, $2->string, &in6) <= 0) {
-    fprintf(stderr, "isetip6multg: Failed converting IP address %s\n", $2->string);
-    YYABORT;
-  }
-
-  while (ifcnt) {
-    //memcpy(&ifs->cnf->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
-    ifs->cnf->ipv6_multi_glbl.v6 = in6;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2->string);
-  free($2);
-}
-;
-isethelloint: TOK_HELLOINT TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tHELLO interval: %0.2f\n", $2->floating);
-
-  while (ifcnt) {
-    ifs->cnf->hello_params.emission_interval = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isethelloval: TOK_HELLOVAL TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tHELLO validity: %0.2f\n", $2->floating);
-
-  while (ifcnt) {
-    ifs->cnf->hello_params.validity_time = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isettcint: TOK_TCINT TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tTC interval: %0.2f\n", $2->floating);
-
-  while (ifcnt) {
-    ifs->cnf->tc_params.emission_interval = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-  free($2);
-}
-;
-isettcval: TOK_TCVAL TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-  
-  PARSER_DEBUG_PRINTF("\tTC validity: %0.2f\n", $2->floating);
-  while (ifcnt) {
-    ifs->cnf->tc_params.validity_time = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isetmidint: TOK_MIDINT TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-
-  PARSER_DEBUG_PRINTF("\tMID interval: %0.2f\n", $2->floating);
-  while (ifcnt) {
-    ifs->cnf->mid_params.emission_interval = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isetmidval: TOK_MIDVAL TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tMID validity: %0.2f\n", $2->floating);
-  while (ifcnt) {
-    ifs->cnf->mid_params.validity_time = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isethnaint: TOK_HNAINT TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-  
-  PARSER_DEBUG_PRINTF("\tHNA interval: %0.2f\n", $2->floating);
-  while (ifcnt) {
-    ifs->cnf->hna_params.emission_interval = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isethnaval: TOK_HNAVAL TOK_FLOAT
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tHNA validity: %0.2f\n", $2->floating);
-  while (ifcnt) {
-    ifs->cnf->hna_params.validity_time = $2->floating;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-isetautodetchg: TOK_AUTODETCHG TOK_BOOLEAN
-{
-  int ifcnt = ifs_in_curr_cfg;
-  struct olsr_if *ifs = olsr_cnf->interfaces;
-
-  PARSER_DEBUG_PRINTF("\tAutodetect changes: %s\n", $2->boolean ? "YES" : "NO");
-  while (ifcnt) {
-    ifs->cnf->autodetect_chg = $2->boolean;
-      
-    ifs = ifs->next;
-    ifcnt--;
-  }
-
-  free($2);
-}
-;
-
-isetlqmult: TOK_LQ_MULT TOK_DEFAULT TOK_FLOAT
-{
-  if (lq_mult_helper($2, $3) < 0) {
-    YYABORT;
-  }
-}
-
-          | TOK_LQ_MULT TOK_IP4_ADDR TOK_FLOAT
-{
-  if (lq_mult_helper($2, $3) < 0) {
-    YYABORT;
-  }
-}
-
-          | TOK_LQ_MULT TOK_IP6_ADDR TOK_FLOAT
-{
-  if (lq_mult_helper($2, $3) < 0) {
-    YYABORT;
-  }
-}
-;
-
-idebug:       TOK_DEBUGLEVEL TOK_INTEGER
-{
-  if ($2->integer > 127) {
-    fprintf(stderr, "\"DebugLevel\" must be >= 0 and <= 127 (and not %u)\n", $2->integer);
-    YYABORT;
-  }
-  olsr_cnf->debug_level = $2->integer;
-  PARSER_DEBUG_PRINTF("Debug level: %d\n", olsr_cnf->debug_level);
-  free($2);
-}
-;
-
-
-iipversion:    TOK_IPVERSION TOK_INTEGER
-{
-  if ($2->integer == 4) {
-    olsr_cnf->ip_version = AF_INET;
-    olsr_cnf->ipsize = sizeof(struct in_addr);
-    olsr_cnf->maxplen = 32;
-  } else if ($2->integer == 6) {
-    olsr_cnf->ip_version = AF_INET6;
-    olsr_cnf->ipsize = sizeof(struct in6_addr);
-    olsr_cnf->maxplen = 128;
-  } else {
-    fprintf(stderr, "IPversion must be 4 or 6!\n");
-    YYABORT;
-  }
-
-  PARSER_DEBUG_PRINTF("IpVersion: %d\n", $2->integer);
-  free($2);
-}
-;
-
-fibmetric:    TOK_FIBMETRIC TOK_STRING
-{
-  PARSER_DEBUG_PRINTF("FIBMetric: %d\n", $2->string);
-  if (strcmp($2->string, CFG_FIBM_FLAT) == 0) {
-      olsr_cnf->fib_metric = FIBM_FLAT;
-  } else if (strcmp($2->string, CFG_FIBM_CORRECT) == 0) {
-      olsr_cnf->fib_metric = FIBM_CORRECT;
-  } else if (strcmp($2->string, CFG_FIBM_APPROX) == 0) {
-      olsr_cnf->fib_metric = FIBM_APPROX;
-  } else {
-    fprintf(stderr, "FIBMetric must be \"%s\", \"%s\", or \"%s\"!\n", CFG_FIBM_FLAT, CFG_FIBM_CORRECT, CFG_FIBM_APPROX);
-    YYABORT;
-  }
-  free($1);
-  free($2->string);
-  free($2);
-}
-;
-
-ihna4entry:     TOK_IP4_ADDR TOK_IP4_ADDR
-{
-  union olsr_ip_addr ipaddr, netmask;
-
-  PARSER_DEBUG_PRINTF("HNA IPv4 entry: %s/%s\n", $1->string, $2->string);
-
-  if (olsr_cnf->ip_version != AF_INET) {
-    fprintf(stderr, "IPv4 addresses can only be used if \"IpVersion\" == 4\n");
-    YYABORT;
-  }
-
-  if (inet_pton(AF_INET, $1->string, &ipaddr.v4) <= 0) {
-    fprintf(stderr, "ihna4entry: Failed converting IP address %s\n", $1->string);
-    YYABORT;
-  }
-  if (inet_pton(AF_INET, $2->string, &netmask.v4) <= 0) {
-    fprintf(stderr, "ihna4entry: Failed converting IP address %s\n", $1->string);
-    YYABORT;
-  }
-
-  /* check that the given IP address is actually a network address */
-  if ((ipaddr.v4.s_addr & ~netmask.v4.s_addr) != 0) {
-    fprintf(stderr, "ihna4entry: The ipaddress \"%s\" is not a network address!\n", $1->string);
-    YYABORT;
-  }
-
-  /* Queue */
-  cfgparser_ip_prefix_list_add(&olsr_cnf->hna_entries, &ipaddr, olsr_netmask_to_prefix(&netmask));
-
-  free($1->string);
-  free($1);
-  free($2->string);
-  free($2);
-}
-        |       TOK_IP4_ADDR TOK_SLASH TOK_INTEGER
-{
-  union olsr_ip_addr ipaddr, netmask;
-
-  PARSER_DEBUG_PRINTF("HNA IPv4 entry: %s/%d\n", $1->string, $3->integer);
-
-  if (inet_pton(AF_INET, $1->string, &ipaddr.v4) <= 0) {
-    fprintf(stderr, "ihna4entry: Failed converting IP address %s\n", $1->string);
-    YYABORT;
-  }
-  if ($3->integer > olsr_cnf->maxplen) {
-    fprintf(stderr, "ihna4entry: Prefix len %u > %d is not allowed!\n", $3->integer, olsr_cnf->maxplen);
-    YYABORT;
-  }
-
-  /* check that the given IP address is actually a network address */
-  olsr_prefix_to_netmask(&netmask, $3->integer);
-  if ((ipaddr.v4.s_addr & ~netmask.v4.s_addr) != 0) {
-    fprintf(stderr, "ihna4entry: The ipaddress \"%s\" is not a network address!\n", $1->string);
-    YYABORT;
-  }
-
-  /* Queue */
-  cfgparser_ip_prefix_list_add(&olsr_cnf->hna_entries, &ipaddr, $3->integer);
-
-  free($1->string);
-  free($1);
-  free($3);
-}
-;
-
-ihna6entry:     TOK_IP6_ADDR TOK_INTEGER
-{
-  if (add_ipv6_addr($1, $2)) {
-    YYABORT;
-  }
-}
-        |       TOK_IP6_ADDR TOK_SLASH TOK_INTEGER
-{
-  if (add_ipv6_addr($1, $3)) {
-    YYABORT;
-  }
-}
-;
-
-ifstart: TOK_INTERFACE
-{
-  PARSER_DEBUG_PRINTF("setting ifs_in_curr_cfg = 0\n");
-  ifs_in_curr_cfg = 0;
-}
-;
-
-ifnick: TOK_STRING
-{
-  struct olsr_if *in = malloc(sizeof(*in));
-  
-  if (in == NULL) {
-    fprintf(stderr, "Out of memory(ADD IF)\n");
-    YYABORT;
-  }
-
-  in->cnf = cfgparser_get_default_if_config();
-  if (in->cnf == NULL) {
-    fprintf(stderr, "Out of memory(ADD IFRULE)\n");
-    YYABORT;
-  }
-
-  in->name = $1->string;
-
-  /* Queue */
-  in->next = olsr_cnf->interfaces;
-  olsr_cnf->interfaces = in;
-  ifs_in_curr_cfg++;
-  free($1);
-}
-;
-
-bnoint: TOK_NOINT TOK_BOOLEAN
-{
-  PARSER_DEBUG_PRINTF("Noint set to %d\n", $2->boolean);
-  olsr_cnf->allow_no_interfaces = $2->boolean;
-  free($2);
-}
-;
-
-atos: TOK_TOS TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("TOS: %d\n", $2->integer);
-  olsr_cnf->tos = $2->integer;
-  free($2);
-
-}
-;
-
-arttable: TOK_RTTABLE TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("RtTable: %d\n", $2->integer);
-  olsr_cnf->rttable = $2->integer;
-  free($2);
-}
-;
-
-arttable: TOK_RTPROTO TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("RtProto: %d\n", $2->integer);
-  olsr_cnf->rtproto = $2->integer;
-  free($2);
-}
-;
-
-arttable_default: TOK_RTTABLE_DEFAULT TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("RtTableDefault: %d\n", $2->integer);
-  olsr_cnf->rttable_default = $2->integer;
-  free($2);
-}
-;
-
-awillingness: TOK_WILLINGNESS TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("Willingness: %d\n", $2->integer);
-  olsr_cnf->willingness_auto = false;
-  olsr_cnf->willingness = $2->integer;
-  free($2);
-}
-;
-
-fpollrate: TOK_POLLRATE TOK_FLOAT
-{
-  PARSER_DEBUG_PRINTF("Pollrate %0.2f\n", $2->floating);
-  if (cfgparser_check_pollrate(&$2->floating) < 0) {
-    YYABORT;
-  }
-  olsr_cnf->pollrate = conv_pollrate_to_microsecs($2->floating);
-  free($2);
-}
-;
-
-fnicchgspollrt: TOK_NICCHGSPOLLRT TOK_FLOAT
-{
-  PARSER_DEBUG_PRINTF("NIC Changes Pollrate %0.2f\n", $2->floating);
-  olsr_cnf->nic_chgs_pollrate = $2->floating;
-  free($2);
-}
-;
-
-atcredundancy: TOK_TCREDUNDANCY TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("TC redundancy %d\n", $2->integer);
-  olsr_cnf->tc_redundancy = $2->integer;
-  free($2);
-}
-;
-
-amprcoverage: TOK_MPRCOVERAGE TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("MPR coverage %d\n", $2->integer);
-  olsr_cnf->mpr_coverage = $2->integer;
-  free($2);
-}
-;
-
-alq_fish: TOK_LQ_FISH TOK_INTEGER
-{
-  PARSER_DEBUG_PRINTF("Link quality fish eye %d\n", $2->integer);
-  olsr_cnf->lq_fish = $2->integer;
-  free($2);
-}
-;
-
-alq_dlimit: TOK_LQ_DLIMIT TOK_INTEGER TOK_FLOAT
-{
-  PARSER_DEBUG_PRINTF("Link quality dijkstra limit %d, %0.2f\n", $2->integer, $3->floating);
-  olsr_cnf->lq_dlimit = $2->integer;
-  olsr_cnf->lq_dinter = $3->floating;
-  free($2);
-}
-;
-
-alq_wsize: TOK_LQ_WSIZE TOK_INTEGER
-{
-  free($2);
-}
-;
-
-alq_aging: TOK_LQ_AGING TOK_FLOAT
-{
-  PARSER_DEBUG_PRINTF("Link quality aging factor %f\n", $2->floating);
-  olsr_cnf->lq_aging = $2->floating;
-  free($2);
-}
-;
-
-alq_plugin: TOK_LQ_PLUGIN TOK_STRING
-{
-  olsr_cnf->lq_algorithm = $2->string;
-  PARSER_DEBUG_PRINTF("LQ Algorithm: %s\n", $2->string);
-  free($2);
-}
-;
-
-anat_thresh: TOK_LQ_NAT_THRESH TOK_FLOAT
-{
-  PARSER_DEBUG_PRINTF("NAT threshold %0.2f\n", $2->floating);
-  olsr_cnf->lq_nat_thresh = $2->floating;
-  free($2);
-}
-;
-
-bclear_screen: TOK_CLEAR_SCREEN TOK_BOOLEAN
-{
-  PARSER_DEBUG_PRINTF("Clear screen %s\n", olsr_cnf->clear_screen ? "enabled" : "disabled");
-  olsr_cnf->clear_screen = $2->boolean;
-  free($2);
-}
-;
-
-plblock: TOK_PLUGIN TOK_STRING
-{
-  struct plugin_entry *pe = malloc(sizeof(*pe));
-  
-  if (pe == NULL) {
-    fprintf(stderr, "Out of memory(ADD PL)\n");
-    YYABORT;
-  }
-
-  pe->name = $2->string;
-  pe->params = NULL;
-  
-  PARSER_DEBUG_PRINTF("Plugin: %s\n", $2->string);
-
-  /* Queue */
-  pe->next = olsr_cnf->plugins;
-  olsr_cnf->plugins = pe;
-
-  free($2);
-}
-;
-
-plparam: TOK_PLPARAM TOK_STRING TOK_STRING
-{
-  struct plugin_param *pp = malloc(sizeof(*pp));
-  
-  if (pp == NULL) {
-    fprintf(stderr, "Out of memory(ADD PP)\n");
-    YYABORT;
-  }
-  
-  PARSER_DEBUG_PRINTF("Plugin param key:\"%s\" val: \"%s\"\n", $2->string, $3->string);
-  
-  pp->key = $2->string;
-  pp->value = $3->string;
-
-  /* Queue */
-  pp->next = olsr_cnf->plugins->params;
-  olsr_cnf->plugins->params = pp;
-
-  free($2);
-  free($3);
-}
-;
-
-vcomment:       TOK_COMMENT
-{
-    //PARSER_DEBUG_PRINTF("Comment\n");
-}
-;
-
-
-
-%%
-
-void yyerror (const char *string)
-{
-  fprintf(stderr, "Config line %d: %s\n", current_line, string);
-}
diff --git a/src/cfgparser/oscan.lex b/src/cfgparser/oscan.lex
deleted file mode 100644 (file)
index e3b42c7..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-%{
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, 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.
- *
- */
-
-
-#define YYSTYPE struct conf_token *
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "olsrd_conf.h"
-
-#include "oparse.h"
-/* Prototypes */
-int yyget_lineno(void);
-FILE * yyget_in(void);
-FILE* yyget_out(void);
-int yyget_leng(void);
-char *yyget_text(void);
-void yyset_lineno(int);
-void yyset_in(FILE *);
-void yyset_out(FILE *);
-int yyget_debug(void);
-void yyset_debug(int);
-int yylex_destroy(void);
-int yylex(void);
-
-static struct conf_token *get_conf_token(void);
-static struct conf_token *get_string_token(const char * const s, const size_t n);
-static struct conf_token *get_integer_token(const char * const s);
-static struct conf_token *get_floating_token(const char * const s);
-static struct conf_token *get_boolean_token(const bool b);
-
-static struct conf_token *get_conf_token(void)
-{
-    struct conf_token *t = calloc(1, sizeof(struct conf_token));
-    if (t == NULL) {
-        fprintf(stderr, "Cannot allocate %d bytes for an configuration token.\n", (int)sizeof(struct conf_token));
-    }
-    return t;
-}
-
-static struct conf_token *get_string_token(const char * const s, const size_t n)
-{
-    struct conf_token *rv = get_conf_token();
-    if (rv != NULL) {
-        rv->string = malloc(n + 1);
-        if (rv->string == NULL) {
-          fprintf(stderr, "Cannot allocate %lu bytes for string token data.\n", (unsigned long)(n+1)); /* size_t on 64bit */
-            free(rv);
-            return NULL;
-        }
-        memcpy(rv->string, s, n);
-        rv->string[n] = '\0';
-    }
-    return rv;
-}
-
-static struct conf_token *_get_integer_token(int32_t i)
-{
-    struct conf_token *rv = get_conf_token();
-    if (rv != NULL) {
-        rv->integer = i;
-    }
-    return rv;
-}
-
-static struct conf_token *get_integer_token(const char * const s)
-{
-    return _get_integer_token(strtol(s, NULL, 0));
-}
-
-static struct conf_token *get_floating_token(const char * const s)
-{
-    struct conf_token *rv = get_conf_token();
-    if (rv != NULL) {
-       rv->floating = 0.0;
-       sscanf(s, "%f", &rv->floating);
-    }
-    return rv;
-}
-
-static struct conf_token *get_boolean_token(const bool b)
-{
-    struct conf_token *rv = get_conf_token();
-    if (rv != NULL) {
-        rv->boolean = b;
-    }
-    return rv;
-}
-
-%}
-
-%option never-interactive
-%option noalways-interactive
-%option nomain
-%option nostack
-%option noyywrap
-
-DECDIGIT [0-9]
-FLOAT {DECDIGIT}+\.{DECDIGIT}+
-HEX8 [a-fA-F0-9]
-QUAD {DECDIGIT}{1,3}
-
-IPV4ADDR {QUAD}\.{QUAD}\.{QUAD}\.{QUAD}
-
-HEX16 {HEX8}{1,4}
-
-IP6PAT2 ({HEX16}:){1}:({HEX16}:){0,5}{HEX16}
-IP6PAT3 ({HEX16}:){2}:({HEX16}:){0,4}{HEX16}
-IP6PAT4 ({HEX16}:){3}:({HEX16}:){0,3}{HEX16}
-IP6PAT5 ({HEX16}:){4}:({HEX16}:){0,2}{HEX16}
-IP6PAT6 ({HEX16}:){5}:({HEX16}:){0,1}{HEX16}
-IP6PAT7 ({HEX16}:){6}:({HEX16})
-IP6PAT1 ({HEX16}:){7}{HEX16}
-IP6PAT8 ({HEX16}:){1,7}:
-IP6PAT9 ::
-
-IPV6ADDR {IP6PAT1}|{IP6PAT2}|{IP6PAT3}|{IP6PAT4}|{IP6PAT5}|{IP6PAT6}|{IP6PAT7}|{IP6PAT8}|{IP6PAT9}
-
-%%
-
-\s*"#".*\n {
-    current_line++;
-    return TOK_COMMENT;
-}
-
-\/ {
-    yylval = NULL;
-    return TOK_SLASH;
-}
-
-\{ {
-    yylval = NULL;
-    return TOK_OPEN;
-}
-
-\} {
-    yylval = NULL;
-    return TOK_CLOSE;
-}
-
-\"[^\"]*\" {
-    yylval = get_string_token(yytext + 1, yyleng - 2);
-    if (yylval == NULL) {
-        yyterminate();
-    }
-    return TOK_STRING;
-}
-
-0x{HEX8}+ {
-    yylval = get_integer_token(yytext);
-    return TOK_INTEGER;
-}
-
-{FLOAT} {
-    yylval = get_floating_token(yytext);
-    return TOK_FLOAT;
-}
-
-{IPV4ADDR} {
-    yylval = get_string_token(yytext, yyleng + 1);
-    if (yylval == NULL) {
-        yyterminate();
-    }
-    return TOK_IP4_ADDR;
-}
-{IPV6ADDR} {
-    yylval = get_string_token(yytext, yyleng + 1);
-    if (yylval == NULL) {
-        yyterminate();
-    }
-    return TOK_IP6_ADDR;
-}
-
-"default" {
-    yylval = NULL;
-    return TOK_DEFAULT;
-}
-
-{DECDIGIT}+ {
-    yylval = get_integer_token(yytext);
-    return TOK_INTEGER;
-}
-
-
-"yes" {
-    yylval = get_boolean_token(true);
-    return TOK_BOOLEAN;
-}
-
-"no" {
-    yylval = get_boolean_token(false);
-    return TOK_BOOLEAN;
-}
-
-"auto" {
-    yylval = _get_integer_token(OLSR_IP6T_AUTO);
-    return TOK_IP6TYPE;
-}
-
-"site-local" {
-    yylval = _get_integer_token(OLSR_IP6T_SITELOCAL);
-    return TOK_IP6TYPE;
-}
-
-"unique-local" {
-    yylval = _get_integer_token(OLSR_IP6T_UNIQUELOCAL);
-    return TOK_IP6TYPE;
-}
-
-"global" {
-    yylval = _get_integer_token(OLSR_IP6T_GLOBAL);
-    return TOK_IP6TYPE;
-}
-
-"Host" {
-    yylval = NULL;
-    return TOK_HOSTLABEL;
-}
-
-"Net" {
-    yylval = NULL;
-    return TOK_NETLABEL;
-}
-
-"MaxConnections" {
-    yylval = NULL;
-    return TOK_MAXIPC;
-}
-
-"DebugLevel" {
-    yylval = NULL;
-    return TOK_DEBUGLEVEL;
-}
-
-"IpVersion" {
-    yylval = NULL;
-    return TOK_IPVERSION;
-}
-
-"NicChgsPollInt" {
-    yylval = NULL;
-    return TOK_NICCHGSPOLLRT;
-}
-
-"Hna4" {
-    yylval = NULL;
-    return TOK_HNA4;
-}
-
-"Hna6" {
-    yylval = NULL;
-    return TOK_HNA6;
-}
-
-"LoadPlugin" {
-    yylval = NULL;
-    return TOK_PLUGIN;
-}
-
-"PlParam" {
-    yylval = NULL;
-    return TOK_PLPARAM;
-}
-
-"Interface" {
-    yylval = NULL;
-    return TOK_INTERFACE;
-}
-
-"AllowNoInt" {
-    yylval = NULL;
-    return TOK_NOINT;
-}
-
-"TosValue" {
-    yylval = NULL;
-    return TOK_TOS;
-}
-
-"RtProto" {
-  yylval = NULL;
-  return TOK_RTPROTO;
-}
-
-"RtTable" {
-  yylval = NULL;
-  return TOK_RTTABLE;
-}
-
-"RtTableDefault" {
-  yylval = NULL;
-  return TOK_RTTABLE_DEFAULT;
-}
-
-"Willingness" {
-    yylval = NULL;
-    return TOK_WILLINGNESS;
-}
-
-"IpcConnect" {
-    yylval = NULL;
-    return TOK_IPCCON;
-}
-
-"FIBMetric" {
-    yylval = NULL;
-    return TOK_FIBMETRIC;
-}
-
-"Pollrate" {
-    yylval = NULL;
-    return TOK_POLLRATE;
-}
-
-
-"TcRedundancy" {
-    yylval = NULL;
-    return TOK_TCREDUNDANCY;
-}
-
-"MprCoverage" {
-    yylval = NULL;
-    return TOK_MPRCOVERAGE;
-}
-
-"LinkQualityFishEye" {
-    yylval = NULL;
-    return TOK_LQ_FISH;
-}
-
-"LinkQualityDijkstraLimit" {
-    yylval = NULL;
-    return TOK_LQ_DLIMIT;
-}
-
-"LinkQualityAging" {
-    yylval = NULL;
-    return TOK_LQ_AGING;
-}
-
-"LinkQualityAlgorithm" {
-    yylval = NULL;
-    return TOK_LQ_PLUGIN;
-}
-
-"LinkQualityWinSize" {
-    yylval = NULL;
-    return TOK_LQ_WSIZE;
-}
-
-"NatThreshold" {
-    yylval = NULL;
-    return TOK_LQ_NAT_THRESH;
-}
-
-"LinkQualityMult" {
-    yylval = NULL;
-    return TOK_LQ_MULT;
-}
-
-"ClearScreen" {
-    yylval = NULL;
-    return TOK_CLEAR_SCREEN;
-}
-
-"Weight" {
-    yylval = NULL;
-    return TOK_IFWEIGHT;
-}
-
-"Ip4Broadcast" {
-    yylval = NULL;
-    return TOK_IP4BROADCAST;
-}
-"Ip6AddrType" {
-    yylval = NULL;
-    return TOK_IP6ADDRTYPE;
-}
-"Ip6MulticastSite" {
-    yylval = NULL;
-    return TOK_IP6MULTISITE;
-}
-"Ip6MulticastGlobal" {
-    yylval = NULL;
-    return TOK_IP6MULTIGLOBAL;
-}
-"HelloInterval" {
-    yylval = NULL;
-    return TOK_HELLOINT;
-}
-"HelloValidityTime" {
-    yylval = NULL;
-    return TOK_HELLOVAL;
-}
-"TcInterval" {
-    yylval = NULL;
-    return TOK_TCINT;
-}
-"TcValidityTime" {
-    yylval = NULL;
-    return TOK_TCVAL;
-}
-"MidInterval" {
-    yylval = NULL;
-    return TOK_MIDINT;
-}
-"MidValidityTime" {
-    yylval = NULL;
-    return TOK_MIDVAL;
-}
-"HnaInterval" {
-    yylval = NULL;
-    return TOK_HNAINT;
-}
-"HnaValidityTime" {
-    yylval = NULL;
-    return TOK_HNAVAL;
-}
-"AutoDetectChanges" {
-    yylval = NULL;
-    return TOK_AUTODETCHG;
-}
-
-
-\n|\r\n {
-    current_line++;
-}
-
-\ |\t
-
-. {
-  /* Do nothing */
-  //fprintf(stderr, "Failed to parse line %d of configuration file.\n",
-  //      current_line);
-  //yyterminate();
-  //yy_fatal_error("Parsing failed.\n");
-
-  /* To avoid compiler warning (stupid...) */
-  if(0)
-    yyunput(0, NULL);
-}
-
-%%
diff --git a/src/cfgparser/version-script.txt b/src/cfgparser/version-script.txt
deleted file mode 100644 (file)
index 8eab44d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-VERS_1.0
-{
-  global:
-    cfgparser_olsrd_parse_cnf;
-    cfgparser_olsrd_sanity_check_cnf;
-    cfgparser_olsrd_free_cnf;
-    cfgparser_olsrd_print_cnf;
-    cfgparser_olsrd_write_cnf;
-    cfgparser_olsrd_write_cnf_buf;
-    cfgparser_get_default_if_config;
-    cfgparser_olsrd_get_default_cnf;
-    cfgparser_olsrd_parse_cnf;
-    win32_stdio_hack;
-    win32_olsrd_malloc;
-    win32_olsrd_free;
-  local:
-    *;
-};