Updated configfile format. Interface options are now set in the Interface section
authorAndreas Tonnesen <andreto@olsr.org>
Mon, 1 Nov 2004 20:13:27 +0000 (20:13 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Mon, 1 Nov 2004 20:13:27 +0000 (20:13 +0000)
src/cfgparser/olsrd.conf.example
src/cfgparser/olsrd_conf.c
src/cfgparser/olsrd_conf.h
src/cfgparser/oparse.y
src/cfgparser/oscan.lex
src/defs.h
src/interfaces.c
src/main.c
src/main.h
src/olsr_cfg.h
src/olsr_protocol.h

index d4c132a..82a9001 100644 (file)
@@ -37,16 +37,6 @@ Hna6
     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
@@ -150,7 +140,12 @@ LoadPlugin "olsrd_dyn_gw.so.0.1"
 # olsrd_power.so.0.1
 
 
-IfSetup "lan"
+
+
+# Interfaces and their rules
+# Omitted options will be set to the
+# default values.
+Interface "eth0"
 {
 
     # IPv4 broadcast address to use. The
@@ -205,13 +200,10 @@ IfSetup "lan"
 
     # HNA validity time
     # HnaValidityTime  15.0
-
 }
 
-
-IfSetup "wlan"
+Interface "eth1"
 {
-
     # IPv4 broadcast address to use. The
     # one usefull example would be 255.255.255.255
     # If not defined the broadcastaddress
index 8fcba40..549ae17 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_conf.c,v 1.9 2004/10/20 10:33:20 kattemat Exp $
+ * $Id: olsrd_conf.c,v 1.10 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -120,7 +120,6 @@ 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)
@@ -154,34 +153,15 @@ olsrd_parse_cnf(char *filename)
   
   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 and set up interface rulesets */
   in = cnf->interfaces;
 
   while(in)
     {
-      in->cnf = find_if_rule_by_name(cnf->if_options, in->config);
-
-      if(in->cnf == NULL)
-       {
-         fprintf(stderr, "ERROR: Could not find a matching ruleset \"%s\" for %s\n", in->config, in->name);
-         olsrd_free_cnf(cnf);
-         exit(0);
-       }
       /* set various stuff */
       in->index = cnf->ifcnt++;
       in->configured = 0;
       in->interf = NULL;
-      /* Calculate max jitter */
       in = in->next;
     }
 
@@ -190,33 +170,6 @@ 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;
-}
-
-
-
-
-
-
-
 void
 olsrd_free_cnf(struct olsrd_config *cnf)
 {
@@ -224,7 +177,7 @@ olsrd_free_cnf(struct olsrd_config *cnf)
   struct hna6_entry        *h6d, *h6 = cnf->hna6_entries;
   struct olsr_if           *ind, *in = cnf->interfaces;
   struct plugin_entry      *ped, *pe = cnf->plugins;
-  struct if_config_options *iod, *io = cnf->if_options;
+  struct if_config_options *iod, *io;
   
   while(h4)
     {
@@ -242,6 +195,13 @@ olsrd_free_cnf(struct olsrd_config *cnf)
 
   while(in)
     {
+      io = in->cnf;
+      while(io)
+       {
+         iod = io;
+         io = io->next;
+         free(iod);
+       }
       ind = in;
       in = in->next;
       free(ind->name);
@@ -257,37 +217,47 @@ olsrd_free_cnf(struct olsrd_config *cnf)
       free(ped);
     }
 
-  while(io)
+  return;
+}
+
+
+
+struct olsrd_config *
+olsrd_get_default_cnf()
+{
+  cnf = malloc(sizeof(struct olsrd_config));
+  if (cnf == NULL)
     {
-      iod = io;
-      io = io->next;
-      free(iod->name);
-      free(iod);
-    }
+      fprintf(stderr, "Out of memory %s\n", __func__);
+      return NULL;
+  }
 
-  return;
+  set_default_cnf(cnf);
+
+  return cnf;
 }
 
 
 
