New configfile parser and configuration scheme integrated
authorAndreas Tonnesen <andreto@olsr.org>
Mon, 18 Oct 2004 13:14:21 +0000 (13:14 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Mon, 18 Oct 2004 13:14:21 +0000 (13:14 +0000)
51 files changed:
Makefile
files/olsrd.conf.default
src/build_msg.c
src/cfgparser/olsrd_conf.c
src/cfgparser/olsrd_conf.h
src/cfgparser/oparse.c
src/cfgparser/oparse.y
src/cfgparser/oscan.c
src/configfile.c
src/configfile.h
src/defs.h
src/duplicate_set.c
src/duplicate_set.h
src/generate_msg.c
src/generate_msg.h
src/hashing.c
src/hashing.h
src/hna_set.c
src/hna_set.h
src/hysteresis.c
src/ifnet.h
src/interfaces.c
src/interfaces.h
src/ipc_frontend.c
src/link_layer.h
src/link_set.c
src/linux/ifnet.c
src/linux/link_layer.c
src/linux/net.c
src/local_hna_set.c
src/main.c
src/main.h
src/mid_set.c
src/mid_set.h
src/mpr.c
src/neighbor_table.c
src/net.c
src/net_os.h
src/olsr.c
src/olsr.h
src/olsrd_cfgparser.h [moved from src/cfgparser/olsrd_cfgparser.h with 88% similarity]
src/packet.c
src/parser.c
src/plugin_loader.c
src/process_package.c
src/process_routes.c
src/rebuild_packet.c
src/routing_table.c
src/scheduler.c
src/scheduler.h
src/socket_parser.c

index d56df2e..ef86eff 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,12 @@
 CC ?= gcc
 
-CFLAGS ?= -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g #-pg -DDEBUG #-march=i686
+CFLAGS ?= -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g #-pg -DDEBUG #-march=i686
 LIBS = -lpthread -lm -ldl
 INSTALL_PREFIX ?=
 STRIP ?= strip
+BISON ?= bison
+FLEX ?= flex
+CFGDIR = src/cfgparser
 
 # Keep OS specific files last
 
@@ -17,6 +20,8 @@ SRCS= src/interfaces.c src/parser.c src/build_msg.c \
        src/process_package.c src/mpr.c src/local_hna_set.c \
        src/hashing.c src/hysteresis.c src/generate_msg.c \
        src/rebuild_packet.c src/plugin_loader.c src/plugin.c \
+       $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c \
+       $(CFGDIR)/olsrd_conf.c \
        src/linux/net.c src/linux/apm.c src/linux/tunnel.c \
        src/linux/kernel_routes.c src/linux/link_layer.c \
        src/linux/ifnet.c src/linux/log.c
@@ -31,10 +36,13 @@ OBJS=       src/interfaces.o src/parser.o src/build_msg.o \
        src/process_package.o src/mpr.o src/local_hna_set.o\
        src/hashing.o src/hysteresis.o src/generate_msg.o \
        src/rebuild_packet.o src/plugin_loader.o src/plugin.o \
+       $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o \
+       $(CFGDIR)/olsrd_conf.o \
        src/linux/net.o src/linux/apm.o src/linux/tunnel.o \
        src/linux/kernel_routes.o src/linux/link_layer.o \
        src/linux/ifnet.o src/linux/log.o
 
+
 HDRS=  src/defs.h src/interfaces.h src/packet.h src/build_msg.h \
        src/olsr.h src/two_hop_neighbor_table.h olsr_plugin_io.h \
        src/neighbor_table.h src/mpr_selector_set.h \
@@ -48,6 +56,8 @@ HDRS= src/defs.h src/interfaces.h src/packet.h src/build_msg.h \
        src/plugin.h src/socket_parser.h src/ifnet.h \
        src/kernel_routes.h src/log.h src/net_os.h \
        src/apm.h src/linux/tunnel.h src/scheduler.h \
+       $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h \
+       $(CFGDIR)/olsrd_cfgparser.h \
        src/linux/net.h src/linux/link_layer.h
 
 all:   olsrd
@@ -55,6 +65,14 @@ all: olsrd
 olsrd: $(OBJS)
        $(CC) $(LIBS) -o bin/$@ $(OBJS)
 
+oparse.h: $(CFGDIR)/oparse.c
+
+oparse.c: $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
+       $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
+
+$(CFGDIR)/oscan.c: $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
+       $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
+
 libs: 
        for i in lib/*; do \
                $(MAKE) -C $$i; \
index 5fb64a4..64d71b6 100644 (file)
 #
 # UniK OLSR daemon config file
 #
-# This file was shipped with olsrd 0.4.8
-#
-# Lines starting with a # are discarded
+# Lines starting with a # are discarded.
+# To use default values - just comment
+# out the options.
 #
 
 # Debug level(0-9)
 # If set to 0 the daemon runs in the background
 
-DEBUG          1
+DebugLevel     1
 
 # IP version to use (4 or 6)
+# Defaults to IPv4
 
-IPVERSION      4
+IpVersion      4
 
 # HNA IPv4 routes
 # syntax: netaddr netmask
 # Example Internet gateway:
-# HNA4 0.0.0.0 0.0.0.0
+# 0.0.0.0 0.0.0.0
 
-#HNA4 15.15.0.0 255.255.255.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
-
-#HNA6 fec0:2200:106:: 48
-
-# A list of whitespace separated interface names
-
-INTERFACES     eth1 eth0
+# :: 0
+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
+}
+
+# Interfaces and their rulesets
+Interface "eth0"
+{
+    Setup "lan"
+}
+
+Interface "eth1"
+{
+    Setup "wlan"
+}
 
 # 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"
 
-ALLOW_NO_INT   yes
+AllowNoInt     yes
+
+# TOS(type of service) value for
+# the IP header of control traffic.
+# auto is 16
+
+TosValue       auto
+
+# The fixed willingness to use(0-7)
+# or "auto" to set willingness dynammically
+# based on battery/power status
+
+Willingness            auto
+
+# Allow processes like the GUI front-end
+# to connect to the daemon. 'yes' or 'no'
+
+IpcConnect     no
+
+
+# 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). 
+# Auto uses default value 0.1 sec
+
+Pollrate       0.1
+
+
+# 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
+
+
+#
+# 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
@@ -48,158 +136,137 @@ ALLOW_NO_INT     yes
 #   environment variable.
 # - The list of libraries cached in /etc/ld.so.cache
 # - /lib, followed by /usr/lib
-#
-# ONE PLUGIN PR. LINE
+LoadPlugin "olsrd_secure.so.0.3"
+{
+    PlParam     "key1"   "value1"
+    # Might be possible to set options here in
+    # future versions
+}
 
-#LOAD_PLUGIN   olsrd_secure.so.0.3
-#LOAD_PLUGIN   olsrd_dyn_gw.so.0.1
-#LOAD_PLUGIN   olsrd_power.so.0.1
+LoadPlugin "olsrd_dyn_gw.so.0.1"
+{
+    PlParam     "key4"   "value3"
+    # Might be possible to set options here in
+    # future versions
+}
 
-# IPv4 broadcast address to use. The
-# one usefull example would be 255.255.255.255
-# 'auto' uses the broadcastaddress
-# every card is configured with
+# olsrd_dyn_gw.so.0.1
+# olsrd_power.so.0.1
 
-IP4BROAD       auto
 
-# IPv6 address scope to use.
-# Must be 'site-local' or 'global'
+IfSetup "lan"
+{
 
-IP6ADDRTYPE    site-local
+    # 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
 
-# IPv6 multicast address to use when
-# using site-local addresses.
-# 'auto' uses the default ff05::15
+    Ip4Broadcast       255.255.255.255
 
-IP6MULTI-SITE  auto
+    # IPv6 address scope to use.
+    # Must be 'site-local' or 'global'
 
-# IPv6 multicast address to use when
-# using global addresses
-# 'auto' uses the default ff0e::1
+    # Ip6AddrType              site-local
 
-IP6MULTI-GLOBAL        auto
+    # IPv6 multicast address to use when
+    # using site-local addresses.
+    # If not defined, ff05::15 is used
 
-# Polling rate in seconds(float). 
-# Auto uses default value 0.1 sec
+    Ip6MulticastSite   ff05::11
 
-POLLRATE       auto
+    # IPv6 multicast address to use when
+    # using global addresses
+    # If not defined, ff0e::1 is used
 
-# Hello interval in seconds(float)
-# auto uses RFC proposed value
+    # Ip6MulticastGlobal       ff0e::1
 
-HELLOINT       auto
 
-# HELLO hold time as a multiplier
-# of the HELLOINT. Auto is the
-# RFC proposed interval
+    # Emission intervals.
+    # If not defined, RFC proposed values will
+    # be used in most cases.
 
-HELLOMULTI     auto
+    # Hello interval in seconds(float)
+    # HelloInterval    2.0
 
-# TC interval in seconds(float)
-# auto uses RFC proposed value
+    # HELLO validity time
+    # HelloValidityTime        6.0
 
-TCINT          auto
+    # TC interval in seconds(float)
+    TcInterval        5.0
 
-# TC hold time as a multiplier
-# of the TCINT. Auto is the
-# RFC proposed interval
+    # TC validity time
+    # TcValidityTime   15.0
 
-TCMULTI                auto
+    # MID interval in seconds(float)
+    # MidInterval      5.0
 
-# HELLO interval for sending
-# interval/holding time for wired
-# links. This is a multiplier of
-# the HELLOINT value. Auto is 2
+    # MID validity time
+    # MidValidityTime  15.0
 
-NWHELLOINT     auto
+    # HNA interval in seconds(float)
+    # HnaInterval      5.0
 
-# HELLO hold time for wired links,
-# as a multiplier of the NWHELLOINT. 
-# Auto is NWHELLOINT * 3.
+    # HNA validity time
+    # HnaValidityTime  15.0
 
-NWHELLOMULTI   auto
+}
 
-# MID interval in seconds(float)
-# auto uses RFC proposed value
 
-MIDINT         auto
+IfSetup "wlan"
+{
 
-# MID hold time as a multiplier
-# of the MIDINT. Auto is the
-# RFC proposed interval
+    # 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
 
-MIDMULTI       auto
+    # Ip4Broadcast     255.255.255.255
 
-# HNA interval in seconds(float)
-# auto uses 3*TCINT
+    # IPv6 address scope to use.
+    # Must be 'site-local' or 'global'
 
-HNAINT         auto
+    Ip6AddrType                site-local
 
-# HNA hold time as a multiplier
-# of the HNAINT. Auto is the
-# RFC proposed interval
+    # IPv6 multicast address to use when
+    # using site-local addresses.
+    # If not defined, ff05::15 is used
 
-HNAMULTI       auto
+    Ip6MulticastSite   ff05::15
 
-# TOS(type of service) value for
-# the IP header of control traffic.
-# auto is 16
-
-TOSVALUE       auto
-
-# The fixed willingness to use(0-7)
-# or "auto" to set willingness dynammically
-# based on battery/power status
-
-WILLINGNESS            auto
-
-# Allow processes like the GUI front-end
-# to connect to the daemon. 'yes' or 'no'
+    # IPv6 multicast address to use when
+    # using global addresses
+    # If not defined, ff0e::1 is used
 
-IPC-CONNECT            no
+    Ip6MulticastGlobal ff0e::1
 
 
-# Wether to use hysteresis or not
-# Hysteresis adds more robustness to the
-# link sensing but delays neighbor registration.
-# Used by default. 'yes' or 'no'
+    # Emission intervals.
+    # If not defined, RFC proposed values will
+    # be used in most cases.
 
-USE_HYSTERESIS yes
+    # Hello interval in seconds(float)
+    HelloInterval    1.0
 
-# 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!!
+    # HELLO validity time
+    HelloValidityTime  3.0
 
-HYST_SCALING   auto
-HYST_THR_HIGH  auto
-HYST_THR_LOW   auto
+    # TC interval in seconds(float)
+    TcInterval        4.0
 
+    # TC validity time
+    TcValidityTime     14.0
 
-# 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
-#
-# auto - defaults to 0
+    # MID interval in seconds(float)
+    MidInterval        5.0
 
-TC_REDUNDANCY  auto
+    # MID validity time
+    MidValidityTime    15.0
 
+    # HNA interval in seconds(float)
+    HnaInterval        5.0
 
-#
-# MPR redundancy
-# Specifies how many MPRs a node should
-# try select to reach every 2 hop neighbor
-#
-# Can be set to any integer >0
-#
-# auto - defaults to 1
+    # HNA validity time
+    HnaValidityTime    15.0
 
-MPR_COVERAGE   auto
+}
index 15fc36b..9f1ece3 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: build_msg.c,v 1.13 2004/10/12 06:33:55 kattemat Exp $
+ * $Id: build_msg.c,v 1.14 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -96,7 +96,7 @@ hna_build6(struct interface *);
 void
 hello_build(struct hello_message *message, struct interface *ifp)
 {
-  switch(ipversion)
+  switch(olsr_cnf->ip_version)
     {
     case(AF_INET):
       hello_build4(message, ifp);
@@ -134,7 +134,7 @@ hello_build(struct hello_message *message, struct interface *ifp)
 void
 tc_build(struct tc_message *message, struct interface *ifp)           
 {
-  switch(ipversion)
+  switch(olsr_cnf->ip_version)
     {
     case(AF_INET):
       tc_build4(message, ifp);
@@ -160,7 +160,7 @@ tc_build(struct tc_message *message, struct interface *ifp)
 void
 mid_build(struct interface *ifn)
 {
-  switch(ipversion)
+  switch(olsr_cnf->ip_version)
     {
     case(AF_INET):
       mid_build4(ifn);
@@ -185,7 +185,7 @@ mid_build(struct interface *ifn)
 void
 hna_build(struct interface *ifp)
 {
-  switch(ipversion)
+  switch(olsr_cnf->ip_version)
     {
     case(AF_INET):
       hna_build4(ifp);
@@ -228,7 +228,7 @@ hello_build4(struct hello_message *message, struct interface *ifp)
   int i, j, sametype;
   int lastpacket = 0; /* number of neighbors with the same
                         greater link status in the last packet */
-  if((!message) || (!ifp) || (ipversion != AF_INET))
+  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET))
     return;
 
   remainsize = net_outbuffer_bytes_left(ifp);
@@ -260,11 +260,11 @@ hello_build4(struct hello_message *message, struct interface *ifp)
   /* Set source(main) addr */
   COPY_IP(&m->v4.originator, &main_addr);
 
-  m->v4.olsr_vtime = ifp->is_wireless ? hello_vtime : hello_nw_vtime;
+  m->v4.olsr_vtime = ifp->valtimes.hello;
 
   /* Fill HELLO header */
   h->willingness = message->willingness; 
-  h->htime = ifp->is_wireless ? htime : htime_nw;
+  h->htime = ifp->hello_etime;
 
   memset(&h->reserved, 0, sizeof(olsr_u16_t));
   
@@ -470,7 +470,7 @@ hello_build6(struct hello_message *message, struct interface *ifp)
   int i, j, sametype;
   int lastpacket = 0; /* number of neighbors with the same
                         greater link status in the last packet */
-  if((!message) || (!ifp) || (ipversion != AF_INET6))
+  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET6))
     return;
 
 
@@ -503,12 +503,12 @@ hello_build6(struct hello_message *message, struct interface *ifp)
   COPY_IP(&m->v6.originator, &main_addr);
   m->v6.olsr_msgtype = HELLO_MESSAGE;
 
-  m->v6.olsr_vtime = ifp->is_wireless ? hello_vtime : hello_nw_vtime;
+  m->v6.olsr_vtime = ifp->valtimes.hello;
   
   /* Fill packet header */
   h6->willingness = message->willingness; 
 
-  h6->htime = ifp->is_wireless ? htime : htime_nw;
+  h6->htime = ifp->hello_etime;
 
   memset(&h6->reserved, 0, sizeof(olsr_u16_t));
   
@@ -693,7 +693,7 @@ tc_build4(struct tc_message *message, struct interface *ifp)
   struct neigh_info *mprsaddr; 
   int found = 0, partial_sent = 0;
 
-  if((!message) || (!ifp) || (ipversion != AF_INET))
+  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET))
     return;
 
   remainsize = net_outbuffer_bytes_left(ifp);
@@ -715,7 +715,7 @@ tc_build4(struct tc_message *message, struct interface *ifp)
     }
 
   /* Fill header */
-  m->v4.olsr_vtime = tc_vtime;
+  m->v4.olsr_vtime = ifp->valtimes.tc;
   m->v4.olsr_msgtype = TC_MESSAGE;
   m->v4.hopcnt = message->hop_count;
   m->v4.ttl = message->ttl;
@@ -825,7 +825,7 @@ tc_build6(struct tc_message *message, struct interface *ifp)
   struct neigh_info6 *mprsaddr6; 
   int found = 0, partial_sent = 0;
 
-  if ((!message) || (!ifp) || (ipversion != AF_INET6))
+  if ((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET6))
     return;
 
   remainsize = net_outbuffer_bytes_left(ifp);
@@ -846,7 +846,7 @@ tc_build6(struct tc_message *message, struct interface *ifp)
     }
 
   /* Fill header */
-  m->v6.olsr_vtime = tc_vtime;
+  m->v6.olsr_vtime = ifp->valtimes.tc;
   m->v6.olsr_msgtype = TC_MESSAGE;
   m->v6.hopcnt = message->hop_count;
   m->v6.ttl = message->ttl;
@@ -949,7 +949,7 @@ mid_build4(struct interface *ifp)
   struct midaddr *addrs;
   struct interface *ifs;  
 
-  if((ipversion != AF_INET) || (!ifp) || (nbinterf <= 1))
+  if((olsr_cnf->ip_version != AF_INET) || (!ifp) || (nbinterf <= 1))
     return;
 
 
@@ -972,7 +972,7 @@ mid_build4(struct interface *ifp)
   /* Set main(first) address */
   COPY_IP(&m->v4.originator, &main_addr);
   m->v4.olsr_msgtype = MID_MESSAGE;
-  m->v4.olsr_vtime = mid_vtime;
+  m->v4.olsr_vtime = ifp->valtimes.mid;
  
   addrs = m->v4.message.mid.mid_addr;
 
