Various headerfile inclusion cleanups
[olsrd.git] / src / olsr.c
index d16f213..6fe5130 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsr.c,v 1.32 2004/12/04 17:06:57 tlopatic Exp $
+ * $Id: olsr.c,v 1.42 2005/02/27 18:39:43 kattemat Exp $
  */
 
 /**
 #include "lq_mpr.h"
 #include "lq_route.h"
 #include "scheduler.h"
-#include "generate_msg.h"
 #include "apm.h"
 #include "misc.h"
+#include "neighbor_table.h"
+#include "log.h"
 
 #include <stdarg.h>
 #include <signal.h>
 
 
 /**
- *Checks if a timer has timed out.
+ * Process changes functions
  */
 
+struct pcf
+{
+  int (*function)(int, int, int);
+  struct pcf *next;
+};
 
-/**
- *Initiates a "timer", wich is a timeval structure,
- *with the value given in time_value.
- *@param time_value the value to initialize the timer with
- *@param hold_timer the timer itself
- *@return nada
- */
-inline void
-olsr_init_timer(olsr_u32_t time_value, struct timeval *hold_timer)
-{ 
-  olsr_u16_t  time_value_sec;
-  olsr_u16_t  time_value_msec;
-
-  time_value_sec = time_value/1000;
-  time_value_msec = time_value-(time_value_sec*1000);
-
-  hold_timer->tv_sec = time_value_sec;
-  hold_timer->tv_usec = time_value_msec*1000;   
-}
-
-
-
-
-
-/**
- *Generaties a timestamp a certain number of milliseconds
- *into the future.
- *
- *@param time_value how many milliseconds from now
- *@param hold_timer the timer itself
- *@return nada
- */
-inline void
-olsr_get_timestamp(olsr_u32_t delay, struct timeval *hold_timer)
-{ 
-  hold_timer->tv_sec = now.tv_sec + delay / 1000;
-  hold_timer->tv_usec = now.tv_usec + (delay % 1000) * 1000;
-  
-  if (hold_timer->tv_usec > 1000000)
-    {
-      hold_timer->tv_sec++;
-      hold_timer->tv_usec -= 1000000;
-    }
-}
-
+static struct pcf *pcf_list;
 
+static olsr_u16_t message_seqno;
 
 /**
  *Initialize the message sequence number as a random value
@@ -141,7 +104,7 @@ register_pcf(int (*f)(int, int, int))
 {
   struct pcf *new_pcf;
 
-  olsr_printf(1, "Registering pcf function\n");
+  OLSR_PRINTF(1, "Registering pcf function\n")
 
   new_pcf = olsr_malloc(sizeof(struct pcf), "New PCF");
 
@@ -159,22 +122,19 @@ register_pcf(int (*f)(int, int, int))
  *update the routing table.
  *@return 0
  */
-inline void
+void
 olsr_process_changes()
 {
 
   struct pcf *tmp_pc_list;
-  static char title[100] = "";
-  char tmp_title[100];
-  int len, i;
 
 #ifdef DEBUG
   if(changes_neighborhood)
-    olsr_printf(3, "CHANGES IN NEIGHBORHOOD\n");
+    OLSR_PRINTF(3, "CHANGES IN NEIGHBORHOOD\n")
   if(changes_topology)
-    olsr_printf(3, "CHANGES IN TOPOLOGY\n");
+    OLSR_PRINTF(3, "CHANGES IN TOPOLOGY\n")
   if(changes_hna)
-    olsr_printf(3, "CHANGES IN HNA\n");  
+    OLSR_PRINTF(3, "CHANGES IN HNA\n")
 #endif
   
   if(!changes_neighborhood &&
@@ -185,21 +145,7 @@ olsr_process_changes()
   if (olsr_cnf->debug_level > 0 && olsr_cnf->clear_screen && isatty(1))
   {
       clear_console();
-
-      if (title[0] == 0)
-      {
-        len = sprintf(tmp_title, "*** %s (%s) ***\n",
-                      SOFTWARE_VERSION, __DATE__);
-
-        len = (74 - len) / 2;
-        
-        for (i = 0; i < len; i++)
-          title[i] = ' ';
-
-        strcpy(title + i, tmp_title);
-      }
-
-      printf(title);
+      printf("%s", OLSRD_VERSION_DATE);
   }
 
   if (changes_neighborhood)
@@ -218,14 +164,13 @@ olsr_process_changes()
       if (olsr_cnf->lq_level < 2)
         {
           olsr_calculate_routing_table();
+          olsr_calculate_hna_routes();
         }
 
       else
         {
           olsr_calculate_lq_routing_table();
         }
-
-      olsr_calculate_hna_routes();
     }
   
   else if (changes_topology)
@@ -235,41 +180,46 @@ olsr_process_changes()
       if (olsr_cnf->lq_level < 2)
         {
           olsr_calculate_routing_table();
+          olsr_calculate_hna_routes();
         }
 
       else
         {
           olsr_calculate_lq_routing_table();
         }
-
-      olsr_calculate_hna_routes();
     }
 
   else if (changes_hna)
     {
-      /* Update HNA routes */
-      olsr_calculate_hna_routes();
+      /* update HNA routes */
+
+      if (olsr_cnf->lq_level < 2)
+        {
+          olsr_calculate_hna_routes();
+        }
+
+      else
+        {
+          olsr_calculate_lq_routing_table();
+        }
     }
   
   if (olsr_cnf->debug_level > 0)