+
 void
 set_default_cnf(struct olsrd_config *cnf)
 {
     memset(cnf, 0, sizeof(struct olsrd_config));
     
-    cnf->debug_level = 1;
+    cnf->debug_level = DEF_DEBUGLVL;
     cnf->ip_version  = AF_INET;
-    cnf->allow_no_interfaces = 1;
-    cnf->tos = 16;
-    cnf->willingness_auto = 1;
-    cnf->open_ipc = 0;
+    cnf->allow_no_interfaces = DEF_ALLOW_NO_INTS;
+    cnf->tos = DEF_TOS;
+    cnf->willingness_auto = DEF_WILL_AUTO;
+    cnf->open_ipc = DEF_OPEN_IPC;
 
-    cnf->use_hysteresis = 1;
+    cnf->use_hysteresis = DEF_USE_HYST;
     cnf->hysteresis_param.scaling = HYST_SCALING;
     cnf->hysteresis_param.thr_high = HYST_THRESHOLD_HIGH;
     cnf->hysteresis_param.thr_low = HYST_THRESHOLD_LOW;
 
-    cnf->pollrate = 0.1;
+    cnf->pollrate = DEF_POLLRATE;
 
     cnf->tc_redundancy = TC_REDUNDANCY;
     cnf->mpr_coverage = MPR_COVERAGE;
@@ -304,7 +274,7 @@ get_default_if_config()
  
   memset(io, 0, sizeof(struct if_config_options));
 
-  io->ipv6_addrtype = 1;
+  io->ipv6_addrtype = 1; /* XXX - FixMe */
 
   if(inet_pton(AF_INET6, OLSR_IPV6_MCAST_SITE_LOCAL, &in6) < 0)
     {
@@ -345,7 +315,6 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
   struct hna6_entry        *h6 = cnf->hna6_entries;
   struct olsr_if           *in = cnf->interfaces;
   struct plugin_entry      *pe = cnf->plugins;
-  struct if_config_options *io = cnf->if_options;
   char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
   struct in_addr in4;
 
@@ -367,7 +336,10 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
   fprintf(fd, "# Debug level(0-9)\n# If set to 0 the daemon runs in the background\n\nDebugLevel\t%d\n\n", cnf->debug_level);
 
   /* IP version */
-  fprintf(fd, "# IP version to use (4 or 6)\n\nIpVersion\t%d\n\n", cnf->ip_version);
+  if(cnf->ip_version == AF_INET6)
+    fprintf(fd, "# IP version to use (4 or 6)\n\nIpVersion\t6\n\n");
+  else
+    fprintf(fd, "# IP version to use (4 or 6)\n\nIpVersion\t4\n\n");
 
 
   /* HNA IPv4 */
@@ -393,23 +365,6 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
 
   fprintf(fd, "}\n\n");
 
-
-  /* Interfaces */
-  fprintf(fd, "# Interfaces and their rulesets\n\n");
-  /* Interfaces */
-  if(in)
-    {
-      while(in)
-       {
-         fprintf(fd, "Interface \"%s\"\n{\n", in->name);
-         fprintf(fd, "    Setup\"%s\"\n", in->config);
-         fprintf(fd, "}\n\n");
-         in = in->next;
-       }
-    }
-  fprintf(fd, "\n");
-
-
   /* No interfaces */
   fprintf(fd, "# Should olsrd keep on running even if there are\n# no interfaces available? This is a good idea\n# for a PCMCIA/USB hotswap environment.\n# \"yes\" OR \"no\"\n\nAllowNoInt\t");
   if(cnf->allow_no_interfaces)
@@ -479,59 +434,92 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
          fprintf(fd, "}\n");
        }
     }