@@ -1038,7 +1038,7 @@ mid_build6(struct interface *ifp)
   //printf("\t\tGenerating mid on %s\n", ifn->int_name);
 
 
-  if((ipversion != AF_INET6) || (!ifp) || (nbinterf <= 1))
+  if((olsr_cnf->ip_version != AF_INET6) || (!ifp) || (nbinterf <= 1))
     return;
 
   remainsize = net_outbuffer_bytes_left(ifp);
@@ -1058,7 +1058,7 @@ mid_build6(struct interface *ifp)
   m->v6.hopcnt = 0;
   m->v6.ttl = MAX_TTL;      
   m->v6.olsr_msgtype = MID_MESSAGE;
-  m->v6.olsr_vtime = mid_vtime;
+  m->v6.olsr_vtime = ifp->valtimes.mid;
   /* Set main(first) address */
   COPY_IP(&m->v6.originator, &main_addr);
    
@@ -1121,7 +1121,7 @@ hna_build4(struct interface *ifp)
   struct local_hna_entry *h;
 
   /* No hna nets */
-  if((ipversion != AF_INET) || (!ifp) || (local_hna4_set.next == &local_hna4_set))
+  if((olsr_cnf->ip_version != AF_INET) || (!ifp) || (local_hna4_set.next == &local_hna4_set))
     return;
     
   remainsize = net_outbuffer_bytes_left(ifp);
@@ -1143,7 +1143,7 @@ hna_build4(struct interface *ifp)
   m->v4.hopcnt = 0;
   m->v4.ttl = MAX_TTL;
   m->v4.olsr_msgtype = HNA_MESSAGE;
-  m->v4.olsr_vtime = hna_vtime;
+  m->v4.olsr_vtime = ifp->valtimes.hna;
 
 
   pair = m->v4.message.hna.hna_net;
@@ -1202,7 +1202,7 @@ hna_build6(struct interface *ifp)
   struct local_hna_entry *h;
   
   /* No hna nets */
-  if((ipversion != AF_INET6) || (!ifp) || (local_hna6_set.next == &local_hna6_set))
+  if((olsr_cnf->ip_version != AF_INET6) || (!ifp) || (local_hna6_set.next == &local_hna6_set))
     return;
 
     
@@ -1224,7 +1224,7 @@ hna_build6(struct interface *ifp)
   m->v6.hopcnt = 0;
   m->v6.ttl = MAX_TTL;
   m->v6.olsr_msgtype = HNA_MESSAGE;
-  m->v6.olsr_vtime = hna_vtime;
+  m->v6.olsr_vtime = ifp->valtimes.hna;
 
   pair6 = m->v6.message.hna.hna_net;
 
index 376352e..6c7b71f 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_conf.c,v 1.5 2004/10/17 13:24:28 kattemat Exp $
+ * $Id: olsrd_conf.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -120,6 +120,7 @@ struct olsrd_config *
 olsrd_parse_cnf(char *filename)
 {
   struct olsr_if *in;
+  struct if_config_options *io;
 
   cnf = malloc(sizeof(struct olsrd_config));
   if (cnf == NULL)
@@ -148,11 +149,21 @@ olsrd_parse_cnf(char *filename)
     {
       fclose(yyin);
       olsrd_free_cnf(cnf);
-      return NULL;
+      exit(0);
     }
   
   fclose(yyin);
 
+  /* Add default ruleset */
+
+  io = get_default_if_config();
+  io->name = malloc(strlen(DEFAULT_IF_CONFIG_NAME) + 1);
+  strcpy(io->name, DEFAULT_IF_CONFIG_NAME);
+
+  /* Queue */
+  io->next = cnf->if_options;
+  cnf->if_options = io;
+
   /* Verify interface rulesets */
   in = cnf->interfaces;
 
@@ -164,7 +175,7 @@ olsrd_parse_cnf(char *filename)
        {
          fprintf(stderr, "ERROR: Could not find a matching ruleset \"%s\" for %s\n", in->config, in->name);
          olsrd_free_cnf(cnf);
-         return NULL;
+         exit(0);
        }
       in = in->next;
     }
@@ -175,6 +186,27 @@ olsrd_parse_cnf(char *filename)
 
 
 
+struct olsrd_config *
+olsrd_get_default_cnf()
+{
+  cnf = malloc(sizeof(struct olsrd_config));
+  if (cnf == NULL)
+    {
+      fprintf(stderr, "Out of memory %s\n", __func__);
+      return NULL;
+  }
+
+  set_default_cnf(cnf);
+
+  cnf->if_options = get_default_if_config();
+  cnf->if_options->name = malloc(strlen(DEFAULT_IF_CONFIG_NAME) + 1);
+  strcpy(cnf->if_options->name, DEFAULT_IF_CONFIG_NAME);
+
+  return cnf;
+}
+
+
+
 
 
 
@@ -238,10 +270,10 @@ set_default_cnf(struct olsrd_config *cnf)
     memset(cnf, 0, sizeof(struct olsrd_config));
     
     cnf->debug_level = 1;
-    cnf->ip_version  = 4;
+    cnf->ip_version  = AF_INET;
     cnf->allow_no_interfaces = 1;
     cnf->tos = 16;
-    cnf->auto_willingness = 1;
+    cnf->willingness_auto = 1;
     cnf->open_ipc = 0;
 
     cnf->use_hysteresis = 1;
@@ -258,6 +290,46 @@ set_default_cnf(struct olsrd_config *cnf)
 
 
 
+struct if_config_options *
+get_default_if_config()
+{
+  struct if_config_options *io = malloc(sizeof(struct if_config_options));
+  struct in6_addr in6;
+  memset(io, 0, sizeof(struct if_config_options));
+
+  io->ipv6_addrtype = 1;
+
+  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_SITE_LOCAL, &in6) < 0)
+    {
+      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_SITE_LOCAL);
+      exit(EXIT_FAILURE);
+    }
+  memcpy(&io->ipv6_multi_site.v6, &in6, sizeof(struct in6_addr));
+
+  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_GLOBAL, &in6) < 0)
+    {
+      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_GLOBAL);
+      exit(EXIT_FAILURE);
+    }
+  memcpy(&io->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
+
+
+  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;
+
+  return io;
+
+}
+
+
+
 
 
 int
@@ -294,29 +366,23 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
 
   /* HNA IPv4 */
   fprintf(fd, "# HNA IPv4 routes\n# syntax: netaddr netmask\n# Example Internet gateway:\n# 0.0.0.0 0.0.0.0\n\nHna4\n{\n");
-  if(h4)
+  while(h4)
     {
-      while(h4)
-       {
-         in4.s_addr=h4->net;
-         fprintf(fd, "    %s ", inet_ntoa(in4));
-         in4.s_addr=h4->netmask;
-         fprintf(fd, "%s\n", inet_ntoa(in4));
-         h4 = h4->next;
-       }
+      in4.s_addr=h4->net;
+      fprintf(fd, "    %s ", inet_ntoa(in4));
+      in4.s_addr=h4->netmask;
+      fprintf(fd, "%s\n", inet_ntoa(in4));
+      h4 = h4->next;
     }
   fprintf(fd, "}\n\n");
 
 
   /* HNA IPv6 */
   fprintf(fd, "# HNA IPv6 routes\n# syntax: netaddr prefix\n# Example Internet gateway:\nHna6\n{\n");
-  if(h6)
+  while(h6)
     {
-      while(h6)
-       {
-         fprintf(fd, "    %s/%d\n", (char *)inet_ntop(AF_INET6, &h6->net.v6, ipv6_buf, sizeof(ipv6_buf)), h6->prefix_len);
-         h6 = h6->next;
-       }
+      fprintf(fd, "    %s/%d\n", (char *)inet_ntop(AF_INET6, &h6->net.v6, ipv6_buf, sizeof(ipv6_buf)), h6->prefix_len);
+      h6 = h6->next;
     }
 
   fprintf(fd, "}\n\n");
@@ -351,10 +417,10 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
 
   /* Willingness */
   fprintf(fd, "# The fixed willingness to use(0-7)\n# or \"auto\" to set willingness dynammically\n# based on battery/power status\n\n");
-  if(cnf->auto_willingness)
+  if(cnf->willingness_auto)
     fprintf(fd, "Willingness\tauto\n\n");
   else
-    fprintf(fd, "Willingness%d\n\n", cnf->fixed_willingness);
+    fprintf(fd, "Willingness%d\n\n", cnf->willingness);
 
   /* IPC */
   fprintf(fd, "# Allow processes like the GUI front-end\n# to connect to the daemon. 'yes' or 'no'\n\n");
@@ -492,10 +558,10 @@ olsrd_print_cnf(struct olsrd_config *cnf)
   else
     printf("No interfaces    : NOT ALLOWED\n");
   printf("TOS              : 0x%02x\n", cnf->tos);
-  if(cnf->auto_willingness)
+  if(cnf->willingness_auto)
     printf("Willingness      : AUTO\n");
   else
-    printf("Willingness      : %d\n", cnf->fixed_willingness);
+    printf("Willingness      : %d\n", cnf->willingness);
 
   if(cnf->open_ipc)
     printf("IPC              : ENABLED\n");
index bdff0de..69fae77 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_conf.h,v 1.3 2004/10/17 11:52:41 kattemat Exp $
+ * $Id: olsrd_conf.h,v 1.4 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -28,7 +28,7 @@
 #define _OLSRD_CONF_H
 
 #include "olsr_protocol.h"
-#include "olsrd_cfgparser.h"
+#include "../olsrd_cfgparser.h"
 
 #define SOFTWARE_VERSION "0.1.1"
 
@@ -51,4 +51,7 @@ set_default_cnf(struct olsrd_config *);
 struct if_config_options *
 find_if_rule_by_name(struct if_config_options *, char *);
 
+struct if_config_options *
+get_default_if_config(void);
+
 #endif
index 930d0dd..cd8819d 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: oparse.c,v 1.4 2004/10/17 13:24:28 kattemat Exp $
+ * $Id: oparse.c,v 1.5 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
 void yyerror(char *);
 int yylex(void);
 
-struct if_config_options *
-get_default_if_config(void);
-
-
-struct if_config_options *
-get_default_if_config()
-{
-  struct if_config_options *io = malloc(sizeof(struct if_config_options));
-  struct in6_addr in6;
-  memset(io, 0, sizeof(struct if_config_options));
-
-  io->ipv6_addrtype = 1;
-
-  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_SITE_LOCAL, &in6) < 0)
-    {
-      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_SITE_LOCAL);
-      exit(EXIT_FAILURE);
-    }
-  memcpy(&io->ipv6_multi_site.v6, &in6, sizeof(struct in6_addr));
-
-  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_GLOBAL, &in6) < 0)
-    {
-      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_GLOBAL);
-      exit(EXIT_FAILURE);
-    }
-  memcpy(&io->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
-
-
-  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;
-
-  return io;
-
-}
 
 
 
@@ -267,7 +226,7 @@ typedef int YYSTYPE;
 
 
 /* Line 214 of yacc.c.  */
-#line 271 "oparse.c"
+#line 230 "oparse.c"
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -467,15 +426,15 @@ static const yysigned_char yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   146,   146,   147,   148,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   167,
-     168,   169,   170,   171,   174,   177,   177,   180,   183,   183,
-     186,   189,   189,   192,   193,   196,   199,   199,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   217,   220,   220,   223,   224,   230,   253,   272,   280,
-     300,   318,   325,   332,   339,   346,   353,   360,   367,   376,
-     394,   408,   444,   481,   501,   512,   519,   534,   549,   565,
-     581,   590,   599,   607,   617,   633,   649,   671,   683
+       0,   105,   105,   106,   107,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   126,
+     127,   128,   129,   130,   133,   136,   136,   139,   142,   142,
+     145,   148,   148,   151,   152,   155,   158,   158,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   176,   179,   179,   182,   183,   189,   212,   231,   242,
+     262,   280,   287,   294,   301,   308,   315,   322,   329,   338,
+     356,   374,   410,   447,   467,   478,   485,   500,   517,   533,
+     549,   558,   567,   575,   585,   601,   617,   639,   651
 };
 #endif
 
