kill holes in data structures
authorBernd Petrovitsch <bernd@firmix.at>
Wed, 5 Nov 2008 00:11:46 +0000 (01:11 +0100)
committerBernd Petrovitsch <bernd@firmix.at>
Wed, 5 Nov 2008 00:11:46 +0000 (01:11 +0100)
and we add some config file checks

src/cfgparser/oparse.y
src/ipc_frontend.c
src/link_set.h
src/lq_packet.h
src/main.c
src/neighbor_table.h
src/olsr_cfg.h
src/packet.h

index a14e875..b047d05 100644 (file)
@@ -337,6 +337,10 @@ plstmt:     plparam
 
 imaxipc: TOK_MAXIPC TOK_INTEGER
 {
+  if ($2->integer > 255) {
+    fprintf(stderr, "\"MaxConnections\" must be >= 0 and <= 255 (and not %d)\n", $2->integer);
+    YYABORT;
+  }
   olsr_cnf->ipc_connections = $2->integer;
   free($2);
 }
@@ -698,6 +702,10 @@ isetlqmult: TOK_LQ_MULT TOK_DEFAULT TOK_FLOAT
 
 idebug:       TOK_DEBUGLEVEL TOK_INTEGER
 {
+  if ($2->integer > 127) {
+    fprintf(stderr, "\"DebugLevel\" must be >= 0 and <= 127 (and not %d)\n", $2->integer);
+    YYABORT;
+  }
   olsr_cnf->debug_level = $2->integer;
   PARSER_DEBUG_PRINTF("Debug level: %d\n", olsr_cnf->debug_level);
   free($2);
index 932fde0..9236f26 100644 (file)
@@ -73,8 +73,7 @@ WinSockPError(const char *);
  *at every route update. Both delete
  *and add
  */
-struct ipcmsg 
-{
+struct ipcmsg {
   olsr_u8_t          msgtype;
   olsr_u16_t         size;
   olsr_u8_t          metric;
@@ -85,8 +84,7 @@ struct ipcmsg
 };
 
 
-struct ipc_net_msg
-{
+struct ipc_net_msg {
   olsr_u8_t            msgtype;
   olsr_u16_t           size;
   olsr_u8_t            mids; /* No. of extra interfaces */
index e166252..0a236e7 100644 (file)
@@ -70,13 +70,13 @@ struct link_entry {
   /*
    * Hysteresis
    */
+  olsr_bool olsr_seqno_valid;
+  olsr_u16_t olsr_seqno;
   float L_link_quality;
   int L_link_pending;
   clock_t L_LOST_LINK_time;
   struct timer_entry *link_hello_timer;        /* When we should receive a new HELLO */
   olsr_reltime last_htime;
-  olsr_bool olsr_seqno_valid;
-  olsr_u16_t olsr_seqno;
 
   /*
    * packet loss
index f61dffc..d204712 100644 (file)
 
 /* deserialized OLSR header */
 
-struct olsr_common
-{
+struct olsr_common {
   olsr_u8_t          type;
-  olsr_reltime       vtime;
   olsr_u16_t         size;
+  olsr_reltime       vtime;
   union olsr_ip_addr orig;
   olsr_u8_t          ttl;
   olsr_u8_t          hops;
@@ -64,8 +63,7 @@ struct olsr_common
 
 /* serialized IPv4 OLSR header */
 
-struct olsr_header_v4
-{
+struct olsr_header_v4 {
   olsr_u8_t  type;
   olsr_u8_t  vtime;
   olsr_u16_t size;
@@ -77,8 +75,7 @@ struct olsr_header_v4
 
 /* serialized IPv6 OLSR header */
 
-struct olsr_header_v6
-{
+struct olsr_header_v6 {
   olsr_u8_t     type;
   olsr_u8_t     vtime;
   olsr_u16_t    size;
@@ -90,8 +87,7 @@ struct olsr_header_v6
 
 /* deserialized LQ_HELLO */
 
-struct lq_hello_neighbor
-{
+struct lq_hello_neighbor {
   olsr_u8_t                link_type;
   olsr_u8_t                neigh_type;
   union olsr_ip_addr       addr;
@@ -99,8 +95,7 @@ struct lq_hello_neighbor
   olsr_u32_t               linkquality[0];
 };
 
-struct lq_hello_message
-{
+struct lq_hello_message {
   struct olsr_common       comm;
   olsr_reltime             htime;
   olsr_u8_t                will;
@@ -109,23 +104,20 @@ struct lq_hello_message
 
 /* serialized LQ_HELLO */
 
-struct lq_hello_info_header
-{
+struct lq_hello_info_header {
   olsr_u8_t  link_code;
   olsr_u8_t  reserved;
   olsr_u16_t size;
 };
 
-struct lq_hello_header
-{
+struct lq_hello_header {
   olsr_u16_t reserved;
   olsr_u8_t  htime;
   olsr_u8_t  will;
 };
 
 /* deserialized LQ_TC */
-struct lq_tc_message
-{
+struct lq_tc_message {
   struct olsr_common    comm;
   union olsr_ip_addr    from;
   olsr_u16_t            ansn;
@@ -134,8 +126,7 @@ struct lq_tc_message
 
 /* serialized LQ_TC */
 
-struct lq_tc_header
-{
+struct lq_tc_header {
   olsr_u16_t ansn;
   olsr_u8_t lower_border;
   olsr_u8_t upper_border;
index 487e0ae..480eda2 100644 (file)
@@ -659,10 +659,12 @@ olsr_process_arguments(int argc, char *argv[],
      * Enable additional debugging information to be logged.
      */
     if (strcmp(*argv, "-d") == 0) {
+      int val;
       NEXT_ARG;
       CHECK_ARGC;
 
-      sscanf(*argv,"%d", &cnf->debug_level);
+      sscanf(*argv,"%d", &val);
+      cnf->debug_level = val;
       continue;
     }
                
index 9ddecb8..e5b5495 100644 (file)
@@ -62,9 +62,9 @@ struct neighbor_entry
   union olsr_ip_addr           neighbor_main_addr;
   olsr_u8_t                    status;
   olsr_u8_t                    willingness;
-  olsr_bool                    is_mpr;
-  olsr_bool                    was_mpr; /* Used to detect changes in MPR */
-  olsr_bool                    skip;
+  unsigned char                is_mpr:1;
+  unsigned char                was_mpr:1; /* Used to detect changes in MPR */
+  unsigned char                skip:1;
   int                          neighbor_2_nocov;
   int                          linkcount;
   struct neighbor_2_list_entry neighbor_2_list; 
index bdf2f12..b9e867d 100644 (file)
@@ -194,41 +194,42 @@ typedef enum {
 
 struct olsrd_config
 {
-  int                      debug_level;
-  olsr_bool                no_fork;
-  olsr_bool                host_emul;
-  int                      ip_version;
-  olsr_bool                allow_no_interfaces;
+ int                      ip_version;
+  size_t                   ipsize;               /* Size of address */
+  olsr_u8_t                maxplen;              /* maximum prefix len */
+  unsigned char            no_fork:1;
+  unsigned char            host_emul:1;
+  unsigned char            allow_no_interfaces:1;
+  unsigned char            willingness_auto:1;
+  unsigned char            use_hysteresis:1;
+  unsigned char            clear_screen:1;
+  unsigned char            del_gws:1;            /* Delete InternetGWs at startup */
   olsr_u16_t               tos;
   olsr_u8_t                rttable;
   olsr_u8_t                rttable_default;
-  olsr_u8_t                willingness;
-  olsr_bool                willingness_auto;
-  int                      ipc_connections;
-  olsr_bool                use_hysteresis;
+  olsr_u8_t                ipc_connections;
+  olsr_8_t                 debug_level;
   olsr_fib_metric_options  fib_metric;
   struct hyst_param        hysteresis_param;
-  struct plugin_entry      *plugins;
-  struct ip_prefix_list    *hna_entries;
-  struct ip_prefix_list    *ipc_nets;
-  struct olsr_if           *interfaces;
+  struct plugin_entry     *plugins;
+  struct ip_prefix_list   *hna_entries;
+  struct ip_prefix_list   *ipc_nets;
+  struct olsr_if          *interfaces;
+  //float                    pollrate;
   olsr_u32_t               pollrate; /* in microseconds */
   float                    nic_chgs_pollrate;
-  olsr_bool                clear_screen;
   olsr_u8_t                tc_redundancy;
   olsr_u8_t                mpr_coverage;
   olsr_u8_t                lq_level;
   olsr_u8_t                lq_fish;
   float                    lq_dinter;
   float                    lq_aging;
-  char                     *lq_algorithm;
+  char                    *lq_algorithm;
   olsr_u8_t                lq_dlimit;
+  olsr_u8_t                willingness;
 
   /* Stuff set by olsrd */
   olsr_u16_t               system_tick_divider;  /* Tick resolution */
-  olsr_u8_t                maxplen;              /* maximum prefix len */
-  size_t                   ipsize;               /* Size of address */
-  olsr_bool                del_gws;              /* Delete InternetGWs at startup */
   union olsr_ip_addr       main_addr;            /* Main address of this node */
   float                    will_int;
   int                      exit_value;           /* Global return value for process termination */
index b87634a..6c7c122 100644 (file)
@@ -45,8 +45,7 @@
 #include "interfaces.h"
 #include "mantissa.h"
 
-struct hello_neighbor
-{
+struct hello_neighbor {
   olsr_u8_t             status;
   olsr_u8_t             link;
   union olsr_ip_addr    main_address;
@@ -56,8 +55,7 @@ struct hello_neighbor
   olsr_u32_t            linkquality[0];
 };
 
-struct hello_message
-{
+struct hello_message {
   olsr_reltime           vtime;
   olsr_reltime           htime;
   union olsr_ip_addr     source_addr;
@@ -69,15 +67,13 @@ struct hello_message
   
 };
 
-struct tc_mpr_addr
-{
+struct tc_mpr_addr {
   union olsr_ip_addr address;
   struct tc_mpr_addr *next;
   olsr_u32_t         linkquality[0];
 };
 
-struct tc_message
-{
+struct tc_message {
   olsr_reltime        vtime;
   union olsr_ip_addr  source_addr;
   union olsr_ip_addr  originator;