-         fprintf(fd, "\n");
-
-  /* Rulesets */
-  while(io)
-    {
-      fprintf(fd, "IfSetup \"%s\"\n{\n", io->name);
+  fprintf(fd, "\n");
 
-      
-      fprintf(fd, "    # IPv4 broadcast address to use. The\n    # one usefull example would be 255.255.255.255\n    # If not defined the broadcastaddress\n    # every card is configured with is used\n\n");
+  
+  
 
-      if(io->ipv4_broadcast.v4)
-       {
-         in4.s_addr = io->ipv4_broadcast.v4;
-         fprintf(fd, "    Ip4Broadcast\t %s\n\n", inet_ntoa(in4));
-       }
-      else
+  /* Interfaces */
+  fprintf(fd, "# Interfaces\n\n");
+  /* Interfaces */
+  if(in)
+    {
+      while(in)
        {
-         fprintf(fd, "    #Ip4Broadcast\t255.255.255.255\n\n");
+         fprintf(fd, "Interface \"%s\"\n{\n", in->name);
+         fprintf(fd, "\n");
+      
+         fprintf(fd, "    # IPv4 broadcast address to use. The\n    # one usefull example would be 255.255.255.255\n    # If not defined the broadcastaddress\n    # every card is configured with is used\n\n");
+
+         if(in->cnf->ipv4_broadcast.v4)
+           {
+             in4.s_addr = in->cnf->ipv4_broadcast.v4;
+             fprintf(fd, "    Ip4Broadcast\t %s\n\n", inet_ntoa(in4));
+           }
+         else
+           {
+             fprintf(fd, "    #Ip4Broadcast\t255.255.255.255\n\n");
+           }
+         
+         
+         fprintf(fd, "    # IPv6 address scope to use.\n    # Must be 'site-local' or 'global'\n\n");
+         if(in->cnf->ipv6_addrtype)
+           fprintf(fd, "    Ip6AddrType \tsite-local\n\n");
+         else
+           fprintf(fd, "    Ip6AddrType \tglobal\n\n");
+         
+         fprintf(fd, "    # IPv6 multicast address to use when\n    # using site-local addresses.\n    # If not defined, ff05::15 is used\n");
+         fprintf(fd, "    Ip6MulticastSite\t%s\n\n", (char *)inet_ntop(AF_INET6, &in->cnf->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
+         fprintf(fd, "    # IPv6 multicast address to use when\n    # using global addresses\n    # If not defined, ff0e::1 is used\n");
+         fprintf(fd, "    Ip6MulticastGlobal\t%s\n\n", (char *)inet_ntop(AF_INET6, &in->cnf->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
+         
+         
+         
+         fprintf(fd, "    # Emission and validity intervals.\n    # If not defined, RFC proposed values will\n    # in most cases be used.\n\n");
+         
+         
+         if(in->cnf->hello_params.emission_interval != HELLO_INTERVAL)
+           fprintf(fd, "    HelloInterval\t%0.2f\n", in->cnf->hello_params.emission_interval);
+         else
+           fprintf(fd, "    #HelloInterval\t%0.2f\n", in->cnf->hello_params.emission_interval);
+         if(in->cnf->hello_params.validity_time != NEIGHB_HOLD_TIME)
+           fprintf(fd, "    HelloValidityTime\t%0.2f\n", in->cnf->hello_params.validity_time);
+         else
+           fprintf(fd, "    #HelloValidityTime\t%0.2f\n", in->cnf->hello_params.validity_time);
+         if(in->cnf->tc_params.emission_interval != TC_INTERVAL)
+           fprintf(fd, "    TcInterval\t\t%0.2f\n", in->cnf->tc_params.emission_interval);
+         else
+           fprintf(fd, "    #TcInterval\t\t%0.2f\n", in->cnf->tc_params.emission_interval);
+         if(in->cnf->tc_params.validity_time != TOP_HOLD_TIME)
+           fprintf(fd, "    TcValidityTime\t%0.2f\n", in->cnf->tc_params.validity_time);
+         else
+           fprintf(fd, "    #TcValidityTime\t%0.2f\n", in->cnf->tc_params.validity_time);
+         if(in->cnf->mid_params.emission_interval != MID_INTERVAL)
+           fprintf(fd, "    MidInterval\t\t%0.2f\n", in->cnf->mid_params.emission_interval);
+         else
+           fprintf(fd, "    #MidInterval\t%0.2f\n", in->cnf->mid_params.emission_interval);
+         if(in->cnf->mid_params.validity_time != MID_HOLD_TIME)
+           fprintf(fd, "    MidValidityTime\t%0.2f\n", in->cnf->mid_params.validity_time);
+         else
+           fprintf(fd, "    #MidValidityTime\t%0.2f\n", in->cnf->mid_params.validity_time);
+         if(in->cnf->hna_params.emission_interval != HNA_INTERVAL)
+           fprintf(fd, "    HnaInterval\t\t%0.2f\n", in->cnf->hna_params.emission_interval);
+         else
+           fprintf(fd, "    #HnaInterval\t%0.2f\n", in->cnf->hna_params.emission_interval);
+         if(in->cnf->hna_params.validity_time != HNA_HOLD_TIME)
+           fprintf(fd, "    HnaValidityTime\t%0.2f\n", in->cnf->hna_params.validity_time);       
+         else
+           fprintf(fd, "    #HnaValidityTime\t%0.2f\n", in->cnf->hna_params.validity_time);      
+         
+         
+         
+         fprintf(fd, "}\n\n");
+         in = in->next;
        }
 
-
-      fprintf(fd, "    # IPv6 address scope to use.\n    # Must be 'site-local' or 'global'\n\n");
-      if(io->ipv6_addrtype)
-       fprintf(fd, "    Ip6AddrType \tsite-local\n\n");
-      else
-       fprintf(fd, "    Ip6AddrType \tglobal\n\n");
-
-      fprintf(fd, "    # IPv6 multicast address to use when\n    # using site-local addresses.\n    # If not defined, ff05::15 is used\n");
-      fprintf(fd, "    Ip6MulticastSite\t%s\n\n", (char *)inet_ntop(AF_INET6, &io->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
-      fprintf(fd, "    # IPv6 multicast address to use when\n    # using global addresses\n    # If not defined, ff0e::1 is used\n");
-      fprintf(fd, "    Ip6MulticastGlobal\t%s\n\n", (char *)inet_ntop(AF_INET6, &io->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
-
-
-
-      fprintf(fd, "    # Emission intervals.\n    # If not defined, RFC proposed values will\n    # in most cases be used.\n\n");
-
-
-      fprintf(fd, "    HelloInterval\t%0.2f\n", io->hello_params.emission_interval);
-      fprintf(fd, "    HelloValidityTime\t%0.2f\n", io->hello_params.validity_time);
-      fprintf(fd, "    TcInterval\t\t%0.2f\n", io->tc_params.emission_interval);
-      fprintf(fd, "    TcValidityTime\t%0.2f\n", io->tc_params.validity_time);
-      fprintf(fd, "    MidInterval\t\t%0.2f\n", io->mid_params.emission_interval);
-      fprintf(fd, "    MidValidityTime\t%0.2f\n", io->mid_params.validity_time);
-      fprintf(fd, "    HnaInterval\t\t%0.2f\n", io->hna_params.emission_interval);
-      fprintf(fd, "    HnaValidityTime\t%0.2f\n", io->hna_params.validity_time);
-
-
-
-      io = io->next;
-
-      fprintf(fd, "}\n\n\n");
     }
 
+
   fprintf(fd, "\n# END AUTOGENERATED CONFIG\n");
 
   fclose(fd);
@@ -551,7 +539,6 @@ olsrd_print_cnf(struct olsrd_config *cnf)
   struct hna6_entry        *h6 = cnf->hna6_entries;
   struct olsr_if           *in = cnf->interfaces;
   struct plugin_entry      *pe = cnf->plugins;
-  struct if_config_options *io = cnf->if_options;
   char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
   struct in_addr in4;
 
@@ -586,50 +573,46 @@ olsrd_print_cnf(struct olsrd_config *cnf)
       printf("Interfaces:\n");
       while(in)
        {
-         printf("\tdev: \"%s\" ruleset: \"%s\"\n", in->name, in->config);
+         printf(" dev: \"%s\"\n", in->name);
+         
+         if(in->cnf->ipv4_broadcast.v4)
+           {
+             in4.s_addr = in->cnf->ipv4_broadcast.v4;
+             printf("\tIPv4 broadcast        : %s\n", inet_ntoa(in4));
+           }
+         else
+           {
+             printf("\tIPv4 broadcast        : AUTO\n");
+           }
+         
+         if(in->cnf->ipv6_addrtype)
+           printf("\tIPv6 addrtype         : site-local\n");
+         else
+           printf("\tIPv6 addrtype         : global\n");
+         
+         //union olsr_ip_addr       ipv6_multi_site;
+         //union olsr_ip_addr       ipv6_multi_glbl;
+         printf("\tIPv6 multicast site   : %s\n", (char *)inet_ntop(AF_INET6, &in->cnf->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
+         printf("\tIPv6 multicast global : %s\n", (char *)inet_ntop(AF_INET6, &in->cnf->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
+         
+         printf("\tHELLO emission int    : %0.2f\n", in->cnf->hello_params.emission_interval);
+         printf("\tHELLO validity time   : %0.2f\n", in->cnf->hello_params.validity_time);
+         printf("\tTC emission int       : %0.2f\n", in->cnf->tc_params.emission_interval);
+         printf("\tTC validity time      : %0.2f\n", in->cnf->tc_params.validity_time);
+         printf("\tMID emission int      : %0.2f\n", in->cnf->mid_params.emission_interval);
+         printf("\tMID validity time     : %0.2f\n", in->cnf->mid_params.validity_time);
+         printf("\tHNA emission int      : %0.2f\n", in->cnf->hna_params.emission_interval);
+         printf("\tHNA validity time     : %0.2f\n", in->cnf->hna_params.validity_time);
+         
+         
+         
          in = in->next;
-       }
-    }
-
-  /* Rulesets */
-  while(io)
-    {
-      printf("Interface ruleset \"%s\":\n", io->name);
 
-      
-      if(io->ipv4_broadcast.v4)
-       {
-         in4.s_addr = io->ipv4_broadcast.v4;
-         printf("\tIPv4 broadcast        : %s\n", inet_ntoa(in4));
-       }
-      else
-       {
-         printf("\tIPv4 broadcast        : AUTO\n");
        }
-
-      if(io->ipv6_addrtype)
-       printf("\tIPv6 addrtype         : site-local\n");
-      else
-       printf("\tIPv6 addrtype         : global\n");
-
-      //union olsr_ip_addr       ipv6_multi_site;
-      //union olsr_ip_addr       ipv6_multi_glbl;
-      printf("\tIPv6 multicast site   : %s\n", (char *)inet_ntop(AF_INET6, &io->ipv6_multi_site.v6, ipv6_buf, sizeof(ipv6_buf)));
-      printf("\tIPv6 multicast global : %s\n", (char *)inet_ntop(AF_INET6, &io->ipv6_multi_glbl.v6, ipv6_buf, sizeof(ipv6_buf)));
-
-      printf("\tHELLO emission int    : %0.2f\n", io->hello_params.emission_interval);
-      printf("\tHELLO validity time   : %0.2f\n", io->hello_params.validity_time);
-      printf("\tTC emission int       : %0.2f\n", io->tc_params.emission_interval);
-      printf("\tTC validity time      : %0.2f\n", io->tc_params.validity_time);
-      printf("\tMID emission int      : %0.2f\n", io->mid_params.emission_interval);
-      printf("\tMID validity time     : %0.2f\n", io->mid_params.validity_time);
-      printf("\tHNA emission int      : %0.2f\n", io->hna_params.emission_interval);
-      printf("\tHNA validity time     : %0.2f\n", io->hna_params.validity_time);
+    }
 
 
 
-      io = io->next;
-    }
 
   /* Plugins */
   if(pe)
@@ -683,17 +666,3 @@ olsrd_print_cnf(struct olsrd_config *cnf)
 }
 
 
-
-
-struct if_config_options *
-find_if_rule_by_name(struct if_config_options *io, char *name)
-{
-
-  while(io)
-    {
-      if(strcmp(io->name, name) == 0)
-       return io;
-      io = io->next;
-    }
-  return NULL;
-}
index 55991bb..8880ebf 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_conf.h,v 1.6 2004/10/19 20:20:26 kattemat Exp $
+ * $Id: olsrd_conf.h,v 1.7 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -30,7 +30,7 @@
 #include "olsr_protocol.h"
 #include "../olsr_cfg.h"
 
-#define PARSER_VERSION "0.1.1"
+#define PARSER_VERSION "0.1.2"
 
 
 int current_line;
@@ -48,10 +48,5 @@ struct conf_token
 void
 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 5bcfc7f..af25c70 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: oparse.y,v 1.7 2004/10/19 19:23:01 kattemat Exp $
+ * $Id: oparse.y,v 1.8 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -66,8 +66,6 @@ int yylex(void);
 %token TOK_HNA6
 %token TOK_PLUGIN
 %token TOK_INTERFACE
-%token TOK_IFSETTING
-%token TOK_IFSETUP
 %token TOK_NOINT
 %token TOK_TOS
 %token TOK_WILLINGNESS
@@ -127,7 +125,6 @@ block:      TOK_HNA4 hna4body
           | TOK_HNA6 hna6body
           | ifblock ifbody
           | plblock plbody
-          | isetblock isetbody
 ;
 
 hna4body:       TOK_OPEN hna4stmts TOK_CLOSE
@@ -148,17 +145,7 @@ ifbody:     TOK_OPEN ifstmts TOK_CLOSE
 ifstmts:   | ifstmts ifstmt
 ;
 
-ifstmt:     ifsetting
-          | vcomment
-;
-
-isetbody:   TOK_OPEN isetstmts TOK_CLOSE
-;
-
-isetstmts:   | isetstmts isetstmt
-;
-
-isetstmt:      vcomment
+ifstmt:      vcomment
              | isetip4br
              | isetip6addrt
              | isetip6mults
@@ -185,30 +172,6 @@ plstmt:     plparam
 
 
 
-
-isetblock:    TOK_IFSETUP TOK_STRING
-{
-  struct if_config_options *io = get_default_if_config();
-  if(io == NULL)
-    {
-      fprintf(stderr, "Out of memory(ADD IFRULE)\n");
-      YYABORT;
-    }
-
-  if(PARSER_DEBUG) printf("Interface setup: \"%s\"\n", $2->string);
-  
-  io->name = $2->string;
-  
-  
-  /* Queue */
-  io->next = cnf->if_options;
-  cnf->if_options = io;
-
-  free($2);
-}
-;
-
-
 isetip4br: TOK_IP4BROADCAST TOK_IP4_ADDR
 {
   struct in_addr in;
@@ -221,7 +184,7 @@ isetip4br: TOK_IP4BROADCAST TOK_IP4_ADDR
       exit(EXIT_FAILURE);
     }
 
-  cnf->if_options->ipv4_broadcast.v4 = in.s_addr;
+  cnf->interfaces->cnf->ipv4_broadcast.v4 = in.s_addr;
 
   free($2->string);
   free($2);
@@ -231,9 +194,9 @@ isetip4br: TOK_IP4BROADCAST TOK_IP4_ADDR
 isetip6addrt: TOK_IP6ADDRTYPE TOK_IP6TYPE
 {
   if($2->boolean)
-    cnf->if_options->ipv6_addrtype = IPV6_ADDR_SITELOCAL;
+    cnf->interfaces->cnf->ipv6_addrtype = IPV6_ADDR_SITELOCAL;
   else
-    cnf->if_options->ipv6_addrtype = 0;
+    cnf->interfaces->cnf->ipv6_addrtype = 0;
 
   free($2);
 }
@@ -250,7 +213,7 @@ isetip6mults: TOK_IP6MULTISITE TOK_IP6_ADDR
       fprintf(stderr, "Failed converting IP address %s\n", $2->string);
       exit(EXIT_FAILURE);
     }
-  memcpy(&cnf->if_options->ipv6_multi_site.v6, &in6, sizeof(struct in6_addr));
+  memcpy(&cnf->interfaces->cnf->ipv6_multi_site.v6, &in6, sizeof(struct in6_addr));
 
 
   free($2->string);
@@ -270,7 +233,7 @@ isetip6multg: TOK_IP6MULTIGLOBAL TOK_IP6_ADDR
       fprintf(stderr, "Failed converting IP address %s\n", $2->string);
       exit(EXIT_FAILURE);
     }
-  memcpy(&cnf->if_options->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
+  memcpy(&cnf->interfaces->cnf->ipv6_multi_glbl.v6, &in6, sizeof(struct in6_addr));
 
 
   free($2->string);
@@ -280,56 +243,56 @@ isetip6multg: TOK_IP6MULTIGLOBAL TOK_IP6_ADDR
 isethelloint: TOK_HELLOINT TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tHELLO interval: %0.2f\n", $2->floating);
-    cnf->if_options->hello_params.emission_interval = $2->floating;
+    cnf->interfaces->cnf->hello_params.emission_interval = $2->floating;
     free($2);
 }
 ;
 isethelloval: TOK_HELLOVAL TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tHELLO validity: %0.2f\n", $2->floating);
-    cnf->if_options->hello_params.validity_time = $2->floating;
+    cnf->interfaces->cnf->hello_params.validity_time = $2->floating;
     free($2);
 }
 ;
 isettcint: TOK_TCINT TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tTC interval: %0.2f\n", $2->floating);
-    cnf->if_options->tc_params.emission_interval = $2->floating;
+    cnf->interfaces->cnf->tc_params.emission_interval = $2->floating;
     free($2);
 }
 ;
 isettcval: TOK_TCVAL TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tTC validity: %0.2f\n", $2->floating);
-    cnf->if_options->tc_params.validity_time = $2->floating;
+    cnf->interfaces->cnf->tc_params.validity_time = $2->floating;
     free($2);
 }
 ;
 isetmidint: TOK_MIDINT TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tMID interval: %0.2f\n", $2->floating);
-    cnf->if_options->mid_params.emission_interval = $2->floating;
+    cnf->interfaces->cnf->mid_params.emission_interval = $2->floating;
     free($2);
 }
 ;
 isetmidval: TOK_MIDVAL TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tMID validity: %0.2f\n", $2->floating);
-    cnf->if_options->mid_params.validity_time = $2->floating;
+    cnf->interfaces->cnf->mid_params.validity_time = $2->floating;
     free($2);
 }
 ;
 isethnaint: TOK_HNAINT TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tHNA interval: %0.2f\n", $2->floating);
-    cnf->if_options->hna_params.emission_interval = $2->floating;
+    cnf->interfaces->cnf->hna_params.emission_interval = $2->floating;
     free($2);
 }
 ;
 isethnaval: TOK_HNAVAL TOK_FLOAT
 {
     if(PARSER_DEBUG) printf("\tHNA validity: %0.2f\n", $2->floating);
-    cnf->if_options->hna_params.validity_time = $2->floating;
+    cnf->interfaces->cnf->hna_params.validity_time = $2->floating;
     free($2);
 }
 ;
@@ -454,6 +417,14 @@ ifblock: TOK_INTERFACE TOK_STRING
       YYABORT;
     }
 
+  in->cnf = get_default_if_config();
+
+  if(in->cnf == NULL)
+    {
+      fprintf(stderr, "Out of memory(ADD IFRULE)\n");
+      YYABORT;
+    }
+
   in->name = $2->string;
 
   /* Queue */
@@ -463,18 +434,6 @@ ifblock: TOK_INTERFACE TOK_STRING
   free($2);
 }
 