-    {
-
-      if (olsr_cnf->debug_level > 1)
-        olsr_print_tc_table();
-
+    {      
       if (olsr_cnf->debug_level > 2) 
         {
           olsr_print_mid_set();
-
+         
           if (olsr_cnf->debug_level > 3)
             {
               olsr_print_duplicate_table();
               olsr_print_hna_set();
             }
         }
-
+      
       olsr_print_link_set();
       olsr_print_neighbor_table();
+      olsr_print_tc_table();
     }
 
   for(tmp_pc_list = pcf_list; 
@@ -369,7 +319,7 @@ olsr_forward_message(union olsr_message *m,
   if(!olsr_check_dup_table_fwd(originator, seqno, &in_if->ip_addr))
     {
 #ifdef DEBUG
-      olsr_printf(3, "Message already forwarded!\n");
+      OLSR_PRINTF(3, "Message already forwarded!\n")
 #endif
       return 0;
     }
@@ -393,7 +343,7 @@ olsr_forward_message(union olsr_message *m,
   if(olsr_lookup_mprs_set(src) == NULL)
     {
 #ifdef DEBUG
-      olsr_printf(5, "Forward - sender %s not MPR selector\n", olsr_ip_to_string(src));
+      OLSR_PRINTF(5, "Forward - sender %s not MPR selector\n", olsr_ip_to_string(src))
 #endif
       return 0;
     }
@@ -440,7 +390,7 @@ olsr_forward_message(union olsr_message *m,
              
              if(net_outbuffer_push(ifn, (olsr_u8_t *)m, msgsize) != msgsize)
                {
-                 olsr_printf(1, "Received message to big to be forwarded in %s(%d bytes)!", ifn->int_name, msgsize);
+                 OLSR_PRINTF(1, "Received message to big to be forwarded in %s(%d bytes)!", ifn->int_name, msgsize)
                  olsr_syslog(OLSR_LOG_ERR, "Received message to big to be forwarded on %s(%d bytes)!", ifn->int_name, msgsize);
                }
 
@@ -454,7 +404,7 @@ olsr_forward_message(union olsr_message *m,
          
          if(net_outbuffer_push(ifn, (olsr_u8_t *)m, msgsize) != msgsize)
            {
-             olsr_printf(1, "Received message to big to be forwarded in %s(%d bytes)!", ifn->int_name, msgsize);
+             OLSR_PRINTF(1, "Received message to big to be forwarded in %s(%d bytes)!", ifn->int_name, msgsize)
              olsr_syslog(OLSR_LOG_ERR, "Received message to big to be forwarded on %s(%d bytes)!", ifn->int_name, msgsize);
            }
        }
@@ -469,15 +419,12 @@ void
 set_buffer_timer(struct interface *ifn)
 {
   float jitter;
-  struct timeval jittertimer;
       
   /* Set timer */
   jitter = (float) random()/RAND_MAX;
   jitter *= max_jitter;
 
-  olsr_init_timer((olsr_u32_t) (jitter*1000), &jittertimer);
-
-  timeradd(&now, &jittertimer, &fwdtimer[ifn->if_nr]);
+  fwdtimer[ifn->if_nr] = GET_TIMESTAMP(jitter*1000);
 
 }
 
@@ -487,7 +434,8 @@ void
 olsr_init_willingness()
 {
   if(olsr_cnf->willingness_auto)
-    olsr_register_scheduler_event(&olsr_update_willingness, NULL, will_int, will_int, NULL);
+    olsr_register_scheduler_event(&olsr_update_willingness, 
+                                 NULL, will_int, will_int, NULL);
 }
 
 void
@@ -502,7 +450,7 @@ olsr_update_willingness(void *foo)
 
   if(tmp_will != olsr_cnf->willingness)
     {
-      olsr_printf(1, "Local willingness updated: old %d new %d\n", tmp_will, olsr_cnf->willingness);
+      OLSR_PRINTF(1, "Local willingness updated: old %d new %d\n", tmp_will, olsr_cnf->willingness)
     }
 }
 
@@ -524,8 +472,6 @@ olsr_calculate_willingness()
   if(!olsr_cnf->willingness_auto)
     return olsr_cnf->willingness;
 
-#warning CHANGES IN THE apm INTERFACE(0.4.8)!
-
   if(apm_read(&ainfo) < 1)
     return WILL_DEFAULT;
 
@@ -556,7 +502,7 @@ olsr_calculate_willingness()
 void
 olsr_exit(const char *msg, int val)
 {
-  olsr_printf(1, "OLSR EXIT: %s\n", msg);
+  OLSR_PRINTF(1, "OLSR EXIT: %s\n", msg)
   olsr_syslog(OLSR_LOG_ERR, "olsrd exit: %s\n", msg);
   fflush(stdout);
   exit_value = val;
@@ -581,7 +527,7 @@ olsr_malloc(size_t size, const char *id)
 
   if((ptr = malloc(size)) == 0) 
     {
-      olsr_printf(1, "OUT OF MEMORY: %s\n", strerror(errno));
+      OLSR_PRINTF(1, "OUT OF MEMORY: %s\n", strerror(errno))
       olsr_syslog(OLSR_LOG_ERR, "olsrd: out of memory!: %m\n");
       olsr_exit((char *)id, EXIT_FAILURE);
     }
@@ -600,11 +546,11 @@ olsr_printf(int loglevel, char *format, ...)
 {
   va_list arglist;
 
-  if(loglevel <= olsr_cnf->debug_level)
+  if((loglevel <= olsr_cnf->debug_level) && debug_handle)
     {
       va_start(arglist, format);
       
-      vprintf(format, arglist);
+      vfprintf(debug_handle, format, arglist);
       
       va_end(arglist);
     }