@@ -1269,7 +1228,7 @@ yyreduce:
   switch (yyn)
     {
         case 56:
-#line 231 "oparse.y"
+#line 190 "oparse.y"
     {
   struct if_config_options *io = get_default_if_config();
   if(io == NULL)
@@ -1292,7 +1251,7 @@ yyreduce:
     break;
 
   case 57:
-#line 254 "oparse.y"
+#line 213 "oparse.y"
     {
   struct in_addr in;
 
@@ -1312,16 +1271,19 @@ yyreduce:
     break;
 
   case 58:
-#line 273 "oparse.y"
+#line 232 "oparse.y"
     {
-  cnf->if_options->ipv6_addrtype = yyvsp[0]->boolean;
-  
+  if(yyvsp[0]->boolean)
+    cnf->if_options->ipv6_addrtype = IPV6_ADDR_SITELOCAL;
+  else
+    cnf->if_options->ipv6_addrtype = 0;
+
   free(yyvsp[0]);
 ;}
     break;
 
   case 59:
-#line 281 "oparse.y"
+#line 243 "oparse.y"
     {
   struct in6_addr in6;
 
@@ -1341,7 +1303,7 @@ yyreduce:
     break;
 
   case 60:
-#line 301 "oparse.y"
+#line 263 "oparse.y"
     {
   struct in6_addr in6;
 
@@ -1361,7 +1323,7 @@ yyreduce:
     break;
 
   case 61:
-#line 319 "oparse.y"
+#line 281 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tHELLO interval: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->hello_params.emission_interval = yyvsp[0]->floating;
@@ -1370,7 +1332,7 @@ yyreduce:
     break;
 
   case 62:
-#line 326 "oparse.y"
+#line 288 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tHELLO validity: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->hello_params.validity_time = yyvsp[0]->floating;
@@ -1379,7 +1341,7 @@ yyreduce:
     break;
 
   case 63:
-#line 333 "oparse.y"
+#line 295 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tTC interval: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->tc_params.emission_interval = yyvsp[0]->floating;
@@ -1388,7 +1350,7 @@ yyreduce:
     break;
 
   case 64:
-#line 340 "oparse.y"
+#line 302 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tTC validity: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->tc_params.validity_time = yyvsp[0]->floating;
@@ -1397,7 +1359,7 @@ yyreduce:
     break;
 
   case 65:
-#line 347 "oparse.y"
+#line 309 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tMID interval: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->mid_params.emission_interval = yyvsp[0]->floating;
@@ -1406,7 +1368,7 @@ yyreduce:
     break;
 
   case 66:
-#line 354 "oparse.y"
+#line 316 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tMID validity: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->mid_params.validity_time = yyvsp[0]->floating;
@@ -1415,7 +1377,7 @@ yyreduce:
     break;
 
   case 67:
-#line 361 "oparse.y"
+#line 323 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tHNA interval: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->hna_params.emission_interval = yyvsp[0]->floating;
@@ -1424,7 +1386,7 @@ yyreduce:
     break;
 
   case 68:
-#line 368 "oparse.y"
+#line 330 "oparse.y"
     {
     if(PARSER_DEBUG) printf("\tHNA validity: %0.2f\n", yyvsp[0]->floating);
     cnf->if_options->hna_params.validity_time = yyvsp[0]->floating;
@@ -1433,7 +1395,7 @@ yyreduce:
     break;
 
   case 69:
-#line 377 "oparse.y"
+#line 339 "oparse.y"
     {
 
   if(yyvsp[0]->boolean == 1)
@@ -1451,21 +1413,25 @@ yyreduce:
     break;
 
   case 70:
-#line 395 "oparse.y"
+#line 357 "oparse.y"
     {
-  if((yyvsp[0]->integer != 4) && (yyvsp[0]->integer != 6))
+  if(yyvsp[0]->integer == 4)
+    cnf->ip_version = AF_INET;
+  else if(yyvsp[0]->integer == 6)
+    cnf->ip_version = AF_INET6;
+  else
     {
       fprintf(stderr, "IPversion must be 4 or 6!\n");
       YYABORT;
     }
-  cnf->ip_version = yyvsp[0]->integer;
-  if(PARSER_DEBUG) printf("IpVersion: %d\n", cnf->ip_version);
+
+  if(PARSER_DEBUG) printf("IpVersion: %d\n", yyvsp[0]->integer);
   free(yyvsp[0]);
 ;}
     break;
 
   case 71:
-#line 409 "oparse.y"
+#line 375 "oparse.y"
     {
   struct hna4_entry *h = malloc(sizeof(struct hna4_entry));
   struct in_addr in;
@@ -1503,7 +1469,7 @@ yyreduce:
     break;
 
   case 72:
-#line 445 "oparse.y"
+#line 411 "oparse.y"
     {
   struct hna6_entry *h = malloc(sizeof(struct hna6_entry));
   struct in6_addr in6;
@@ -1542,7 +1508,7 @@ yyreduce:
     break;
 
   case 73:
-#line 482 "oparse.y"
+#line 448 "oparse.y"
     {
   struct olsr_if *in = malloc(sizeof(struct olsr_if));
   
@@ -1563,7 +1529,7 @@ yyreduce:
     break;
 
   case 74:
-#line 502 "oparse.y"
+#line 468 "oparse.y"
     {
 
   cnf->interfaces->config = yyvsp[0]->string;
@@ -1575,7 +1541,7 @@ yyreduce:
     break;
 
   case 75:
-#line 513 "oparse.y"
+#line 479 "oparse.y"
     {
   if(PARSER_DEBUG) printf("Noint set to %d\n", yyvsp[0]->boolean);
   free(yyvsp[0]);
@@ -1583,7 +1549,7 @@ yyreduce:
     break;
 
   case 76:
-#line 520 "oparse.y"
+#line 486 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1599,7 +1565,7 @@ yyreduce:
     break;
 
   case 77:
-#line 535 "oparse.y"
+#line 501 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1608,6 +1574,8 @@ yyreduce:
   else
     {
       if(PARSER_DEBUG) printf("Willingness: %d\n", yyvsp[0]->integer);
+      cnf->willingness_auto = 0;
+      cnf->willingness = yyvsp[0]->integer;
     }
   free(yyvsp[0]);
 
@@ -1615,7 +1583,7 @@ yyreduce:
     break;
 
   case 78:
-#line 550 "oparse.y"
+#line 518 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1631,7 +1599,7 @@ yyreduce:
     break;
 
   case 79:
-#line 566 "oparse.y"
+#line 534 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1647,7 +1615,7 @@ yyreduce:
     break;
 
   case 80:
-#line 582 "oparse.y"
+#line 550 "oparse.y"
     {
   cnf->hysteresis_param.scaling = yyvsp[0]->floating;
   if(PARSER_DEBUG) printf("Hysteresis Scaling: %0.2f\n", yyvsp[0]->floating);
@@ -1656,7 +1624,7 @@ yyreduce:
     break;
 
   case 81:
-#line 591 "oparse.y"
+#line 559 "oparse.y"
     {
   cnf->hysteresis_param.thr_high = yyvsp[0]->floating;
   if(PARSER_DEBUG) printf("Hysteresis UpperThr: %0.2f\n", yyvsp[0]->floating);
@@ -1665,7 +1633,7 @@ yyreduce:
     break;
 
   case 82:
-#line 600 "oparse.y"
+#line 568 "oparse.y"
     {
   cnf->hysteresis_param.thr_low = yyvsp[0]->floating;
   if(PARSER_DEBUG) printf("Hysteresis LowerThr: %0.2f\n", yyvsp[0]->floating);
@@ -1674,7 +1642,7 @@ yyreduce:
     break;
 
   case 83:
-#line 608 "oparse.y"
+#line 576 "oparse.y"
     {
   if(PARSER_DEBUG) printf("Pollrate %0.2f\n", yyvsp[0]->floating);
   cnf->pollrate = yyvsp[0]->floating;
@@ -1684,7 +1652,7 @@ yyreduce:
     break;
 
   case 84:
-#line 618 "oparse.y"
+#line 586 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1701,7 +1669,7 @@ yyreduce:
     break;
 
   case 85:
-#line 634 "oparse.y"
+#line 602 "oparse.y"
     {
   if(yyvsp[0]->boolean == 1)
     {
@@ -1717,7 +1685,7 @@ yyreduce:
     break;
 
   case 86:
-#line 650 "oparse.y"
+#line 618 "oparse.y"
     {
   struct plugin_entry *pe = malloc(sizeof(struct plugin_entry));
   
@@ -1740,7 +1708,7 @@ yyreduce:
     break;
 
   case 87:
-#line 672 "oparse.y"
+#line 640 "oparse.y"
     {
 
     if(PARSER_DEBUG) printf("Plugin param key:\"%s\" val: \"%s\"\n", yyvsp[-1]->string, yyvsp[0]->string);
@@ -1753,7 +1721,7 @@ yyreduce:
     break;
 
   case 88:
-#line 684 "oparse.y"
+#line 652 "oparse.y"
     {
     //if(PARSER_DEBUG) printf("Comment\n");
 ;}
@@ -1763,7 +1731,7 @@ yyreduce:
     }
 
 /* Line 999 of yacc.c.  */
-#line 1767 "oparse.c"
+#line 1735 "oparse.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -1957,7 +1925,7 @@ yyreturn:
 }
 
 
-#line 691 "oparse.y"
+#line 659 "oparse.y"
 
 
 void yyerror (char *string)
index 1b59290..e850f9c 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: oparse.y,v 1.5 2004/10/17 13:24:28 kattemat Exp $
+ * $Id: oparse.y,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
 void yyerror(char *);
 int yylex(void);
 
-struct if_config_options *
-get_default_if_config(void);
-
-
-struct if_config_options *
-get_default_if_config()
-{
-  struct if_config_options *io = malloc(sizeof(struct if_config_options));
-  struct in6_addr in6;
-  memset(io, 0, sizeof(struct if_config_options));
-
-  io->ipv6_addrtype = 1;
-
-  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_SITE_LOCAL, &in6) < 0)
-    {
-      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_SITE_LOCAL);
-      exit(EXIT_FAILURE);
-    }
-  memcpy(&io->ipv6_multi_site.v6, &in6, sizeof(struct in6_addr));
-
-  if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_GLOBAL, &in6) < 0)
-    {
-      fprintf(stderr, "Failed converting IP address %s\n", OLSR_IPV6_MCAST_GLOBAL);
-      exit(EXIT_FAILURE);
-    }
-  memcpy(&io->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
-
-
-  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;
-
-  return io;
-
-}
 
 
 
@@ -271,8 +230,11 @@ isetip4br: TOK_IP4BROADCAST TOK_IP4_ADDR
 
 isetip6addrt: TOK_IP6ADDRTYPE TOK_IP6TYPE
 {
-  cnf->if_options->ipv6_addrtype = $2->boolean;
-  
+  if($2->boolean)
+    cnf->if_options->ipv6_addrtype = IPV6_ADDR_SITELOCAL;
+  else
+    cnf->if_options->ipv6_addrtype = 0;
+
   free($2);
 }
 ;
@@ -393,13 +355,17 @@ idebug:       TOK_DEBUGLEVEL TOK_INTEGER
 
 iipversion:    TOK_IPVERSION TOK_INTEGER
 {
-  if(($2->integer != 4) && ($2->integer != 6))
+  if($2->integer == 4)
+    cnf->ip_version = AF_INET;
+  else if($2->integer == 6)
+    cnf->ip_version = AF_INET6;
+  else
     {
       fprintf(stderr, "IPversion must be 4 or 6!\n");
       YYABORT;
     }
-  cnf->ip_version = $2->integer;
-  if(PARSER_DEBUG) printf("IpVersion: %d\n", cnf->ip_version);
+
+  if(PARSER_DEBUG) printf("IpVersion: %d\n", $2->integer);
   free($2);
 }
 ;
@@ -540,6 +506,8 @@ awillingness: TOK_WILLINGNESS TOK_INTEGER
   else
     {
       if(PARSER_DEBUG) printf("Willingness: %d\n", $2->integer);
+      cnf->willingness_auto = 0;
+      cnf->willingness = $2->integer;
     }
   free($2);
 
index ec5fcd6..2dce79f 100644 (file)
@@ -845,7 +845,7 @@ char *yytext;
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: oscan.c,v 1.4 2004/10/17 13:24:28 kattemat Exp $
+ * $Id: oscan.c,v 1.5 2004/10/18 13:13:38 kattemat Exp $
  *
  */
 
index 07afe71..dc2b7b8 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: configfile.c,v 1.7 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: configfile.c,v 1.8 2004/10/18 13:13:36 kattemat Exp $
  *
  */
  
 #include "local_hna_set.h"
 #include "olsr.h"
 #include "plugin_loader.h"
+#include "interfaces.h"
 #include <string.h>
 #include <stdlib.h>
 
+#include "olsrd_cfgparser.h"
 
 /**
  *Funtion that tries to read and parse the config
 int
 read_config_file(char *filename)
 {
-  FILE *conf_file;
-  char line[CONFIG_MAX_LINESIZE];
-  char *linebuf, *firstbuf;
-  char tmp[FILENAME_MAX];
-  int ipv, prefix6, tmp_debug_level;
-  char addr[20], mask[20];
-  char addr6[50];
-  struct in_addr in;
-  struct in6_addr in6;
-  union olsr_ip_addr net;
+  struct olsr_if *in;
   union hna_netmask netmask;
+  struct hna4_entry *h4;
+  struct hna6_entry *h6;
 
-  conf_file = fopen(filename, "r");
-
-  olsr_printf(2, "Trying to read configuration from %s...", filename);
-
-  if(conf_file == NULL)
+  /*
+   * NB - CHECK IPv6 MULTICAST!
+   */
+  if((olsr_cnf = olsrd_parse_cnf(filename)) != NULL)
     {
-      olsr_printf(2, "failed\n");
+      olsrd_print_cnf(olsr_cnf);  
+    }
+  else
+    {
+      printf("Using default config values(no configfile)\n");
+      olsr_cnf = olsrd_get_default_cnf();
       return -1;
     }
 
-  olsr_printf(2, "OK\n\n");
-
-  /*output:
-   *Description: (at position 28)<value>
-   */
-
-  while(fgets(line, CONFIG_MAX_LINESIZE, conf_file))
+  /* Add interfaces */
+  in = olsr_cnf->interfaces;
+  while(in)
     {
-      if((line[0] != ' ') && 
-        (line[0] != '#') && 
-        (line[0] != '\n'))
-       {
-         olsr_printf(5, "parsing: %s", line);
-
-         /*
-          * IP version
-          */
-         if(strncmp(line, "IPVERSION", 9) == 0)
-           {
-             sscanf(&line[9], "%1d", &ipv);
-             switch(ipv)
-               {
-               case(4):
-                 ipversion = AF_INET;
-                 break;
-               case(6):
-                 ipversion = AF_INET6;
-                 break;
-               default:
-                 fprintf(stderr, "configfile: IPVERSION parsing failed(%d)!\n", ipv);
-                 break;
-               }
-             olsr_printf(2, "IPVERSION:                 %d\n", ipv);
-             continue;
-           }
-
-         /* 
-          * Interfaces 
-          */
-         if(strncmp(line, "INTERFACES", 10) == 0)
-           {
-
-             linebuf = olsr_malloc(strlen(&line[10] + 1), "Config");
-             firstbuf = linebuf;
-             linebuf = strtok(&line[10], " \t\n");
-
-             /* Interfaces to run on */
-             while(linebuf != NULL)
-               {
-                 option_i = 1;
-                 /* Insert into queue */
-                 queue_if(linebuf);
-
-                 olsr_printf(2, "adding interface:          %s\n", linebuf);
-
-                 linebuf = strtok(NULL, " \t\n");                
-               }
-
-             free(firstbuf);
-             continue;
-           }
-
-         /* 
-          * Run if no iterfaces are present? 
-          */
-         if(strncmp(line, "ALLOW_NO_INT", 12) == 0)
-           {
-              sscanf(&line[12], "%s", tmp);
-              if(strncmp(tmp, "yes", 3) == 0)
-               {
-                 allow_no_int = 1;
-               }
-             else
-               {
-                 allow_no_int = 0;
-               }
-
-             olsr_printf(2, "Allow no interfaces:       %s\n", tmp);
-
-              continue;
-           }
-
-         /*
-          * HNA
-          */
-         if(strncmp(line, "HNA4", 4) == 0)
-           {
-             sscanf(&line[4], "%s %s", addr, mask);
-             if (inet_aton(addr, &in) == 0)
-               {
-                 fprintf(stderr, "Error parsing HNA addr %s from configfile\n", addr);
-                 olsr_exit(__func__, EXIT_FAILURE);
-               }
-             memcpy(&net, &in.s_addr, sizeof(olsr_u32_t));
-             if (inet_aton(mask, &in) == 0)
-               {
-                 fprintf(stderr, "Error parsing HNA netmask %s from configfile\n", addr);
-                 olsr_exit(__func__, EXIT_FAILURE);
-               }
-             memcpy(&netmask, &in.s_addr, sizeof(olsr_u32_t));
-
-             olsr_printf(2, "HNA:                       %s/%s\n", addr, mask);     
-             
-             add_local_hna4_entry(&net, &netmask);
-             continue;
-           }
-
-
-         /*
-          * HNA IPv6
-          */
-         if(strncmp(line, "HNA6", 4) == 0)
-           {
-             memset(addr6, 0, 50);
-             sscanf(&line[4], "%s %d", addr6, &prefix6);
-
-             //prefix6 = atol(&line[4 + strlen(addr6)]);
-             if(inet_pton(AF_INET6, addr6, &in6) < 0)
-               {
-                 fprintf(stderr, "Error parsing HNA INET6 addr %s from configfile\n", addr6);
-                 olsr_exit(__func__, EXIT_FAILURE);
-               }
-             memcpy(&net, &in6, sizeof(struct in6_addr));
-
-             /* Create the netmask */
-             if((prefix6 < 0) || (prefix6 > 128))
-               {
-                 fprintf(stderr, "Error parsing HNA INET6 prefix %d for %s from configfile\n", prefix6, addr6);
-                 olsr_exit(__func__, EXIT_FAILURE);
-               }             
-             //olsr_printf(2, "HNA6: %s\n", (char *)inet_ntop(AF_INET6, &in6, addr6, 50));
-             //if (inet_aton(mask, &in) == 0) continue;
-             //memcpy(&h.hna_net.netmask, &in.s_addr, sizeof(olsr_u32_t));
-             
-
-             olsr_printf(2, "HNA6:                      %s/%d\n", addr6, prefix6);         
-
-             netmask.v6 = prefix6;
+      queue_if(in->name, in->if_options);
+      in = in->next;
+    }
 
-             add_local_hna6_entry(&net, &netmask);
+  /* Add HNA4 entries */
+  h4 = olsr_cnf->hna4_entries;
 
-             continue;
-           }
+  while(h4)
+    {
+      netmask.v4 = h4->netmask;
+      add_local_hna4_entry((union olsr_ip_addr *)&h4->net, &netmask);
+      h4 = h4->next;
+    }
 
+  /* Add HNA6 entries */
+  h6 = olsr_cnf->hna6_entries;
 
-         /*
-          *Pollrate
-          */
-          if(strncmp(line, "POLLRATE", 8) == 0)
-            {
-              sscanf(&line[8], "%4s", tmp);
-              if(strncmp(tmp, "auto", 4) != 0)
-               sscanf(&line[8], "%4f", &polling_int);
+  while(h6)
+    {
+      netmask.v6 = h6->prefix_len;
+      add_local_hna6_entry(&h6->net, &netmask);
+      h6 = h6->next;
+    }
 
-             olsr_printf(2, "Polling rate:              %s\n", tmp);
+  /* Add plugins */
 
-              continue;
-            }
 
+  return 0;
 
+#if 0
+  FILE *conf_file;
+  char line[CONFIG_MAX_LINESIZE];
+  char *linebuf, *firstbuf;
+  char tmp[FILENAME_MAX];
+  int ipv, prefix6, tmp_debug_level;
+  char addr[20], mask[20];
+  char addr6[50];
+  struct in_addr in;
+  struct in6_addr in6;
+  union olsr_ip_addr net;
+  union hna_netmask netmask;
 
-         /*
-          *DEBUGLEVEL
-          */
-          if(strncmp(line, "DEBUG", 5) == 0)
-            {
-              sscanf(&line[5], "%d", &tmp_debug_level);
-             if((tmp_debug_level < 0) || (tmp_debug_level > 9))
-               {
-                 fprintf(stderr, "Wrong DEBUG value \"%d\" in config file!\n", debug_level);
-                 olsr_exit(__func__, EXIT_FAILURE);
-               }
-             debug_level = tmp_debug_level;
-             olsr_printf(2, "Debug level:               %d\n", debug_level);
 
-              continue;
-            }
 
          /*
           * IPv4 broadcast 255.255.255.255 or interface detection
@@ -662,14 +531,30 @@ read_config_file(char *filename)
          //olsr_syslog(OLSR_LOG_ERR, "Could not parse config file(%s) line:\"%s\"", filename, line);
 
          olsr_printf(1, "Could not parse config file(%s) line: %s", filename, line);
-       }
+       
       else
        olsr_printf(5, "Skipping: %s", line);
-    }
+    
 
 
   fclose(conf_file);
   return 0;
+
+#endif
 }
 
 
+
+struct if_config_options *
+get_default_ifcnf(struct olsrd_config *cnf)
+{
+  struct if_config_options *ifc = cnf->if_options;
+
+  while(ifc)
+    {
+      if(!strcmp(ifc->name, DEFAULT_IF_CONFIG_NAME))
+        return ifc;
+      ifc = ifc->next;
+    }
+  return NULL;
+}
index 55fa1fb..46fc887 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: configfile.h,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: configfile.h,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
  
@@ -47,8 +47,7 @@ char ipv6_mult_global[50];             /* IPv6 multicast group global */
 int
 read_config_file(char *);
 
-/* So we don't have to include main.h */
-extern void
-queue_if(char *);
+struct if_config_options *
+get_default_ifcnf(struct olsrd_config *);
 
 #endif
index adc5934..25c762d 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: defs.h,v 1.14 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: defs.h,v 1.15 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -45,6 +45,7 @@
 #include "process_routes.h" /* Needed for rt_entry */
 #include "net.h" /* IPaddr -> string conversions is used by everyone */
 #include "olsr.h" /* Everybody uses theese */
+#include "olsrd_cfgparser.h"
 
 #define VERSION "0.4.8-pre"
 #define SOFTWARE_VERSION "olsr.org - " VERSION
    olsr_printf(1, format, ##args);
 #endif
 
+
+/*
+ * Global olsrd configuragtion
+ */
+
+struct olsrd_config *olsr_cnf;
+
 /*
  * Address list
  */
@@ -77,22 +85,12 @@ struct addresses
 
 int exit_value; /* Global return value for process termination */
 
-/* mantissa/exponent Vtime and Htime variables */
-olsr_u8_t hello_vtime;
-olsr_u8_t hello_nw_vtime;
-olsr_u8_t tc_vtime;
-olsr_u8_t mid_vtime;
-olsr_u8_t hna_vtime;
-olsr_u8_t htime;
-olsr_u8_t htime_nw;
-
 
 /* Timer data */
 struct timeval now;            /* current idea of time */
 struct tm *nowtm;              /* current idea of time (in tm) */
 
 char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
-char ipv6_mult[50];             /* IPv6 multicast group */
 
 int disp_pack_in;               /* display incoming packet content? */
 int disp_pack_out;               /* display outgoing packet content? */
@@ -100,54 +98,22 @@ int disp_pack_out;               /* display outgoing packet content? */
 
 int use_ipc; /* Should we use the ipc socket for the front-end */
 
-int use_hysteresis;
-
 int llinfo;
 
 int inet_tnl_added; /* If Internet gateway tunnel is added */
 int use_tunnel; /* Use Internet gateway tunneling */
 int gw_tunnel; /* Work as Internet gateway */
 
-
-/*
- * Willingness
- */
-int willingness_set;
-int my_willingness;
-
-
 /*
  * Timer values
  */
 
 extern float will_int;
-extern float neighbor_hold_time_nw;
-extern float mid_hold_time;
-extern float hna_hold_time;
 extern float dup_hold_time;
-extern float hello_int_nw;
-extern float mid_int;
 extern float max_jitter;
 
-
-/*
- * Debug value
- */
-int debug_level;
-
-/*
- * Ipversion beeing used AF_INET or AF_INET6
- * and size of an IP address
- */
-int ipversion;
 size_t ipsize;
 
-/*
- * IPv6 addresstype to use
- * global or site-local
- */
-int ipv6_addrtype;
-
 /*
  * Address of this hosts OLSR interfaces
  * and main address of this node
@@ -155,31 +121,9 @@ int ipv6_addrtype;
  */
 union olsr_ip_addr main_addr;
 int nbinterf;
-int allow_no_int; /* Run if no interfaces are present? */
-
-/*
- * Hysteresis data
- */
-
-float hyst_scaling;
-float hyst_threshold_low;
-float hyst_threshold_high;
-
-
-/*
- * TC redundancy
- */
 
-int tc_redundancy;
 int sending_tc;
 
-/*
- * MPR redundacy
- */
-
-int mpr_coverage;
-
-
 /*
  * OLSR UPD port
  */
@@ -198,8 +142,7 @@ int hna_timeout_mult;
 
 int ioctl_s;
 
-extern float hello_int, tc_int, polling_int, hna_int;
-
+float max_tc_vtime;
 
 struct timeval fwdtimer[MAX_IFS];      /* forwarding timer */
 
@@ -213,12 +156,6 @@ extern int inet_gw; /* Are we an internet gateway? */
 
 extern int minsize;
 
-extern int option_i;
-
-/* Broadcast 255.255.255.255 */
-extern int bcast_set;
-extern struct sockaddr_in bcastaddr;
-
 
 extern struct hna_entry *hna_old;
 
index a395d59..83d7d48 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: duplicate_set.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: duplicate_set.c,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -48,7 +48,7 @@ olsr_init_duplicate_table()
   /* Since the holdingtime is rather large for duplicate
    * entries the timeoutfunction is only ran every 2 seconds
    */
-  olsr_register_scheduler_event(&olsr_time_out_duplicate_table, 2, 0, NULL);
+  olsr_register_scheduler_event(&olsr_time_out_duplicate_table, NULL, 2, 0, NULL);
   
   for(i = 0; i < HASHSIZE; i++)
     {
@@ -212,7 +212,7 @@ olsr_del_dup_entry(struct dup_entry *entry)
 
 
 void
-olsr_time_out_duplicate_table()
+olsr_time_out_duplicate_table(void *foo)
 {
   int i;
   struct dup_entry *tmp_dup_table, *entry_to_delete;
index accc278..7f576cc 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: duplicate_set.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: duplicate_set.h,v 1.7 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -54,11 +54,14 @@ struct dup_entry dup_set[HASHSIZE];
 
 struct timeval  hold_time_duplicate;
 
+float dup_hold_time;
+
+
 void
 olsr_init_duplicate_table(void);
 
 void
-olsr_time_out_duplicate_table(void);
+olsr_time_out_duplicate_table(void *);
 
 int
 olsr_check_dup_table_proc(union olsr_ip_addr *, olsr_u16_t);
index de5ce9d..5449e3f 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: generate_msg.c,v 1.8 2004/09/25 21:52:27 kattemat Exp $
+ * $Id: generate_msg.c,v 1.9 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
 #include "generate_msg.h"
 #include "defs.h"
-#include "scheduler.h"
 #include "build_msg.h"
 #include "packet.h"
-#include "mantissa.h"
-#include "link_set.h"
 
 /*
  * Infomation repositiries
 #include "neighbor_table.h"
 
 
-/**
- * Function that sets the HELLO emission interval and
- * calculates all other nessecarry values such as
- * the VTIME value to emit in messages.
- * The message generation function is removed
- * and re-registered
- *
- *@param interval the new emission interval
- *
- *@return negative on error
- */
-int
-olsr_set_hello_interval(float interval)
-{
-  if(interval < polling_int)
-    return -1;
-
-  /* Unregister function */
-  olsr_remove_scheduler_event(&generate_hello, hello_int, 0, NULL);
-
-  hello_int = interval;
-
-  /* Re-calculate holdingtime to announce */
-  neighbor_hold_time = hello_int * neighbor_timeout_mult;
-
-  olsr_printf(3, "Setting HELLO interval to %0.2f timeout %0.2f\n", interval, neighbor_hold_time);
-
-  hello_vtime = double_to_me(neighbor_hold_time);
-
-  htime = double_to_me(hello_int);
-
-  olsr_init_timer((olsr_u32_t) (neighbor_hold_time*1000), &hold_time_neighbor);
-
-
-  /* Reregister function */
-  olsr_register_scheduler_event(&generate_hello, hello_int, 0, NULL);
-
-  /*
-   *Jitter according to the RFC
-   */
-  max_jitter = hello_int / 4;
-
-  return 1;
-}
-
-/**
- * Function that sets the HELLO emission interval 
- * for non-wireless interfaces and
- * calculates all other nessecarry values such as
- * the VTIME value to emit in messages.
- * The message generation function is removed
- * and re-registered
- *
- *@param interval the new emission interval
- *
- *@return negative on error
- */
-int
-olsr_set_hello_nw_interval(float interval)
-{
-
-  if(interval < polling_int)
-    return -1;
-
-
-  /* Unregister function */
-  olsr_remove_scheduler_event(&generate_hello_nw, hello_int_nw, 0, NULL);
-
-  hello_int_nw = interval;
-
-  /* Re-calculate holdingtime to announce */
-  neighbor_hold_time_nw = hello_int_nw * neighbor_timeout_mult_nw;
-
-  olsr_printf(3, "Setting HELLO NW interval to %0.2f hold time %0.2f\n", interval, neighbor_hold_time_nw);
-
-  hello_nw_vtime = double_to_me(neighbor_hold_time_nw);
-
-  htime_nw = double_to_me(hello_int_nw);
-
-  olsr_init_timer((olsr_u32_t) (neighbor_hold_time_nw*1000), &hold_time_neighbor_nw);
-
-
-  /* Reregister function */
-  olsr_register_scheduler_event(&generate_hello_nw, hello_int_nw, 0, NULL);
-
-  return 1;
-}
-
-
-/**
- * Function that sets the TC emission interval and
- * calculates all other nessecarry values such as
- * the VTIME value to emit in messages.
- * The message generation function is removed
- * and re-registered
- *
- *@param interval the new emission interval
- *
- *@return negative on error
- */
-
-int
-olsr_set_tc_interval(float interval)
-{
-  if(interval < polling_int)
-    return -1;
-  /* Unregister function */
-  olsr_remove_scheduler_event(&generate_tc, tc_int, 0, NULL);
-
-  tc_int = interval;
-
-  /* Re-calculate holdingtime to announce */
-  topology_hold_time = tc_int * topology_timeout_mult;
-
-  olsr_printf(3, "Setting TC interval to %0.2f timeout %0.2f\n", interval, topology_hold_time);
-
-  tc_vtime = double_to_me(topology_hold_time);
-
-  /* Reregister function */
-  olsr_register_scheduler_event(&generate_tc, tc_int, 0, &changes);
-
-  return 1;
-}
-
-
-/**
- * Function that sets the MID emission interval and
- * calculates all other nessecarry values such as
- * the VTIME value to emit in messages.
- * The message generation function is removed
- * and re-registered
- *
- *@param interval the new emission interval
- *
- *@return negative on error
- */
-
-int
-olsr_set_mid_interval(float interval)
-{
-  if(interval < polling_int)
-    return -1;
-
-  if(nbinterf > 1)
-    return 0;
-
-  /* Unregister function */
-  olsr_remove_scheduler_event(&generate_mid, mid_int, 0, NULL);
-
-  mid_int = interval;
-
-  /* Re-calculate holdingtime to announce */
-  mid_hold_time = mid_int * mid_timeout_mult;
-
-  olsr_printf(3, "Setting MID interval to %0.2f timeout %0.2f\n", interval, mid_hold_time);
-
-  mid_vtime = double_to_me(mid_hold_time);
-
-  /* Reregister function */
-  olsr_register_scheduler_event(&generate_mid, mid_int, mid_int/2, NULL);
-
-  return 1;
-}
-
-
-/**
- * Function that sets the HNA emission interval and
- * calculates all other nessecarry values such as
- * the VTIME value to emit in messages.
- * The message generation function is removed
- * and re-registered
- *
- *@param interval the new emission interval
- *
- *@return negative on error
- */
-
-int
-olsr_set_hna_interval(float interval)
-{
-  if(interval < polling_int)
-    return -1;
-
-  /* Unregister function */
-  olsr_remove_scheduler_event(&generate_hna, hna_int, 0, NULL);
-
-  hna_int = interval;
-
-  /* Re-calculate holdingtime to announce */
-  hna_hold_time = hna_int * hna_timeout_mult;
-
-  olsr_printf(3, "Setting HNA interval to %0.2f timeout %0.2f\n", interval, hna_hold_time);
-
-  hna_vtime = double_to_me(hna_hold_time);
-
-  olsr_register_scheduler_event(&generate_hna, hna_int, hna_int/2, NULL);
-
-  return 1;
-}
-
-
-
-
-
 void
-generate_hello()
+generate_hello(void *p)
 {
-  struct interface *ifn;
   struct hello_message hellopacket;
+  struct interface *ifn = (struct interface *)p;
 
-  /* looping trough interfaces */
-  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
-    {
-      if(!ifn->is_wireless)
-       continue;
+  olsr_build_hello_packet(&hellopacket, ifn);
+  hello_build(&hellopacket, ifn);
       
-      olsr_build_hello_packet(&hellopacket, ifn);
-      hello_build(&hellopacket, ifn);
-      
-      if(net_output_pending(ifn))
-       net_output(ifn);
-      
-    }
+  if(net_output_pending(ifn))
+    net_output(ifn);
 }
 
 void
-generate_hello_nw()
+generate_tc(void *p)
 {
-  struct interface *ifn;
-  struct hello_message hellopacket;
-
-  /* looping trough interfaces */
-  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
-    {
-      if(ifn->is_wireless)
-       continue;
-      
-      olsr_build_hello_packet(&hellopacket, ifn);
-      hello_build(&hellopacket, ifn);
-
-      if(net_output_pending(ifn))
-       net_output(ifn);
-
-    }
-  return;
-}
-
-
-
-void
-generate_tc()
-{
-  struct interface *ifn;
   struct tc_message tcpacket;
+  struct interface *ifn = (struct interface *)p;
 
-  /* looping trough interfaces */
-  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
-    {
-      olsr_build_tc_packet(&tcpacket);
-      tc_build(&tcpacket, ifn);
+  olsr_build_tc_packet(&tcpacket);
+  tc_build(&tcpacket, ifn);
 
-      if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
-       {
-         set_buffer_timer(ifn);
-       }
+  if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
+    {
+      set_buffer_timer(ifn);
     }
 }
 
 
 void
-generate_mid()
+generate_mid(void *p)
 {
-  struct interface *ifn;
-
-  /* looping trough interfaces */
-  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
+  struct interface *ifn = (struct interface *)p;
+  mid_build(ifn);
+  
+  if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
     {
-      //printf("\nSending MID seq: %i\n", ifn->seqnums.mid_seqnum);
-      mid_build(ifn);
-
-      if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
-       {
-         set_buffer_timer(ifn);
-       }
+      set_buffer_timer(ifn);
     }
 
-return;
 }
 
 
 
 void
-generate_hna()
+generate_hna(void *p)
 {
-  struct interface *ifn;
-
-  /* looping trough interfaces */
-  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
-    { 
-      hna_build(ifn);
-      
-      if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
-       {
-         set_buffer_timer(ifn);
-       }
+  struct interface *ifn = (struct interface *)p;
+  hna_build(ifn);
+  
+  if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
+    {
+      set_buffer_timer(ifn);
     }
-  return;
 }
 
 
@@ -356,16 +100,16 @@ generate_hna()
  *Displays various tables depending on debuglevel
  */
 void
-generate_tabledisplay()
+generate_tabledisplay(void *foo)
 {
-  if(debug_level > 0) 
+  if(olsr_cnf->debug_level > 0) 
     {
       olsr_print_neighbor_table();
       
-      if(debug_level > 1)
+      if(olsr_cnf->debug_level > 1)
        {
          olsr_print_tc_table();
-         if(debug_level > 2) 
+         if(olsr_cnf->debug_level > 2) 
            {
              olsr_print_mprs_set();
              olsr_print_mid_set();
index cdf6763..7b95286 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: generate_msg.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: generate_msg.h,v 1.7 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
 
 /* Functions */
 
-int
-olsr_set_hello_interval(float);
-
-int
-olsr_set_hello_nw_interval(float);
-
-int
-olsr_set_tc_interval(float);
-
-int
-olsr_set_mid_interval(float);
-
-int
-olsr_set_hna_interval(float);
-
-void
-generate_hello(void);
-
 void
-generate_hello_nw(void);
+generate_hello(void *);
 
 void
-generate_mid(void);
+generate_mid(void *);
 
 void
-generate_hna(void);
+generate_hna(void *);
 
 void
-generate_tc(void);
+generate_tc(void *);
 
 void
-generate_tabledisplay(void);
+generate_tabledisplay(void *);
 
 #endif
index 57f1f4c..ddd7e8f 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: hashing.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: hashing.c,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -40,7 +40,7 @@ olsr_hashing(union olsr_ip_addr *address)
   olsr_u32_t hash;
   char *tmp;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     /* IPv4 */  
     hash = (ntohl(address->v4));
   else
index 01d561f..559ed91 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: hashing.h,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: hashing.h,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -30,7 +30,7 @@
 #define        HASHSIZE        32
 #define        HASHMASK        (HASHSIZE - 1)
 
-extern int ipversion;
+#include "defs.h"
 
 olsr_u32_t
 olsr_hashing(union olsr_ip_addr *);
index ff1fed4..20d851f 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: hna_set.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: hna_set.c,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -38,7 +38,7 @@ olsr_init_hna_set()
 
   int index;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       netmask_size = sizeof(olsr_u32_t);
     }
@@ -50,7 +50,7 @@ olsr_init_hna_set()
   /* Since the holdingtime is assumed to be rather large for 
    * HNA entries, the timeoutfunction is only ran once every second
    */
-  olsr_register_scheduler_event(&olsr_time_out_hna_set, 1, 0, NULL);
+  olsr_register_scheduler_event(&olsr_time_out_hna_set, NULL, 1, 0, NULL);
 
   for(index=0;index<HASHSIZE;index++)
     {
@@ -246,7 +246,7 @@ olsr_update_hna_entry(union olsr_ip_addr *gw, union olsr_ip_addr *net, union hna
  *@return nada
  */
 void
-olsr_time_out_hna_set()
+olsr_time_out_hna_set(void *foo)
 {
   int index;
   struct hna_entry *tmp_hna, *hna_to_delete;
index fcc6058..58fd364 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: hna_set.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: hna_set.h,v 1.7 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -79,7 +79,7 @@ olsr_update_hna_entry(union olsr_ip_addr *, union olsr_ip_addr *, union hna_netm
 
 
 void
-olsr_time_out_hna_set(void);
+olsr_time_out_hna_set(void *);
 
 
 void
index b663daf..dc84517 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: hysteresis.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: hysteresis.c,v 1.6 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
 #include "defs.h"
 #include "olsr.h"
 
+#define hscaling olsr_cnf->hysteresis_param.scaling
+#define hhigh    olsr_cnf->hysteresis_param.thr_high
+#define hlow     olsr_cnf->hysteresis_param.thr_low
 
 inline float
 olsr_hyst_calc_stability(float old_quality)
 {
-  return (((1 - hyst_scaling) * old_quality) + hyst_scaling);
+  return (((1 - hscaling) * old_quality) + hscaling);
 }
 
 
@@ -43,7 +46,7 @@ olsr_hyst_calc_stability(float old_quality)
 inline float
 olsr_hyst_calc_instability(float old_quality)
 {
-  return ((1 - hyst_scaling) * old_quality);
+  return ((1 - hscaling) * old_quality);
 }
 
 
@@ -54,7 +57,7 @@ olsr_process_hysteresis(struct link_entry *entry)
   struct timeval tmp_timer;
 
   //printf("PROCESSING QUALITY: %f\n", entry->L_link_quality);
-  if(entry->L_link_quality > hyst_threshold_high)
+  if(entry->L_link_quality > hhigh)
     {
       if(entry->L_link_pending == 1)
        {
@@ -76,7 +79,7 @@ olsr_process_hysteresis(struct link_entry *entry)
       return 1;
     }
 
-  if(entry->L_link_quality < hyst_threshold_low)
+  if(entry->L_link_quality < hlow)
     {
       if(entry->L_link_pending == 0)
        {
index 22bf41e..fb27f25 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: ifnet.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: ifnet.h,v 1.7 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -40,7 +40,7 @@ int
 set_flag(char *, short);
 
 void
-check_interface_updates(void);
+check_interface_updates(void *);
 
 int
 chk_if_changed(struct if_name *);
index 0d190bc..7c69104 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: interfaces.c,v 1.6 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: interfaces.c,v 1.7 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
@@ -49,7 +49,7 @@ ifinit()
    *Initializing addrsock struct to be
    *used on all the sockets
    */
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       memset(&addrsock, 0, sizeof (addrsock));
@@ -74,7 +74,7 @@ ifinit()
     }
   
   /* register network interface update function with scheduler */
-  olsr_register_scheduler_event(&check_interface_updates, 5.0, 0, NULL);
+  olsr_register_scheduler_event(&check_interface_updates, NULL, 5.0, 0, NULL);
 
   return nbinterf;
 }
@@ -97,7 +97,7 @@ if_ifwithaddr(union olsr_ip_addr *addr)
 
   for (ifp = ifnet; ifp; ifp = ifp->int_next)
     {
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 */
          //printf("Checking: %s == ", inet_ntoa(((struct sockaddr_in *)&ifp->int_addr)->sin_addr));
@@ -144,56 +144,6 @@ if_ifwithsock(int fd)
   return (ifp);
 }
 
-#ifndef WIN32
-/*
- *From net-tools lib/interface.c
- *
- */
-
-int
-get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
-{
-  char addr6[40], devname[IFNAMSIZ];
-  char addr6p[8][5];
-  int plen, scope, dad_status, if_idx;
-  FILE *f;
-  struct sockaddr_in6 tmp_sockaddr6;
-
-  if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) 
-    {
-      while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
-                   addr6p[0], addr6p[1], addr6p[2], addr6p[3],
-                   addr6p[4], addr6p[5], addr6p[6], addr6p[7],
-                   &if_idx, &plen, &scope, &dad_status, devname) != EOF) 
-       {
-         if (!strcmp(devname, ifname)) 
-           {
-             sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",
-                     addr6p[0], addr6p[1], addr6p[2], addr6p[3],
-                     addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
-             if(debug_level > 1)
-               {
-                 olsr_printf(1, "\tinet6 addr: %s\n", addr6);
-                 olsr_printf(3, "\tScope:");
-               }
-             if(scope == scope_in)
-               {
-                 olsr_printf(3, "IPv6 addr:\n");
-                 inet_pton(AF_INET6,addr6,&tmp_sockaddr6);
-                 memcpy(&saddr6->sin6_addr, &tmp_sockaddr6, sizeof(struct in6_addr));    
-                 fclose(f);
-                 return 1;
-               }
-           }
-       }
-      fclose(f);
-    }
-  
-  return 0;
-}
-#endif
-
-
 
 
 
@@ -206,7 +156,7 @@ get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
  *@return nada
  */
 void
-queue_if(char *name)
+queue_if(char *name, struct if_config_options *ico)
 {
 
   struct if_name *interf_n;
@@ -229,6 +179,8 @@ queue_if(char *name)
 
   /* strlen () does not return length including terminating /0 */
   interf_n->name = olsr_malloc(strlen(name) + 1, "queue interface name");
+  interf_n->cnf = ico;
+  interf_n->max_jitter = ico->hello_params.emission_interval / 4;
   interf_n->configured = 0;
   interf_n->interf = NULL;
   interf_n->index = queued_ifs++;
index c59b322..fe29928 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: interfaces.h,v 1.8 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: interfaces.h,v 1.9 2004/10/18 13:13:36 kattemat Exp $
  *
  */
 
 #define IPV6_ADDR_RESERVED     0x2000U
 
 
+struct vtimes
+{
+  olsr_u8_t hello;
+  olsr_u8_t tc;
+  olsr_u8_t mid;
+  olsr_u8_t hna;
+};
 
 /**
  *A struct containing all necessary information about each
@@ -76,6 +83,10 @@ struct interface
   int           if_nr;                          /* This interfaces index internally*/
   int           is_wireless;                    /* wireless interface or not*/
   olsr_u16_t    olsr_seqnum;                    /* Olsr message seqno */
+
+  float         hello_etime;
+  struct        vtimes valtimes;
+
   struct       interface *int_next;
 };
 
@@ -88,7 +99,9 @@ struct if_name
   char *name;
   int configured;
   int index;
+  float max_jitter;
   struct interface *interf;
+  struct if_config_options *cnf;
   struct if_name *next;
 };
 
@@ -139,11 +152,8 @@ if_ifwithsock(int);
 struct interface *
 if_ifwithaddr(union olsr_ip_addr *);
 
-int
-get_ipv6_address(char *, struct sockaddr_in6 *, int);
-
 void
-queue_if(char *);
+queue_if(char *, struct if_config_options *);
 
 int
 add_ifchgf(int (*f)(struct interface *, int));
index 6da5ed6..6ddaa2d 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: ipc_frontend.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: ipc_frontend.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -105,7 +105,7 @@ ipc_accept_thread()
   struct sockaddr_in pin;
   char *addr;  
 
-  while(use_ipc)
+  while(olsr_cnf->open_ipc)
     {
       olsr_printf(2, "\nFront-end accept thread initiated(socket %d)\n\n", ipc_sock);
 
@@ -184,7 +184,7 @@ frontend_msgparser(union olsr_message *msg, struct interface *in_if, union olsr_
   if(!ipc_active)
     return;
   
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     size = ntohs(msg->v4.olsr_msgsize);
   else
     size = ntohs(msg->v6.olsr_msgsize);
@@ -193,7 +193,7 @@ frontend_msgparser(union olsr_message *msg, struct interface *in_if, union olsr_
     {
       olsr_printf(1, "(OUTPUT)IPC connection lost!\n");
       close(ipc_connection);
-      //use_ipc = 0;
+      //olsr_cnf->open_ipc = 0;
       ipc_active = 0;
       return;
     }
@@ -224,7 +224,7 @@ ipc_route_send_rtentry(union olsr_kernel_route *kernel_route, int add, char *int
   packet.size = htons(IPC_PACK_SIZE);
   packet.msgtype = ROUTE_IPC;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     COPY_IP(&packet.target_addr, &((struct sockaddr_in *)&kernel_route->v4.rt_dst)->sin_addr.s_addr);
   else
     COPY_IP(&packet.target_addr, &kernel_route->v6.rtmsg_dst);
@@ -232,7 +232,7 @@ ipc_route_send_rtentry(union olsr_kernel_route *kernel_route, int add, char *int
   packet.add = add;
   if(add)
     {
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          packet.metric = kernel_route->v4.rt_metric - 1;
          COPY_IP(&packet.gateway_addr, &((struct sockaddr_in *)&kernel_route->v4.rt_gateway)->sin_addr.s_addr);
@@ -277,7 +277,7 @@ ipc_route_send_rtentry(union olsr_kernel_route *kernel_route, int add, char *int
     {
       olsr_printf(1, "(RT_ENTRY)IPC connection lost!\n");
       close(ipc_connection);
-      //use_ipc = 0;
+      //olsr_cnf->open_ipc = 0;
       ipc_active = 0;
       return -1;
     }
@@ -317,7 +317,7 @@ ipc_send_all_routes()
          
          packet.add = 1;
 
-         if(ipversion == AF_INET)
+         if(olsr_cnf->ip_version == AF_INET)
            {
              packet.metric = (olsr_u8_t)(destination->rt_metric - 1);
            }
@@ -339,7 +339,7 @@ ipc_send_all_routes()
            {
              olsr_printf(1, "(RT_ENTRY)IPC connection lost!\n");
              close(ipc_connection);
-             //use_ipc = 0;
+             //olsr_cnf->open_ipc = 0;
              ipc_active = 0;
              return -1;
            }
@@ -362,7 +362,7 @@ ipc_send_all_routes()
          
          packet.add = 1;
 
-         if(ipversion == AF_INET)
+         if(olsr_cnf->ip_version == AF_INET)
            {
              packet.metric = (olsr_u8_t)(destination->rt_metric - 1);
            }
@@ -384,7 +384,7 @@ ipc_send_all_routes()
            {
              olsr_printf(1, "(RT_ENTRY)IPC connection lost!\n");
              close(ipc_connection);
-             //use_ipc = 0;
+             //olsr_cnf->open_ipc = 0;
              ipc_active = 0;
              return -1;
            }
@@ -430,7 +430,7 @@ ipc_send_net_info()
   net_msg->mids = nbinterf - 1;
   
   /* HNAs */
-  if(ipversion == AF_INET6)
+  if(olsr_cnf->ip_version == AF_INET6)
     {
       if(local_hna6_set.next == &local_hna6_set)
        net_msg->hnas = 0;
@@ -438,7 +438,7 @@ ipc_send_net_info()
        net_msg->hnas = 1;
     }
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       if(local_hna4_set.next == &local_hna4_set)
        net_msg->hnas = 0;
@@ -447,13 +447,14 @@ ipc_send_net_info()
     }
 
   /* Different values */
-  net_msg->hello_int = htons((olsr_u16_t)hello_int);
-  net_msg->hello_lan_int = htons((olsr_u16_t)hello_int_nw);
-  net_msg->tc_int = htons((olsr_u16_t)tc_int);
-  net_msg->neigh_hold = htons((olsr_u16_t)neighbor_hold_time);
-  net_msg->topology_hold = htons((olsr_u16_t)topology_hold_time);
-
-  if(ipversion == AF_INET)
+  /* Temporary fixes */
+  net_msg->hello_int = 0;//htons((olsr_u16_t)hello_int);
+  net_msg->hello_lan_int = 0;//htons((olsr_u16_t)hello_int_nw);
+  net_msg->tc_int = 0;//htons((olsr_u16_t)tc_int);
+  net_msg->neigh_hold = 0;//htons((olsr_u16_t)neighbor_hold_time);
+  net_msg->topology_hold = 0;//htons((olsr_u16_t)topology_hold_time);
+
+  if(olsr_cnf->ip_version == AF_INET)
     net_msg->ipv6 = 0;
   else
     net_msg->ipv6 = 1;
@@ -484,7 +485,7 @@ ipc_send_net_info()
     {
       olsr_printf(1, "(NETINFO)IPC connection lost!\n");
       close(ipc_connection);
-      use_ipc = 0;
+      olsr_cnf->open_ipc = 0;
       return -1;
     }
 
index 64efbd4..f2dd524 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: link_layer.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: link_layer.h,v 1.7 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -32,7 +32,7 @@ void
 init_link_layer_notification(void);
 
 void
-poll_link_layer(void);
+poll_link_layer(void *);
 
 int
 add_spy_node(union olsr_ip_addr *, char *);
index 7bcba24..a3e2f63 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: link_set.c,v 1.8 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: link_set.c,v 1.9 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -70,11 +70,10 @@ olsr_init_link_set()
 {
 
   /* Timers */
-  olsr_init_timer((olsr_u32_t) (neighbor_hold_time*1000), &hold_time_neighbor);
-  olsr_init_timer((olsr_u32_t) (neighbor_hold_time_nw*1000), &hold_time_neighbor_nw);
+  olsr_init_timer((olsr_u32_t) (NEIGHB_HOLD_TIME*1000), &hold_time_neighbor);
 
   olsr_register_timeout_function(&olsr_time_out_link_set);
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       olsr_register_timeout_function(&olsr_time_out_hysteresis);
     }
@@ -103,7 +102,7 @@ lookup_link_status(struct link_entry *entry)
   /*
    * Hysteresis
    */
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       /*
        if L_LOST_LINK_time is not expired, the link is advertised
@@ -404,7 +403,7 @@ add_new_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, union olsr_
 
 
   /* HYSTERESIS */
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       new_link->L_link_pending = 1;
       olsr_get_timestamp((olsr_u32_t) vtime*1000, &new_link->L_LOST_LINK_time);
@@ -593,10 +592,7 @@ update_link_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, struct
        //timeradd(&now, &tmp_timer, &entry->SYM_time);
 
       /* L_time = L_SYM_time + NEIGHB_HOLD_TIME */
-      if(in_if->is_wireless)
-       timeradd(&entry->SYM_time, &hold_time_neighbor, &entry->time);
-      else
-       timeradd(&entry->SYM_time, &hold_time_neighbor_nw, &entry->time);
+      timeradd(&entry->SYM_time, &hold_time_neighbor, &entry->time);
 
       break;
     default:;
@@ -615,7 +611,7 @@ update_link_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, struct
   */
 
   /* Update hysteresis values */
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     olsr_process_hysteresis(entry);
 
   /* update neighbor status */
index f04bcca..9c4fa1f 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: ifnet.c,v 1.10 2004/09/26 10:47:27 kattemat Exp $
+ * $Id: ifnet.c,v 1.11 2004/10/18 13:13:38 kattemat Exp $
  *
  */
 
@@ -46,6 +46,9 @@
 #include "../net_os.h"
 #include "../socket_parser.h"
 #include "../parser.h"
+#include "../scheduler.h"
+#include "../generate_msg.h"
+#include "../mantissa.h"
 #include <signal.h>
 #include <net/if.h>
 #include <net/if_arp.h>
@@ -92,7 +95,7 @@ set_flag(char *ifname, short flag)
 
 
 void
-check_interface_updates()
+check_interface_updates(void *foo)
 {
   struct if_name *tmp_if;
 
@@ -172,7 +175,7 @@ chk_if_changed(struct if_name *iface)
    */
 
   /* Check broadcast */
-  if ((ipversion == AF_INET) && (!(ifp->int_flags & IFF_BROADCAST))) 
+  if ((olsr_cnf->ip_version == AF_INET) && (!(ifp->int_flags & IFF_BROADCAST))) 
     {
       olsr_printf(1, "\tNo broadcast - removing\n");
       goto remove_interface;
@@ -214,13 +217,13 @@ chk_if_changed(struct if_name *iface)
    */
   
   /* IP version 6 */
-  if(ipversion == AF_INET6)
+  if(olsr_cnf->ip_version == AF_INET6)
     {
       /* Get interface address */
       
-      if(get_ipv6_address(ifr.ifr_name, &tmp_saddr6, ipv6_addrtype) <= 0)
+      if(get_ipv6_address(ifr.ifr_name, &tmp_saddr6, iface->cnf->ipv6_addrtype) <= 0)
        {
-         if(ipv6_addrtype == IPV6_ADDR_SITELOCAL)
+         if(iface->cnf->ipv6_addrtype == IPV6_ADDR_SITELOCAL)
            olsr_printf(1, "\tCould not find site-local IPv6 address for %s\n", ifr.ifr_name);
          else
            olsr_printf(1, "\tCould not find global IPv6 address for %s\n", ifr.ifr_name);
@@ -331,32 +334,34 @@ chk_if_changed(struct if_name *iface)
 
          if_changes = 1;
        }
-            
-      /* Check broadcast address */      
-      if (ioctl(ioctl_s, SIOCGIFBRDADDR, &ifr) < 0) 
+      
+      if(!iface->cnf->ipv4_broadcast.v4)
        {
-         olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get broadaddr)", ifr.ifr_name);
-         goto remove_interface;
-       }
-
+         /* Check broadcast address */      
+         if (ioctl(ioctl_s, SIOCGIFBRDADDR, &ifr) < 0) 
+           {
+             olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get broadaddr)", ifr.ifr_name);
+             goto remove_interface;
+           }
+         
 #ifdef DEBUG
-      olsr_printf(3, "\tBroadcast address:%s\n", sockaddr_to_string(&ifr.ifr_broadaddr));
+         olsr_printf(3, "\tBroadcast address:%s\n", sockaddr_to_string(&ifr.ifr_broadaddr));
 #endif
-      
-      if(memcmp(&((struct sockaddr_in *)&ifp->int_broadaddr)->sin_addr.s_addr,
-               &((struct sockaddr_in *)&ifr.ifr_broadaddr)->sin_addr.s_addr, 
-               ipsize) != 0)
-       {
-
-         /* New address */
-         olsr_printf(1, "IPv4 broadcast changed for %s\n", ifr.ifr_name);
-         olsr_printf(1, "\tOld:%s\n", sockaddr_to_string(&ifp->int_broadaddr));
-         olsr_printf(1, "\tNew:%s\n", sockaddr_to_string(&ifr.ifr_broadaddr));
-
-         ifp->int_broadaddr = ifr.ifr_broadaddr;
-         if_changes = 1;
-       }            
-      
+         
+         if(memcmp(&((struct sockaddr_in *)&ifp->int_broadaddr)->sin_addr.s_addr,
+                   &((struct sockaddr_in *)&ifr.ifr_broadaddr)->sin_addr.s_addr, 
+                   ipsize) != 0)
+           {
+             
+             /* New address */
+             olsr_printf(1, "IPv4 broadcast changed for %s\n", ifr.ifr_name);
+             olsr_printf(1, "\tOld:%s\n", sockaddr_to_string(&ifp->int_broadaddr));
+             olsr_printf(1, "\tNew:%s\n", sockaddr_to_string(&ifr.ifr_broadaddr));
+             
+             ifp->int_broadaddr = ifr.ifr_broadaddr;
+             if_changes = 1;
+           }            
+       }
     }
 
   if(if_changes)
@@ -426,6 +431,33 @@ chk_if_changed(struct if_name *iface)
 
   nbinterf--;
 
+
+  /*
+   * Deregister scheduled functions 
+   */
+  olsr_remove_scheduler_event(&generate_hello, 
+                             ifp, 
+                             iface->cnf->hello_params.emission_interval, 
+                             0, 
+                             NULL);
+  olsr_remove_scheduler_event(&generate_tc, 
+                             ifp, 
+                             iface->cnf->tc_params.emission_interval,
+                             0, 
+                             NULL);
+  olsr_remove_scheduler_event(&generate_mid, 
+                             ifp, 
+                             iface->cnf->mid_params.emission_interval,
+                             0, 
+                             NULL);
+  olsr_remove_scheduler_event(&generate_hna, 
+                             ifp, 
+                             iface->cnf->hna_params.emission_interval,
+                             0, 
+                             NULL);
+
+
+
   iface->configured = 0;
   iface->interf = NULL;
   /* Close olsr socket */
@@ -435,7 +467,7 @@ chk_if_changed(struct if_name *iface)
   free(ifp->int_name);
   free(ifp);
 
-  if((nbinterf == 0) && (!allow_no_int))
+  if((nbinterf == 0) && (!olsr_cnf->allow_no_interfaces))
     {
       olsr_printf(1, "No more active interfaces - exiting.\n");
       olsr_syslog(OLSR_LOG_INFO, "No more active interfaces - exiting.\n");
@@ -487,7 +519,7 @@ chk_if_up(struct if_name *iface, int debuglvl)
     }
 
   /* Check broadcast */
-  if ((ipversion == AF_INET) && (!(ifs.int_flags & IFF_BROADCAST))) 
+  if ((olsr_cnf->ip_version == AF_INET) && (!(ifs.int_flags & IFF_BROADCAST))) 
     {
       olsr_printf(debuglvl, "\tNo broadcast - skipping\n");
       return 0;
@@ -514,13 +546,13 @@ chk_if_up(struct if_name *iface, int debuglvl)
 
   
   /* IP version 6 */
-  if(ipversion == AF_INET6)
+  if(olsr_cnf->ip_version == AF_INET6)
     {
       /* Get interface address */
       
-      if(get_ipv6_address(ifr.ifr_name, &ifs.int6_addr, ipv6_addrtype) <= 0)
+      if(get_ipv6_address(ifr.ifr_name, &ifs.int6_addr, iface->cnf->ipv6_addrtype) <= 0)
        {
-         if(ipv6_addrtype == IPV6_ADDR_SITELOCAL)
+         if(iface->cnf->ipv6_addrtype == IPV6_ADDR_SITELOCAL)
            olsr_printf(debuglvl, "\tCould not find site-local IPv6 address for %s\n", ifr.ifr_name);
          else
            olsr_printf(debuglvl, "\tCould not find global IPv6 address for %s\n", ifr.ifr_name);
@@ -530,14 +562,8 @@ chk_if_up(struct if_name *iface, int debuglvl)
       
       olsr_printf(debuglvl, "\tAddress: %s\n", ip6_to_string(&ifs.int6_addr.sin6_addr));
       
-      
-      /* Set default multicast address */
-      if(inet_pton(AF_INET6, ipv6_mult, &ifs.int6_multaddr.sin6_addr) < 0)
-       {
-         perror("Convert multicastaddr");
-         return 0;
-       }
-         
+      /* Multicast */
+      ifs.int6_multaddr.sin6_addr = (iface->cnf->ipv6_addrtype == 1) ? iface->cnf->ipv6_multi_site.v6 :iface->cnf->ipv6_multi_site.v6;
       /* Set address family */
       ifs.int6_multaddr.sin6_family = AF_INET6;
       /* Set port */
@@ -562,28 +588,38 @@ chk_if_up(struct if_name *iface, int debuglvl)
       
       if (ioctl(ioctl_s, SIOCGIFNETMASK, &ifr) < 0) 
        {
-         olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get broadaddr)", ifr.ifr_name);
+         olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get netmask)", ifr.ifr_name);
          return 0;
        }
       
       ifs.int_netmask = ifr.ifr_netmask;
       
       /* Find broadcast address */
-      
-      if (ioctl(ioctl_s, SIOCGIFBRDADDR, &ifr) < 0) 
+      if(iface->cnf->ipv4_broadcast.v4)
        {
-         olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get broadaddr)", ifr.ifr_name);
-         return 0;
+         /* Specified broadcast */
+         memset(&ifs.int_broadaddr, 0, sizeof(struct sockaddr));
+         memcpy(&((struct sockaddr_in *)&ifs.int_broadaddr)->sin_addr.s_addr, 
+                &iface->cnf->ipv4_broadcast.v4, 
+                sizeof(olsr_u32_t));
+       }
+      else
+       {
+         /* Autodetect */
+         if (ioctl(ioctl_s, SIOCGIFBRDADDR, &ifr) < 0) 
+           {
+             olsr_syslog(OLSR_LOG_ERR, "%s: ioctl (get broadaddr)", ifr.ifr_name);
+             return 0;
+           }
+         
+         ifs.int_broadaddr = ifr.ifr_broadaddr;
        }
-      
-      ifs.int_broadaddr = ifr.ifr_broadaddr;
-      
       
       /* Deactivate IP spoof filter */
-      deactivate_spoof(ifr.ifr_name, nbinterf, ipversion);
+      deactivate_spoof(ifr.ifr_name, nbinterf, olsr_cnf->ip_version);
       
       /* Disable ICMP redirects */
-      disable_redirects(ifr.ifr_name, nbinterf, ipversion);
+      disable_redirects(ifr.ifr_name, nbinterf, olsr_cnf->ip_version);
       
     }
   
@@ -613,7 +649,7 @@ chk_if_up(struct if_name *iface, int debuglvl)
   olsr_syslog(OLSR_LOG_INFO, "Adding interface %s\n", iface->name);
   olsr_printf(1, "\tInterface %s set up for use with index %d\n", iface->name, ifs.if_nr);
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       olsr_printf(1, "\tAddress:%s\n", sockaddr_to_string(&ifs.int_addr));
       olsr_printf(1, "\tNetmask:%s\n", sockaddr_to_string(&ifs.int_netmask));
@@ -641,7 +677,7 @@ chk_if_up(struct if_name *iface, int debuglvl)
   ifp->int_next = ifnet;
   ifnet = ifp;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       ifp->ip_addr.v4 = ((struct sockaddr_in *)&ifp->int_addr)->sin_addr.s_addr;
@@ -721,6 +757,46 @@ chk_if_up(struct if_name *iface, int debuglvl)
       olsr_syslog(OLSR_LOG_INFO, "New main address: %s\n", olsr_ip_to_string(&main_addr));
     }
   
+  /*
+   * Register scheduled functions 
+   */
+  olsr_register_scheduler_event(&generate_hello, 
+                               ifp, 
+                               iface->cnf->hello_params.emission_interval, 
+                               0, 
+                               NULL);
+  olsr_register_scheduler_event(&generate_tc, 
+                               ifp, 
+                               iface->cnf->tc_params.emission_interval,
+                               0, 
+                               NULL);
+  olsr_register_scheduler_event(&generate_mid, 
+                               ifp, 
+                               iface->cnf->mid_params.emission_interval,
+                               0, 
+                               NULL);
+  olsr_register_scheduler_event(&generate_hna, 
+                               ifp, 
+                               iface->cnf->hna_params.emission_interval,
+                               0, 
+                               NULL);
+
+  /* Recalculate max jitter */
+
+  if((max_jitter == 0) || ((iface->cnf->hello_params.emission_interval / 4) < max_jitter))
+    max_jitter = iface->cnf->hello_params.emission_interval / 4;
+
+  /* Recalculate max topology hold time */
+  if(max_tc_vtime < iface->cnf->tc_params.emission_interval)
+    max_tc_vtime = iface->cnf->tc_params.emission_interval;
+
+  ifp->hello_etime = double_to_me(iface->cnf->hello_params.emission_interval);
+  ifp->valtimes.hello = double_to_me(iface->cnf->hello_params.validity_time);
+  ifp->valtimes.tc = double_to_me(iface->cnf->tc_params.validity_time);
+  ifp->valtimes.mid = double_to_me(iface->cnf->mid_params.validity_time);
+  ifp->valtimes.hna = double_to_me(iface->cnf->hna_params.validity_time);
+
+
   /*
    *Call possible ifchange functions registered by plugins  
    */
index c5820dd..8d3f9a9 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: link_layer.c,v 1.5 2004/09/21 19:08:58 kattemat Exp $
+ * $Id: link_layer.c,v 1.6 2004/10/18 13:13:38 kattemat Exp $
  *
  */
 
@@ -87,7 +87,7 @@ init_link_layer_notification()
        clear_spy_list(ifd->int_name);
     }
 
-  olsr_register_scheduler_event(&poll_link_layer, poll_int, 0, NULL);
+  olsr_register_scheduler_event(&poll_link_layer, NULL, poll_int, 0, NULL);
 
   return;
 }
@@ -287,7 +287,7 @@ ping_thread(void *_ip)
 }
 
 void
-poll_link_layer()
+poll_link_layer(void *foo)
 {
   struct iwreq         wrq;
   char                 buffer[(sizeof(struct iw_quality) +
index 26edce1..22598f0 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net.c,v 1.7 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: net.c,v 1.8 2004/10/18 13:13:38 kattemat Exp $
  *
  */
 
@@ -500,3 +500,47 @@ getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
   return (sock);
 }
 
+
+/*
+ *From net-tools lib/interface.c
+ *
+ */
+
+int
+get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
+{
+  char addr6[40], devname[IFNAMSIZ];
+  char addr6p[8][5];
+  int plen, scope, dad_status, if_idx;
+  FILE *f;
+  struct sockaddr_in6 tmp_sockaddr6;
+
+  if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) 
+    {
+      while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
+                   addr6p[0], addr6p[1], addr6p[2], addr6p[3],
+                   addr6p[4], addr6p[5], addr6p[6], addr6p[7],
+                   &if_idx, &plen, &scope, &dad_status, devname) != EOF) 
+       {
+         if (!strcmp(devname, ifname)) 
+           {
+             sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",
+                     addr6p[0], addr6p[1], addr6p[2], addr6p[3],
+                     addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
+             olsr_printf(2, "\tinet6 addr: %s\n", addr6);
+             olsr_printf(2, "\tScope:");
+             if(scope == scope_in)
+               {
+                 olsr_printf(3, "IPv6 addr:\n");
+                 inet_pton(AF_INET6,addr6,&tmp_sockaddr6);
+                 memcpy(&saddr6->sin6_addr, &tmp_sockaddr6, sizeof(struct in6_addr));    
+                 fclose(f);
+                 return 1;
+               }
+           }
+       }
+      fclose(f);
+    }
+  
+  return 0;
+}
index af35a07..8a7aa50 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: local_hna_set.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: local_hna_set.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -32,14 +32,6 @@ olsr_init_local_hna_set()
 {
 
   inet_gw = 0;
-  if(ipversion == AF_INET)
-    {
-      netmask_size = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      netmask_size = sizeof(olsr_u16_t);
-    }
 
   local_hna4_set.next = &local_hna4_set;
   local_hna4_set.prev = &local_hna4_set;
index 9491455..c709be6 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.c,v 1.13 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: main.c,v 1.14 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -72,12 +72,12 @@ set_default_values(void);
 int
 main(int argc, char *argv[])
 {
-  //struct interface *ifp;
-  struct in_addr in;
 
   /* The thread for the scheduler */
   pthread_t thread;
 
+  struct if_config_options *default_ifcnf;
+
   struct stat statbuf;
   char conf_file_name[FILENAME_MAX];
   
@@ -170,7 +170,7 @@ main(int argc, char *argv[])
 
       if (stat(argv[1], &statbuf) < 0)
        {
-         fprintf(stderr, "Could not finc specified config file %s!\n%s\n\n", argv[1], strerror(errno));
+         fprintf(stderr, "Could not find specified config file %s!\n%s\n\n", argv[1], strerror(errno));
          olsr_exit(__func__, EXIT_FAILURE);
        }
                 
@@ -183,8 +183,20 @@ main(int argc, char *argv[])
    * Reading configfile options prior to processing commandline options
    */
 
-  read_config_file(conf_file_name);
+  if(read_config_file(conf_file_name) < 0)
+    {
+      fprintf(stderr, "Error parsing configig file %s!\n", conf_file_name);
+      exit(EXIT_FAILURE);
+    }
+
+  default_ifcnf = get_default_ifcnf(olsr_cnf);
   
+  if(default_ifcnf == NULL)
+    {
+      fprintf(stderr, "No default ifconfig found!\n");
+      exit(EXIT_FAILURE);
+    }
+
   /*
    * Process olsrd options.
    */
@@ -217,12 +229,12 @@ main(int argc, char *argv[])
        */
       if (strcmp(*argv, "-ipv6") == 0) 
        {
-         ipversion = AF_INET6;
+         olsr_cnf->ip_version = AF_INET6;
          argv++, argc--;
          continue;
        }
 
-
+#if 0
       /*
        *Broadcast address
        */
@@ -240,15 +252,13 @@ main(int argc, char *argv[])
              printf("Invalid broadcast address! %s\nSkipping it!\n", *argv);
              continue;
            }
-
-         bcast_set = 1;
                 
          memcpy(&bcastaddr.sin_addr, &in.s_addr, sizeof(olsr_u32_t));
 
 
          continue;
        }
-
+#endif
 
       /*
        * Enable additional debugging information to be logged.
@@ -256,7 +266,7 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-d") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%d", &debug_level);
+         sscanf(*argv,"%d", &olsr_cnf->debug_level);
          argv++, argc--;
          continue;
        }
@@ -269,20 +279,19 @@ main(int argc, char *argv[])
        */
       if (strcmp(*argv, "-i") == 0) 
        {
-         option_i = 1;
          argv++, argc--;
-         queue_if(*argv);
+         queue_if(*argv, default_ifcnf);
          argv++, argc--;
 
          while((argc) && (**argv != '-'))
            {
-             queue_if(*argv);
+             queue_if(*argv, default_ifcnf);
              argv++; argc--;
            }
 
          continue;
        }
-               
+
       /*
        * Set the hello interval to be used by olsrd.
        * 
@@ -290,19 +299,8 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-hint") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%f",&hello_int);
-         argv++, argc--;
-         continue;
-       }
-
-      /*
-       * Set the hello interval to be used by olsrd.
-       * on nonwireless interfaces
-       */
-      if (strcmp(*argv, "-hintn") == 0) 
-       {
-         argv++, argc--;
-         sscanf(*argv,"%f",&hello_int_nw);
+         sscanf(*argv,"%f", &default_ifcnf->hello_params.emission_interval);
+          default_ifcnf->hello_params.validity_time = default_ifcnf->hello_params.emission_interval * 3;
          argv++, argc--;
          continue;
        }
@@ -314,7 +312,8 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-hnaint") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%f", &hna_int);
+         sscanf(*argv,"%f", &default_ifcnf->hna_params.emission_interval);
+          default_ifcnf->hna_params.validity_time = default_ifcnf->hna_params.emission_interval * 3;
          argv++, argc--;
          continue;
        }
@@ -326,7 +325,8 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-midint") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%f", &mid_int);
+         sscanf(*argv,"%f", &default_ifcnf->mid_params.emission_interval);
+          default_ifcnf->mid_params.validity_time = default_ifcnf->mid_params.emission_interval * 3;
          argv++, argc--;
          continue;
        }
@@ -338,7 +338,8 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-tcint") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%f",&tc_int);
+         sscanf(*argv,"%f", &default_ifcnf->tc_params.emission_interval);
+          default_ifcnf->tc_params.validity_time = default_ifcnf->tc_params.emission_interval * 3;
          argv++, argc--;
          continue;
        }
@@ -350,7 +351,7 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-tos") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%d",(int *)&tos);
+         sscanf(*argv,"%d",(int *)&olsr_cnf->tos);
          argv++, argc--;
          continue;
        }
@@ -362,43 +363,11 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-T") == 0) 
        {
          argv++, argc--;
-         sscanf(*argv,"%f",&polling_int);
-         argv++, argc--;
-         continue;
-       }
-
-      /*
-       * Set the vtime miltiplier
-       */
-      if (strcmp(*argv, "-hhold") == 0) 
-       {
-         argv++, argc--;
-         sscanf(*argv,"%d",&neighbor_timeout_mult);
+         sscanf(*argv,"%f",&olsr_cnf->pollrate);
          argv++, argc--;
          continue;
        }
 
-      /*
-       * Set the vtime miltiplier for non-WLAN cards
-       */
-      if (strcmp(*argv, "-nhhold") == 0) 
-       {
-         argv++, argc--;
-         sscanf(*argv,"%d",&neighbor_timeout_mult_nw);
-         argv++, argc--;
-         continue;
-       }
-
-      /*
-       * Set the TC vtime multiplier
-       */
-      if (strcmp(*argv, "-thold") == 0) 
-       {
-         argv++, argc--;
-         sscanf(*argv,"%d",&topology_timeout_mult);
-         argv++, argc--;
-         continue;
-       }
 
       /*
        * Should we display the contents of packages beeing sent?
@@ -427,7 +396,7 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-ipc") == 0) 
        {
          argv++, argc--;
-         use_ipc = 1;
+         olsr_cnf->open_ipc = 1;
          continue;
        }
 
@@ -452,7 +421,7 @@ main(int argc, char *argv[])
 
          continue;
        }
-
+#if 0
 
       /*
        * IPv6 multicast addr
@@ -466,7 +435,7 @@ main(int argc, char *argv[])
 
          continue;
        }
-
+#endif
 
       /*
        * Should we display the contents of packages beeing sent?
@@ -487,7 +456,7 @@ main(int argc, char *argv[])
   /*
    *Interfaces need to be specified
    */
-  if(!option_i)
+  if(if_names == NULL)
     {
       fprintf(stderr, "OLSRD: no interfaces specified!\nuse the -i switch to specify interface(s)\nor set interface(s) in the configuration file!\n");
       print_usage();
@@ -497,7 +466,7 @@ main(int argc, char *argv[])
   /*
    *socket for icotl calls
    */
-  if ((ioctl_s = socket(ipversion, SOCK_DGRAM, 0)) < 0) 
+  if ((ioctl_s = socket(olsr_cnf->ip_version, SOCK_DGRAM, 0)) < 0) 
     {
       olsr_syslog(OLSR_LOG_ERR, "ioctl socket: %m");
       close(ioctl_s);
@@ -506,20 +475,17 @@ main(int argc, char *argv[])
 
 
   /* Type of service */
-  precedence = IPTOS_PREC(tos);
-  tos_bits = IPTOS_TOS(tos);
+  precedence = IPTOS_PREC(olsr_cnf->tos);
+  tos_bits = IPTOS_TOS(olsr_cnf->tos);
 
 
   /*
    *enable ip forwarding on host
    */
-  enable_ip_forwarding(ipversion);
-
-
-
+  enable_ip_forwarding(olsr_cnf->ip_version);
 
   /* Initialize scheduler MUST HAPPEN BEFORE REGISTERING ANY FUNCTIONS! */
-  init_scheduler(polling_int);
+  init_scheduler(olsr_cnf->pollrate);
 
   /* Initialize parser */
   olsr_init_parser();
@@ -530,61 +496,27 @@ main(int argc, char *argv[])
   /* Initialize dynamic willingness calculation */
   olsr_init_willingness();
 
-
-  /* Initialize values for emission data 
-   * This also initiates message generation
-   */
-  olsr_set_hello_interval(hello_int);
-  olsr_set_hello_nw_interval(hello_int_nw);
-  olsr_set_tc_interval(tc_int);
-  olsr_set_mid_interval(mid_int);
-  olsr_set_hna_interval(hna_int);
-
-  /* Print tables to stdout */
-  if(debug_level > 0)
-    olsr_register_scheduler_event(&generate_tabledisplay, hello_int, 0, NULL);
-
-
   /* printout settings */
-  olsr_printf(1, "\n\
-hello interval = %0.2f       hello int nonwireless = %0.2f \n\
-tc interval = %0.2f          polling interval = %0.2f \n\
-neighbor_hold_time = %0.2f   neighbor_hold_time_nw = %0.2f \n\
-topology_hold_time = %0.2f  tos setting = %d \n\
-hna_interval = %0.2f         mid_interval = %0.2f\n\
-tc_redunadancy = %d          mpr coverage = %d\n", 
-             hello_int, hello_int_nw, \
-             tc_int, polling_int, \
-             neighbor_hold_time, neighbor_hold_time_nw, topology_hold_time, \
-             tos, hna_int, mid_int, \
-             tc_redundancy, mpr_coverage);
+  olsr_printf(1, "\npolling interval = %0.2f \ntos setting = %d \ntc_redunadancy = %d\nmpr coverage = %d\n", olsr_cnf->pollrate, olsr_cnf->tos, olsr_cnf->tc_redundancy, olsr_cnf->mpr_coverage);
       
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       olsr_printf(1, "hysteresis scaling factor = %0.2f\nhysteresis threshold high = %0.2f\nhysteresis threshold low  = %0.2f\n\n",
-                 hyst_scaling,
-                 hyst_threshold_high,
-                 hyst_threshold_low);
+                 olsr_cnf->hysteresis_param.scaling,
+                 olsr_cnf->hysteresis_param.thr_high,
+                 olsr_cnf->hysteresis_param.thr_low);
 
-      if(hyst_threshold_high <= hyst_threshold_low)
+      if(olsr_cnf->hysteresis_param.thr_high <= olsr_cnf->hysteresis_param.thr_low)
        {
          printf("Hysteresis threshold high lower than threshold low!!\nEdit the configuration file to fix this!\n\n");
          olsr_exit(__func__, EXIT_FAILURE);
        }
     }
 
-  if(ipversion == AF_INET)
-    {
-      if(bcast_set)
-       olsr_printf(2, "Using %s broadcast\n", olsr_ip_to_string((union olsr_ip_addr *) &bcastaddr.sin_addr));
-      else
-       olsr_printf(2, "Using broadcastaddresses fetched from interfaces\n");
-    }
-
   /*
    *Set up willingness/APM
    */
-  if(!willingness_set)
+  if(olsr_cnf->willingness_auto)
     {
       if(apm_init() < 0)
        {
@@ -592,39 +524,25 @@ tc_redunadancy = %d          mpr coverage = %d\n",
 
          olsr_syslog(OLSR_LOG_ERR, "Could not read APM info - setting default willingness(%d)\n", WILL_DEFAULT);
 
-         willingness_set = 1;
-         my_willingness = WILL_DEFAULT;
+         olsr_cnf->willingness_auto = 0;
+         olsr_cnf->willingness = WILL_DEFAULT;
        }
       else
        {
-         my_willingness = olsr_calculate_willingness();
+         olsr_cnf->willingness = olsr_calculate_willingness();
 
-         olsr_printf(1, "Willingness set to %d - next update in %.1f secs\n", my_willingness, will_int);
+         olsr_printf(1, "Willingness set to %d - next update in %.1f secs\n", olsr_cnf->willingness, will_int);
        }
     }
 
   /**
    *Set ipsize and minimum packetsize
    */
-  if(ipversion == AF_INET6)
+  if(olsr_cnf->ip_version == AF_INET6)
     {
       olsr_printf(1, "Using IP version 6\n");
       ipsize = sizeof(struct in6_addr);
 
-      /* Set multicast address */
-      if(ipv6_addrtype == IPV6_ADDR_SITELOCAL)
-       {
-         /* Site local */
-         strncpy(ipv6_mult, ipv6_mult_site, 50);
-       }
-      else
-       {
-         /* Global */
-         strncpy(ipv6_mult, ipv6_mult_global, 50);
-       }
-
-      olsr_printf(1, "Using multicast address %s\n", ipv6_mult);
-
       minsize = (int)sizeof(olsr_u8_t) * 7; /* Minimum packetsize IPv6 */
     }
   else
@@ -640,7 +558,7 @@ tc_redunadancy = %d          mpr coverage = %d\n",
 
   if(!ifinit())
     {
-      if(allow_no_int)
+      if(olsr_cnf->allow_no_interfaces)
        {
          fprintf(stderr, "No interfaces detected! This might be intentional, but it also might mean that your configuration is fubar.\nI will continue after 5 seconds...\n");
          sleep(5);
@@ -653,12 +571,27 @@ tc_redunadancy = %d          mpr coverage = %d\n",
     }
 
 
+  /* Initialize values for emission data 
+   * This also initiates message generation
+   */
+  /*
+  olsr_set_hello_interval(hello_int);
+  olsr_set_hello_nw_interval(hello_int_nw);
+  olsr_set_tc_interval(tc_int);
+  olsr_set_mid_interval(mid_int);
+  olsr_set_hna_interval(hna_int);
+  */
+  /* Print tables to stdout */
+  if(olsr_cnf->debug_level > 0)
+    olsr_register_scheduler_event(&generate_tabledisplay, NULL, HELLO_INTERVAL, 0, NULL);
+  
+  
   gettimeofday(&now, NULL);
 
 
   /* Initialize the IPC socket */
 
-  if(use_ipc)
+  if(olsr_cnf->open_ipc)
       ipc_init();
 
 #ifndef WIN32
@@ -684,7 +617,7 @@ tc_redunadancy = %d          mpr coverage = %d\n",
 
   /* daemon mode */
 #ifndef WIN32
-  if (debug_level == 0)
+  if (olsr_cnf->debug_level == 0)
     {
       printf("%s detattching from the current process...\n", SOFTWARE_VERSION);
       if (fork() != 0)
@@ -749,7 +682,7 @@ olsr_shutdown(int signal)
   olsr_printf(1, "Closing sockets...\n");
 
   /* front-end IPC socket */
-  if(use_ipc)
+  if(olsr_cnf->open_ipc)
     shutdown_ipc();
 
   /* OLSR sockets */
@@ -760,7 +693,7 @@ olsr_shutdown(int signal)
   olsr_close_plugins();
 
   /* Reset network settings */
-  restore_settings(ipversion);
+  restore_settings(olsr_cnf->ip_version);
 
   /* ioctl socket */
   close(ioctl_s);
@@ -776,7 +709,6 @@ olsr_shutdown(int signal)
 
 
 
-
 /**
  *Sets the default values of variables at startup
  */
@@ -786,67 +718,25 @@ set_default_values()
   memset(&main_addr, 0, sizeof(union olsr_ip_addr));
   memset(&null_addr6, 0, sizeof (union olsr_ip_addr));
 
-  allow_no_int = 1;
-
   exit_value = EXIT_SUCCESS; 
   /* If the application exits by signal it is concidered success,
    * if not, exit_value is set by the function calling olsr_exit.
    */
 
-  tos = 16;
-
   if_names = NULL;
 
+  max_jitter = 0;
+  max_tc_vtime = 0;
+  dup_hold_time = DUP_HOLD_TIME;
+
   sending_tc = 0;
 
   queued_ifs = 0;
 
-  mpr_coverage = MPR_COVERAGE;
-
-  ipv6_addrtype = IPV6_ADDR_SITELOCAL;
-
-  /* Default multicastaddresses */
-  strncpy(ipv6_mult_site, OLSR_IPV6_MCAST_SITE_LOCAL, strlen(OLSR_IPV6_MCAST_SITE_LOCAL));
-  strncpy(ipv6_mult_global, OLSR_IPV6_MCAST_GLOBAL, strlen(OLSR_IPV6_MCAST_GLOBAL));
-
-  /* EMISSION/HOLD INTERVALS */
-
-  hello_int = HELLO_INTERVAL;
-  hello_int_nw = HELLO_INTERVAL;
-  tc_int = TC_INTERVAL;
-  hna_int = 2 * TC_INTERVAL;
-  polling_int = 0.1;
-  mid_int = MID_INTERVAL;
   will_int = 10 * HELLO_INTERVAL; /* Willingness update interval */
 
-  neighbor_timeout_mult = 3;
-  topology_timeout_mult = 3;
-  neighbor_timeout_mult_nw = 3;
-  mid_timeout_mult = 3;
-  hna_timeout_mult = 3;
-
-  topology_hold_time = TOP_HOLD_TIME;
-  neighbor_hold_time = NEIGHB_HOLD_TIME;
-  neighbor_hold_time_nw = NEIGHB_HOLD_TIME;
-  mid_hold_time = MID_HOLD_TIME;
-  hna_hold_time = 2 * (3 * TC_INTERVAL);
-  dup_hold_time = DUP_HOLD_TIME;
-
-  /* TC redundancy */
-  tc_redundancy = TC_REDUNDANCY;
-
-  /* Hysteresis */
-  use_hysteresis = 1;
-  hyst_scaling = HYST_SCALING;
-  hyst_threshold_low = HYST_THRESHOLD_LOW;
-  hyst_threshold_high = HYST_THRESHOLD_HIGH;
-
-  use_ipc = 0;
   llinfo = 0;
-  bcast_set = 0;
   del_gws = 0;
-  /* DEBUG ON BY DEFAULT */
-  debug_level = 1;
 
 #ifndef WIN32
   /* Get main thread ID */
@@ -856,13 +746,6 @@ set_default_values()
   /* local HNA set must be initialized before reading options */
   olsr_init_local_hna_set();
 
-  /*
-   * set fixed willingness off by default
-   */
-  willingness_set = 0;
-
-  ipv6_mult[0] = 0;
-
   /* Gateway tunneling */
   use_tunnel = 0;
   inet_tnl_added = 0;
@@ -871,8 +754,6 @@ set_default_values()
   /* Display packet content */
   disp_pack_in = 0;
   disp_pack_out = 0;
-
-  ipversion = AF_INET;
 }
 
 
@@ -888,10 +769,6 @@ print_usage()
   fprintf(stderr, "  [-bcast <broadcastaddr>] [-ipc] [-dispin] [-dispout] [-delgw]\n");
   fprintf(stderr, "  [-midint <mid interval value (secs)>] [-hnaint <hna interval value (secs)>]\n");
   fprintf(stderr, "  [-hint <hello interval value (secs)>] [-tcint <tc interval value (secs)>]\n");
-  fprintf(stderr, "  [-hhold <HELLO validity time as a multiplier of the HELLO interval>]\n");
-  fprintf(stderr, "  [-nhhold <HELLO validity time on non-wireless interfaces>]\n");
-  fprintf(stderr, "  [-thold <TC validity time as a multiplier of the TC interval>]\n");
-  fprintf(stderr, "  [-tos value (int)] [-nhint <hello interval value (secs) for non-WLAN>]\n");
-  fprintf(stderr, "  [-T <Polling Rate (secs)>]\n"); 
+  fprintf(stderr, "  [-tos value (int)] [-T <Polling Rate (secs)>]\n"); 
 
 }
index 3e3bbcb..a1b8b0e 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.h,v 1.7 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: main.h,v 1.8 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -41,20 +41,13 @@ struct sockaddr_in6 null_addr6;      /* Address used as Originator Address IPv6
 int     precedence;
 int     tos_bits;
 
-int     option_i = 0;
 int    bufspace = 127*1024;    /* max. input buffer size to request */
 
 /* ID of the timer thread */
 pthread_t main_thread;
 
-/* Broadcast 255.255.255.255 */
-int bcast_set;
-struct sockaddr_in bcastaddr;
-
 int del_gws;
 
-olsr_u8_t tos;
-
 int minsize;
 
 
index c7a845c..502f32e 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: mid_set.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: mid_set.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -46,7 +46,7 @@ olsr_init_mid_set()
   /* Since the holdingtime is assumed to be rather large for 
    * MID entries, the timeoutfunction is only ran once every second
    */
-  olsr_register_scheduler_event(&olsr_time_out_mid_set, 1, 0, NULL);
+  olsr_register_scheduler_event(&olsr_time_out_mid_set, NULL, 1, 0, NULL);
 
   for(index=0;index<HASHSIZE;index++)
     {
@@ -328,7 +328,7 @@ olsr_update_mid_table(union olsr_ip_addr *adr, float vtime)
  *@return nada
  */
 void
-olsr_time_out_mid_set()
+olsr_time_out_mid_set(void *foo)
 {
   struct mid_entry *tmp_list;
   struct mid_entry *entry_to_delete;
index a1ac67a..943ab5b 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: mid_set.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: mid_set.h,v 1.7 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -67,7 +67,7 @@ void
 olsr_print_mid_set(void);
 
 void
-olsr_time_out_mid_set(void);
+olsr_time_out_mid_set(void *);
 
 int
 olsr_update_mid_table(union olsr_ip_addr *, float);
index 4857b51..de0e65f 100644 (file)
--- a/src/mpr.c
+++ b/src/mpr.c
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: mpr.c,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: mpr.c,v 1.7 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -171,7 +171,7 @@ olsr_chosen_mpr(struct neighbor_entry *one_hop_neighbor, olsr_u16_t *two_hop_cov
        }
 
       //      if(!second_hop_entries->neighbor_2->neighbor_2_state)
-      //if(second_hop_entries->neighbor_2->mpr_covered_count < mpr_coverage)
+      //if(second_hop_entries->neighbor_2->mpr_covered_count < olsr_cnf->mpr_coverage)
       //{
          /*
            Now the neighbor is covered by this mpr
@@ -181,7 +181,7 @@ olsr_chosen_mpr(struct neighbor_entry *one_hop_neighbor, olsr_u16_t *two_hop_cov
 
          //olsr_printf(1, "[%s](%x) has coverage %d\n", olsr_ip_to_string(&second_hop_entries->neighbor_2->neighbor_2_addr), second_hop_entries->neighbor_2, second_hop_entries->neighbor_2->mpr_covered_count);
 
-         if(second_hop_entries->neighbor_2->mpr_covered_count >= mpr_coverage)
+         if(second_hop_entries->neighbor_2->mpr_covered_count >= olsr_cnf->mpr_coverage)
             count++;
                      
          while(the_one_hop_list != &second_hop_entries->neighbor_2->neighbor_2_nblist)
@@ -189,7 +189,7 @@ olsr_chosen_mpr(struct neighbor_entry *one_hop_neighbor, olsr_u16_t *two_hop_cov
              
              if((the_one_hop_list->neighbor->status == SYM))
                {
-                 if(second_hop_entries->neighbor_2->mpr_covered_count >= mpr_coverage)
+                 if(second_hop_entries->neighbor_2->mpr_covered_count >= olsr_cnf->mpr_coverage)
                    {
                      the_one_hop_list->neighbor->neighbor_2_nocov--;
                    }
@@ -524,7 +524,7 @@ olsr_calculate_mpr()
   if(olsr_check_mpr_changes())
     {
       olsr_printf(3, "CHANGES IN MPR SET\n");
-      if(tc_redundancy > 0)
+      if(olsr_cnf->tc_redundancy > 0)
        changes = UP;
     }
 
@@ -582,7 +582,7 @@ olsr_optimize_mpr_set()
                      
                      //printf("\t[%s] coverage %d\n", olsr_ip_to_string(&two_hop_list->neighbor_2->neighbor_2_addr), two_hop_list->neighbor_2->mpr_covered_count);
                      /* Do not remove if we find a entry which need this MPR */
-                     if(two_hop_list->neighbor_2->mpr_covered_count <= mpr_coverage)
+                     if(two_hop_list->neighbor_2->mpr_covered_count <= olsr_cnf->mpr_coverage)
                        remove = 0;
                      
                    }
index d8ebe89..663397d 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: neighbor_table.c,v 1.6 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: neighbor_table.c,v 1.7 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -343,7 +343,7 @@ update_neighbor_status(struct neighbor_entry *entry, int link)
   
          changes_neighborhood = UP;
          changes_topology = UP;
-         if(tc_redundancy > 1)
+         if(olsr_cnf->tc_redundancy > 1)
            changes = UP;
        }
       entry->status = SYM;
@@ -354,7 +354,7 @@ update_neighbor_status(struct neighbor_entry *entry, int link)
        {
          changes_neighborhood = UP;
          changes_topology = UP;
-         if(tc_redundancy > 1)
+         if(olsr_cnf->tc_redundancy > 1)
            changes = UP;
        }
       /* else N_status is set to NOT_SYM */
index 3053dfa..27ef36d 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net.c,v 1.15 2004/09/28 05:50:06 kattemat Exp $
+ * $Id: net.c,v 1.16 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -223,7 +223,7 @@ net_output(struct interface *ifp)
   /* Set the packetlength */
   outmsg->v4.olsr_packlen = htons(netbufs[ifp->if_nr]->pending);
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       sin = (struct sockaddr_in *)&ifp->int_broadaddr;
@@ -232,10 +232,6 @@ net_output(struct interface *ifp)
       dst = *sin;
       sin = &dst;
 
-      /* Set user defined broadcastaddr */
-      if(bcast_set)
-       memcpy(&dst.sin_addr.s_addr, &bcastaddr.sin_addr, sizeof(olsr_u32_t));
-
       if (sin->sin_port == 0)
        sin->sin_port = olsr_udp_port;
     }
@@ -272,7 +268,7 @@ net_output(struct interface *ifp)
        case(HNA_MESSAGE):printf("\n\tHNA ");break;
        default:printf("\n\tTYPE: %d ", netbufs[ifp->if_nr]->buff[4]); break;
        }
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        printf("to %s size: %d\n\t", ip_to_string((olsr_u32_t *)&sin->sin_addr.s_addr), netbufs[ifp->if_nr]->pending);
       else
        printf("to %s size: %d\n\t", ip6_to_string(&sin6->sin6_addr), netbufs[ifp->if_nr]->pending);
@@ -287,7 +283,7 @@ net_output(struct interface *ifp)
              printf("\n\t");
            }
          x++;
-         if(ipversion == AF_INET)
+         if(olsr_cnf->ip_version == AF_INET)
            printf(" %3i", (u_char) netbufs[ifp->if_nr]->buff[i]);
          else
            printf(" %2x", (u_char) netbufs[ifp->if_nr]->buff[i]);
@@ -301,7 +297,7 @@ net_output(struct interface *ifp)
    *used when building packets.
    */
   
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       if(sendto(ifp->olsr_socket, 
@@ -595,7 +591,7 @@ olsr_ip_to_string(union olsr_ip_addr *addr)
   char *ret;
   struct in_addr in;
   
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       in.s_addr=addr->v4;
       ret = inet_ntoa(in);
index 9237cb6..a496d50 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net_os.h,v 1.1 2004/09/26 10:46:07 kattemat Exp $
+ * $Id: net_os.h,v 1.2 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -61,4 +61,7 @@ getsocket(struct sockaddr *, int, char *);
 int  
 getsocket6(struct sockaddr_in6 *, int, char *);
 
+int
+get_ipv6_address(char *, struct sockaddr_in6 *, int);
+
 #endif
index 3f76418..a7c1c24 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr.c,v 1.13 2004/09/25 21:52:27 kattemat Exp $
+ * $Id: olsr.c,v 1.14 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -320,7 +320,7 @@ olsr_forward_message(union olsr_message *m,
 
 
   /* Treat TTL hopcnt */
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IPv4 */
       m->v4.hopcnt++;
@@ -406,23 +406,23 @@ set_buffer_timer(struct interface *ifn)
 void
 olsr_init_willingness()
 {
-  if(!willingness_set)
-    olsr_register_scheduler_event(&olsr_update_willingness, will_int, will_int, NULL);
+  if(olsr_cnf->willingness_auto)
+    olsr_register_scheduler_event(&olsr_update_willingness, NULL, will_int, will_int, NULL);
 }
 
 void
-olsr_update_willingness()
+olsr_update_willingness(void *foo)
 {
   int tmp_will;
 
-  tmp_will = my_willingness;
+  tmp_will = olsr_cnf->willingness;
 
   /* Re-calculate willingness */
-  my_willingness = olsr_calculate_willingness();
+  olsr_cnf->willingness = olsr_calculate_willingness();
 
-  if(tmp_will != my_willingness)
+  if(tmp_will != olsr_cnf->willingness)
     {
-      olsr_printf(1, "Local willingness updated: old %d new %d\n", tmp_will, my_willingness);
+      olsr_printf(1, "Local willingness updated: old %d new %d\n", tmp_will, olsr_cnf->willingness);
     }
 }
 
@@ -441,8 +441,8 @@ olsr_calculate_willingness()
   struct olsr_apm_info ainfo;
 
   /* If fixed willingness */
-  if(willingness_set)
-    return my_willingness;
+  if(!olsr_cnf->willingness_auto)
+    return olsr_cnf->willingness;
 
 #warning CHANGES IN THE apm INTERFACE(0.4.8)!
 
@@ -522,7 +522,7 @@ olsr_printf(int loglevel, char *format, ...)
 
   va_start(arglist, format);
 
-  if(loglevel <= debug_level)
+  if(loglevel <= olsr_cnf->debug_level)
     {
       vprintf(format, arglist);
     }
index 4f4c6ed..5f24eb6 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr.h,v 1.9 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: olsr.h,v 1.10 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -105,7 +105,7 @@ void
 olsr_init_willingness(void);
 
 void
-olsr_update_willingness(void);
+olsr_update_willingness(void *);
 
 olsr_u8_t
 olsr_calculate_willingness(void);
similarity index 88%
rename from src/cfgparser/olsrd_cfgparser.h
rename to src/olsrd_cfgparser.h
index d61ad6d..a034acf 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_cfgparser.h,v 1.2 2004/10/16 23:17:48 kattemat Exp $
+ * $Id: olsrd_cfgparser.h,v 1.1 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
 #define _OLSRD_CFGPARSER_H
 
 
+#ifndef IPV6_ADDR_SITELOCAL
+#define IPV6_ADDR_SITELOCAL    0x0040U
+#endif
+
 #include "olsr_protocol.h"
 
+#define DEFAULT_IF_CONFIG_NAME "default_ifcfg"
+
 struct olsr_msg_params
 {
   float                    emission_interval;
@@ -91,12 +97,12 @@ struct plugin_entry
 
 struct olsrd_config
 {
-  olsr_u8_t                debug_level;
-  olsr_u8_t                ip_version;
+  int                      debug_level;
+  int                      ip_version;
   olsr_u8_t                allow_no_interfaces;
   olsr_u16_t               tos;
-  olsr_u8_t                auto_willingness;
-  olsr_u8_t                fixed_willingness;
+  olsr_u8_t                willingness_auto;
+  olsr_u8_t                willingness;
   olsr_u8_t                open_ipc;
   olsr_u8_t                use_hysteresis;
   struct hyst_param        hysteresis_param;
@@ -118,6 +124,9 @@ struct olsrd_config
 struct olsrd_config *
 olsrd_parse_cnf(char *);
 
+struct olsrd_config *
+olsrd_get_default_cnf(void);
+
 void
 olsrd_free_cnf(struct olsrd_config *);
 
index a7402e9..aff4de0 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: packet.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: packet.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -58,16 +58,15 @@ olsr_build_hello_packet(struct hello_message *message, struct interface *outif)
 
   /* Set willingness */
 
-  message->willingness = my_willingness;
-  //printf("Willingness: %d\n", my_willingness);
+  message->willingness = olsr_cnf->willingness;
+  //printf("Willingness: %d\n", olsr_cnf->willingness);
 
 
   /* Set TTL */
 
   message->ttl = 1;
   
-  //if(debug_level > 3)
-  //printf("mpr is %d\n",message->mpr_seq_number);
+  //olsr_printf(3, "mpr is %d\n",message->mpr_seq_number);
 
   COPY_IP(&message->source_addr, &main_addr);
 
@@ -319,7 +318,7 @@ olsr_build_tc_packet(struct tc_message *message)
          if(entry->status != SYM)
            continue;
 
-         switch(tc_redundancy)
+         switch(olsr_cnf->tc_redundancy)
            {
            case(2):
              {
@@ -379,7 +378,7 @@ olsr_build_tc_packet(struct tc_message *message)
       if(sending_tc)
        {
          /* Send empty TC */
-         olsr_init_timer((olsr_u32_t) topology_hold_time*1000, &tmp_timer);
+         olsr_init_timer((olsr_u32_t) (max_tc_vtime*3)*1000, &tmp_timer);
          olsr_printf(3, "No more MPR selectors - will send empty TCs\n");
          timeradd(&now, &tmp_timer, &send_empty_tc);
 
index 9d2e11d..9ff6339 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: parser.c,v 1.8 2004/09/22 20:57:50 kattemat Exp $
+ * $Id: parser.c,v 1.9 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -166,7 +166,7 @@ olsr_input(int fd)
          break;
        }
 
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 sender address */
          COPY_IP(&from_addr, &((struct sockaddr_in *)&from)->sin_addr.s_addr);
@@ -185,9 +185,9 @@ olsr_input(int fd)
       olsr_printf(5, "Recieved a packet from %s\n", olsr_ip_to_string((union olsr_ip_addr *)&((struct sockaddr_in *)&from)->sin_addr.s_addr));
 #endif
       //printf("\nCC: %d FROMLEN: %d\n\n", cc, fromlen);
-      if ((ipversion == AF_INET) && (fromlen != sizeof (struct sockaddr_in)))
+      if ((olsr_cnf->ip_version == AF_INET) && (fromlen != sizeof (struct sockaddr_in)))
        break;
-      else if ((ipversion == AF_INET6) && (fromlen != sizeof (struct sockaddr_in6)))
+      else if ((olsr_cnf->ip_version == AF_INET6) && (fromlen != sizeof (struct sockaddr_in6)))
        break;
 
       //printf("Recieved data on socket %d\n", socknr);
@@ -270,7 +270,7 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
              printf("\n\t");
            }
          x++;
-         if(ipversion == AF_INET)
+         if(olsr_cnf->ip_version == AF_INET)
            printf(" %03i", (u_char) packet[i]);
          else
            printf(" %02x", (u_char) packet[i]);
@@ -279,7 +279,7 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
       printf("\n");
     }
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     msgsize = ntohs(m->v4.olsr_msgsize);
   else
     msgsize = ntohs(m->v6.olsr_msgsize);
@@ -288,9 +288,9 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
   /*
    * Hysteresis update - for every OLSR package
    */
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 */
          update_hysteresis_incoming(from_addr, 
@@ -314,7 +314,7 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
       if (count < minsize)
        break;
       
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        msgsize = ntohs(m->v4.olsr_msgsize);
       else
        msgsize = ntohs(m->v6.olsr_msgsize);
@@ -334,7 +334,7 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
 
 
       /* Treat TTL hopcnt */
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 */
          if (m->v4.ttl <= 0)
index b3c1ab6..586d50a 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: plugin_loader.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: plugin_loader.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -202,7 +202,7 @@ init_olsr_plugin(struct olsr_plugin *entry)
 
   olsr_printf(1, "Running registration function...\n");
   /* Fill struct */
-  plugin_data.ipversion = ipversion;
+  plugin_data.ipversion = olsr_cnf->ip_version;
   plugin_data.main_addr = &main_addr;
 
   plugin_data.olsr_plugin_io = &olsr_plugin_io;
index df53669..c28f71b 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: process_package.c,v 1.5 2004/09/21 19:08:57 kattemat Exp $
+ * $Id: process_package.c,v 1.6 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -91,7 +91,7 @@ olsr_process_received_hello(union olsr_message *m, struct interface *in_if, unio
   /*
    * Hysteresis
    */
-  if(use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       /* Update HELLO timeout */
       //printf("MESSAGE HTIME: %f\n", message.htime);
@@ -186,7 +186,7 @@ olsr_process_received_tc(union olsr_message *m, struct interface *in_if, union o
     }
 
 
-  if(debug_level > 2)
+  if(olsr_cnf->debug_level > 2)
     {
       mpr = message.multipoint_relay_selector_address;
       olsr_printf(3, "mpr_selector_list:[");      
@@ -406,7 +406,7 @@ olsr_process_received_hna(union olsr_message *m, struct interface *in_if, union
       /*
        * Set up tunnel to Internet gateway
        */
-      if((use_tunnel) && (ipversion == AF_INET) && (hna_tmp->net.v4 == 0))
+      if((use_tunnel) && (olsr_cnf->ip_version == AF_INET) && (hna_tmp->net.v4 == 0))
        {
          if(inet_tnl_added || gw_tunnel)
            {
@@ -606,7 +606,7 @@ olsr_lookup_mpr_status(struct hello_message *message, struct interface *in_if)
       //printf("against %s\n",olsr_ip_to_string(&main_addr));
 
 
-    if(ipversion == AF_INET)
+    if(olsr_cnf->ip_version == AF_INET)
       {        
        /* IPv4 */  
        if(COMP_IP(&neighbors->address, &in_if->ip_addr))
index daa8bd2..11897ac 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: process_routes.c,v 1.9 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: process_routes.c,v 1.10 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -298,7 +298,7 @@ olsr_delete_routes_from_kernel(struct destination_n *delete_kernel_list)
 
   while(delete_kernel_list!=NULL)
     {
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 */
          error = olsr_ioctl_del_route(delete_kernel_list->destination);
@@ -357,7 +357,7 @@ olsr_add_routes_in_kernel(struct destination_n *add_kernel_list)
            {
              /* First add all 1-hop routes that has themselves as GW */
 
-             if(ipversion == AF_INET)
+             if(olsr_cnf->ip_version == AF_INET)
                error=olsr_ioctl_add_route(destination_kernel->destination);
              else
                error=olsr_ioctl_add_route6(destination_kernel->destination);
index 168dea0..e82168b 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: rebuild_packet.c,v 1.7 2004/09/21 19:08:58 kattemat Exp $
+ * $Id: rebuild_packet.c,v 1.8 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -54,7 +54,7 @@ hna_chgestruct(struct hna_message *hmsg, union olsr_message *m)
     return;
   
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       hna = &m->v4.message.hna;
       haddr = hna->hna_net;
@@ -179,7 +179,7 @@ mid_chgestruct(struct mid_message *mmsg, union olsr_message *m)
 
   alias = NULL;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IPv4 */
 
@@ -216,7 +216,7 @@ mid_chgestruct(struct mid_message *mmsg, union olsr_message *m)
        }
       
       
-      if(debug_level > 1)
+      if(olsr_cnf->debug_level > 1)
        {
          olsr_printf(2, "Alias list for %s: ", ip_to_string(&mmsg->mid_origaddr.v4));
          olsr_printf(2, "%s", ip_to_string(&mmsg->addr.v4));
@@ -269,7 +269,7 @@ mid_chgestruct(struct mid_message *mmsg, union olsr_message *m)
        }
 
 
-      if(debug_level > 1)
+      if(olsr_cnf->debug_level > 1)
        {
          olsr_printf(2, "Alias list for %s", ip6_to_string(&mmsg->mid_origaddr.v6));
          olsr_printf(2, "%s", ip6_to_string(&mmsg->addr.v6));
@@ -307,7 +307,7 @@ unk_chgestruct(struct unknown_message *umsg, union olsr_message *m)
     return;
 
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IPv4 */
       /* address */
@@ -356,7 +356,7 @@ hello_chgestruct(struct hello_message *hmsg, union olsr_message *m)
   if ((!m) || (m->v4.olsr_msgtype != HELLO_MESSAGE))
     return;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IPv4 */
       h = &m->v4.message.hello;
@@ -485,7 +485,7 @@ tc_chgestruct(struct tc_message *tmsg, union olsr_message *m, union olsr_ip_addr
   if ((!m) || (m->v4.olsr_msgtype != TC_MESSAGE))
     return;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IPv4 */
       tc = &m->v4.message.tc;
index 6c24422..4825c46 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: routing_table.c,v 1.7 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: routing_table.c,v 1.8 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -184,7 +184,7 @@ olsr_insert_routing_table(union olsr_ip_addr *dst, union olsr_ip_addr *router, i
   else
     new_route_entry->rt_flags = (RTF_UP|RTF_HOST|RTF_GATEWAY);
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     /* IPv4 */
     new_route_entry->rt_mask.v4 = NETMASK_HOST;
   else
@@ -484,7 +484,7 @@ olsr_calculate_routing_table()
     }
 
 
-  if(debug_level > 5)
+  if(olsr_cnf->debug_level > 5)
     {
       printf("************** TABLES ****************\n");
       printf("Routing table:\n");
@@ -690,7 +690,7 @@ olsr_calculate_hna_routes()
   /* Update kernel */
   olsr_update_kernel_hna_routes();
 
-  if(debug_level > 2)
+  if(olsr_cnf->debug_level > 2)
     {
       olsr_printf(3, "HNA table:\n");
       olsr_print_routing_table(hna_routes);
index f0e5db3..0ac6d8c 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: scheduler.c,v 1.11 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: scheduler.c,v 1.12 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -178,7 +178,7 @@ scheduler()
              (*(entry->trigger) == 1)))
            {
              /* Run scheduled function */
-             entry->function();
+             entry->function(entry->param);
 
              /* Set jitter */
              entry->since_last = (float) random()/RAND_MAX;
@@ -241,7 +241,11 @@ scheduler()
  *this function should be triggered immediatley
  */
 int
-olsr_register_scheduler_event(void (*event_function)(void), float interval, float initial, olsr_u8_t *trigger)
+olsr_register_scheduler_event(void (*event_function)(void *), 
+                             void *par,
+                             float interval, 
+                             float initial, 
+                             olsr_u8_t *trigger)
 {
   struct event_entry *new_entry;
 
@@ -252,6 +256,7 @@ olsr_register_scheduler_event(void (*event_function)(void), float interval, floa
   while(new_entry)
     {
       if((new_entry->function == event_function) &&
+        (new_entry->param == par) &&
         (new_entry->trigger == trigger) &&
         (new_entry->interval == interval))
        {
@@ -265,6 +270,7 @@ olsr_register_scheduler_event(void (*event_function)(void), float interval, floa
   new_entry = olsr_malloc(sizeof(struct event_entry), "add scheduler event");
 
   new_entry->function = event_function;
+  new_entry->param = par;
   new_entry->interval = interval;
   new_entry->since_last = interval - initial;
   new_entry->next = event_functions;
@@ -284,7 +290,11 @@ olsr_register_scheduler_event(void (*event_function)(void), float interval, floa
  *this function should be triggered immediatley
  */
 int
-olsr_remove_scheduler_event(void (*event_function)(void), float interval, float initial, olsr_u8_t *trigger)
+olsr_remove_scheduler_event(void (*event_function)(void *), 
+                           void *par,
+                           float interval, 
+                           float initial, 
+                           olsr_u8_t *trigger)
 {
   struct event_entry *entry, *prev;
 
@@ -294,6 +304,7 @@ olsr_remove_scheduler_event(void (*event_function)(void), float interval, float
   while(entry)
     {
       if((entry->function == event_function) &&
+        (entry->param == par) &&
         (entry->trigger == trigger) &&
         (entry->interval == interval))
        {
index 621367c..d931fce 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: scheduler.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: scheduler.h,v 1.7 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -46,7 +46,8 @@ struct timeout_entry
 
 struct event_entry
 {
-  void (*function)(void);
+  void (*function)(void *);
+  void *param;
   float interval;
   float since_last;
   olsr_u8_t *trigger;
@@ -68,25 +69,10 @@ float sched_poll_interval;
 extern pthread_mutex_t mutex;
 
 
-/* EMISSION/HOLD INTERVALS */
-
-float hello_int;
-float hello_int_nw;
-float tc_int;
-float hna_int;
-float polling_int;
-float mid_int;
 float will_int; /* Willingness update interval */
 
 float max_jitter;
 
-float topology_hold_time;
-float neighbor_hold_time;
-float neighbor_hold_time_nw;
-float mid_hold_time;
-float hna_hold_time;
-float dup_hold_time;
-
 int
 init_scheduler(float);
 
@@ -97,10 +83,10 @@ int
 olsr_remove_timeout_function(void (*)(void));
 
 int
-olsr_register_scheduler_event(void (*)(void), float, float, olsr_u8_t *);
+olsr_register_scheduler_event(void (*)(void *), void *, float, float, olsr_u8_t *);
 
 int
-olsr_remove_scheduler_event(void (*)(void), float, float, olsr_u8_t *);
+olsr_remove_scheduler_event(void (*)(void *), void *, float, float, olsr_u8_t *);
 
 void
 start_scheduler(pthread_t *);
index 1709f30..73d7a9e 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: socket_parser.c,v 1.7 2004/09/21 19:08:58 kattemat Exp $
+ * $Id: socket_parser.c,v 1.8 2004/10/18 13:13:37 kattemat Exp $
  *
  */
 
@@ -37,7 +37,7 @@
 #define strerror(x) StrError(x)
 #endif
 
-int changes_sockets;
+static int changes_sockets;
 
 /**
  * Add a socket and handler to the socketset