-
-ifsetting: TOK_IFSETTING TOK_STRING
-{
-
-  cnf->interfaces->config = $2->string;
-
-  if(PARSER_DEBUG) printf("Interface: %s Ruleset: %s\n", $1->string, $2->string);
-
-  free($2);
-}
-;
-
 bnoint: TOK_NOINT TOK_BOOLEAN
 {
   if(PARSER_DEBUG) printf("Noint set to %d\n", $2->boolean);
index b5b9245..d42699e 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: oscan.lex,v 1.5 2004/10/18 14:17:45 tlopatic Exp $
+ * $Id: oscan.lex,v 1.6 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -279,11 +279,6 @@ IPV6ADDR {IP6PAT1}|{IP6PAT2}|{IP6PAT3}|{IP6PAT4}|{IP6PAT5}|{IP6PAT6}|{IP6PAT7}|{
   return TOK_INTERFACE;
 }
 
-"Setup" {
-  yylval = NULL;
-  return TOK_IFSETTING;
-}
-
 "AllowNoInt" {
   yylval = NULL;
   return TOK_NOINT;
@@ -340,13 +335,6 @@ IPV6ADDR {IP6PAT1}|{IP6PAT2}|{IP6PAT3}|{IP6PAT4}|{IP6PAT5}|{IP6PAT6}|{IP6PAT7}|{
   return TOK_MPRCOVERAGE;
 }
 
-
-"IfSetup" {
-  yylval = NULL;
-  return TOK_IFSETUP;
-}
-
-
 "Ip4Broadcast" {
   yylval = NULL;
   return TOK_IP4BROADCAST;
index 2e78d14..7ef28d7 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: defs.h,v 1.17 2004/10/19 20:18:00 kattemat Exp $
+ * $Id: defs.h,v 1.18 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -40,6 +40,7 @@
 #define UP             1
 #define DOWN           0
 
+
 #include "log.h"
 #include "olsr_protocol.h"
 #include "process_routes.h" /* Needed for rt_entry */
index 07d1e79..9b6c862 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: interfaces.c,v 1.9 2004/10/19 21:06:34 kattemat Exp $
+ * $Id: interfaces.c,v 1.10 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -176,9 +176,9 @@ 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 = get_default_ifcnf(olsr_cnf);
-  interf_n->configured = 0;
+  interf_n->cnf = NULL;
   interf_n->interf = NULL;
+  interf_n->configured = 0;
   interf_n->index = olsr_cnf->ifcnt++;
 
   strcpy(interf_n->name, name);
index 2dff4ca..2a82e35 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.c,v 1.19 2004/10/20 18:21:00 kattemat Exp $
+ * $Id: main.c,v 1.20 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -59,6 +59,8 @@ print_usage(void);
 static void
 set_default_values(void);
 
+static int
+set_default_ifcnfs(struct olsr_if *, struct if_config_options *);
 
 /*
  * End: Local function prototypes
@@ -71,6 +73,9 @@ set_default_values(void);
 int
 main(int argc, char *argv[])
 {
+  /* For address convertions */
+  struct in_addr in;
+  struct in6_addr in6;
 
   /* The thread for the scheduler */
   pthread_t thread;
@@ -180,7 +185,7 @@ main(int argc, char *argv[])
    */
 
   get_config(conf_file_name);
-  default_ifcnf = get_default_ifcnf(olsr_cnf);
+  default_ifcnf = get_default_if_config();
   
   if(default_ifcnf == NULL)
     {
@@ -225,7 +230,6 @@ main(int argc, char *argv[])
          continue;
        }
 
-#if 0
       /*
        *Broadcast address
        */
@@ -244,12 +248,11 @@ main(int argc, char *argv[])
              continue;
            }
                 
-         memcpy(&bcastaddr.sin_addr, &in.s_addr, sizeof(olsr_u32_t));
+         memcpy(&default_ifcnf->ipv4_broadcast.v4, &in.s_addr, sizeof(olsr_u32_t));
 
 
          continue;
        }
-#endif
 
       /*
        * Enable additional debugging information to be logged.
@@ -411,7 +414,6 @@ main(int argc, char *argv[])
 
          continue;
        }
-#if 0
 
       /*
        * IPv6 multicast addr
@@ -419,13 +421,19 @@ main(int argc, char *argv[])
       if (strcmp(*argv, "-multi") == 0) 
        {
          argv++, argc--;
-         strncpy(ipv6_mult, *argv, 50);
+         if(inet_pton(AF_INET6, *argv, &in6) < 0)
+           {
+             fprintf(stderr, "Failed converting IP address %s\n", *argv);
+             exit(EXIT_FAILURE);
+           }
+
+         memcpy(&default_ifcnf->ipv6_multi_glbl, &in6, sizeof(struct in6_addr));
 
          argv++, argc--;
 
          continue;
        }
-#endif
+
 
       /*
        * Should we display the contents of packages beeing sent?
@@ -453,6 +461,16 @@ main(int argc, char *argv[])
       olsr_exit(__func__, EXIT_FAILURE);
     }
 
+  /*
+   * Set configuration for command-line specified interfaces
+   */
+  set_default_ifcnfs(olsr_cnf->interfaces, default_ifcnf);
+
+  /*
+   * Print configuration 
+   */
+  olsrd_print_cnf(olsr_cnf);  
+
   /*
    *socket for icotl calls
    */
@@ -560,17 +578,6 @@ main(int argc, char *argv[])
        }
     }
 
-
-  /* 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);
@@ -770,11 +777,7 @@ get_config(char *filename)
   /*
    * NB - CHECK IPv6 MULTICAST!
    */
-  if((olsr_cnf = olsrd_parse_cnf(filename)) != NULL)
-    {
-      olsrd_print_cnf(olsr_cnf);  
-    }
-  else
+  if((olsr_cnf = olsrd_parse_cnf(filename)) == NULL)
     {
       printf("Using default config values(no configfile)\n");
       olsr_cnf = olsrd_get_default_cnf();
@@ -786,16 +789,24 @@ get_config(char *filename)
 
 
 
-struct if_config_options *
-get_default_ifcnf(struct olsrd_config *cnf)
+/**
+ * Sets the provided configuration on all unconfigured
+ * interfaces
+ */
+int
+set_default_ifcnfs(struct olsr_if *ifs, struct if_config_options *cnf)
 {
-  struct if_config_options *ifc = cnf->if_options;
+  int changes = 0;
 
-  while(ifc)
+  while(ifs)
     {
-      if(!strcmp(ifc->name, DEFAULT_IF_CONFIG_NAME))
-        return ifc;
-      ifc = ifc->next;
+      if(ifs->cnf == NULL)
+       {
+         ifs->cnf = olsr_malloc(sizeof(struct if_config_options), "Set default config");
+         *ifs->cnf = *cnf;
+         changes++;
+       }
+      ifs = ifs->next;
     }
-  return NULL;
+  return changes;
 }
index 5de2388..e22e08e 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.h,v 1.10 2004/10/19 21:06:34 kattemat Exp $
+ * $Id: main.h,v 1.11 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -61,7 +61,4 @@ olsr_shutdown(int);
 void
 get_config(char *);
 
-struct if_config_options *
-get_default_ifcnf(struct olsrd_config *);
-
 #endif
index 78c807b..bb8a03f 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr_cfg.h,v 1.1 2004/10/19 19:26:33 kattemat Exp $
+ * $Id: olsr_cfg.h,v 1.2 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
 #ifndef _OLSRD_CFGPARSER_H
 #define _OLSRD_CFGPARSER_H
 
+/* Default valuse not declared in olsr_protocol.h */
+#define DEF_POLLRATE       0.1
+#define DEF_WILL_AUTO      1
+#define DEF_ALLOW_NO_INTS  1
+#define DEF_TOS            16
+#define DEF_DEBUGLVL       1
+#define DEF_OPEN_IPC       0
+#define DEF_USE_HYST       1
 
 #ifndef IPV6_ADDR_SITELOCAL
 #define IPV6_ADDR_SITELOCAL    0x0040U
@@ -60,8 +68,6 @@ struct interface
 
 #endif
 
-#define DEFAULT_IF_CONFIG_NAME "default_ifcfg"
-
 struct olsr_msg_params
 {
   float                    emission_interval;
@@ -70,7 +76,6 @@ struct olsr_msg_params
 
 struct if_config_options
 {
-  char                     *name;
   union olsr_ip_addr       ipv4_broadcast;
   int                      ipv6_addrtype;
   union olsr_ip_addr       ipv6_multi_site;
@@ -82,12 +87,14 @@ struct if_config_options
   struct if_config_options *next;
 };
 
+
+
 struct olsr_if
 {
   char                     *name;
   char                     *config;
-  int                      configured;
   int                      index;
+  int                      configured;
   struct interface         *interf;
   struct if_config_options *cnf;
   struct olsr_if           *next;
@@ -143,7 +150,6 @@ struct olsrd_config
   struct hna6_entry        *hna6_entries;
   struct olsr_if           *interfaces;
   olsr_u16_t               ifcnt;
-  struct if_config_options *if_options;
 };
 
 
@@ -154,9 +160,6 @@ 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 *);
 
@@ -166,4 +169,10 @@ olsrd_print_cnf(struct olsrd_config *);
 int
 olsrd_write_cnf(struct olsrd_config *, char *);
 
+struct if_config_options *
+get_default_if_config(void);
+
+struct olsrd_config *
+olsrd_get_default_cnf(void);
+
 #endif
index db4e383..c0acdb5 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr_protocol.h,v 1.6 2004/11/01 19:27:10 tlopatic Exp $
+ * $Id: olsr_protocol.h,v 1.7 2004/11/01 20:13:27 kattemat Exp $
  *
  */
 
@@ -44,6 +44,7 @@
 /* types */
 #include <sys/types.h>
 
+
 #ifdef linux
 
 typedef u_int8_t        olsr_u8_t;