Added randomize code for link calculation and new log bit for link calculation
authorAndreas Tonnesen <andreto@olsr.org>
Tue, 31 May 2005 08:55:23 +0000 (08:55 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Tue, 31 May 2005 08:55:23 +0000 (08:55 +0000)
src/olsr_switch/link_rules.c
src/olsr_switch/main.c
src/olsr_switch/ohs_cmd.c
src/olsr_switch/olsr_host_switch.h

index ff759b6..2be6ee3 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: link_rules.c,v 1.3 2005/05/31 06:52:28 kattemat Exp $
+ * $Id: link_rules.c,v 1.4 2005/05/31 08:55:22 kattemat Exp $
  */
 
 #include "link_rules.h"
 #include "olsr_host_switch.h"
 #include <string.h>
 #include <stdlib.h>
+#include <stdio.h>
 
 int
 ohs_check_link(struct ohs_connection *oc, union olsr_ip_addr *dst)
@@ -53,7 +54,32 @@ ohs_check_link(struct ohs_connection *oc, union olsr_ip_addr *dst)
     {
       if(COMP_IP(&links->dst, dst))
        {
-         return 0;
+          int r;
+
+          if(links->quality == 0)
+            {
+              if(logbits & LOG_LINK)
+                printf("%s -> %s Q: %d\n", 
+                   olsr_ip_to_string(&oc->ip_addr),
+                   olsr_ip_to_string(dst),
+                   links->quality);
+
+              return 0;
+            }
+
+          r = 1 + (int)((100.0*rand())/(RAND_MAX + 1.0));
+
+          if(logbits & LOG_LINK)
+            printf("%s -> %s Q: %d R: %d\n", 
+                   olsr_ip_to_string(&oc->ip_addr),
+                   olsr_ip_to_string(dst),
+                   links->quality, r);
+
+          /* Random - based on quality */
+          if(links->quality > r)
+            return 0;
+          else
+            return 1;
        }
 
       links = links->next;
index 6cdfd10..1ce5c4f 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: main.c,v 1.6 2005/05/31 06:52:28 kattemat Exp $
+ * $Id: main.c,v 1.7 2005/05/31 08:55:23 kattemat Exp $
  */
 
 /* olsrd host-switch daemon */
@@ -63,6 +63,7 @@ olsr_shutdown(int);
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#include <time.h>
 
 static int srv_socket;
 
@@ -423,6 +424,8 @@ main(int argc, char *argv[])
   ip_version = AF_INET;
   ipsize = 4;
 
+  srand((unsigned int)time(NULL));
+
   ohs_init_connect_sockets();
 #ifdef WIN32
   SetConsoleCtrlHandler(SignalHandler, OLSR_TRUE);
index b8ea2b1..afa17e2 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ohs_cmd.c,v 1.6 2005/05/31 07:34:18 kattemat Exp $
+ * $Id: ohs_cmd.c,v 1.7 2005/05/31 08:55:23 kattemat Exp $
  */
 
 #include "olsr_host_switch.h"
@@ -285,6 +285,8 @@ ohs_cmd_log(FILE *handle, char *args)
            new_bit = LOG_CONNECT;
          else if(!strncmp(&args[set ? 4 : 6], " FOR", strlen(" FOR")))
            new_bit = LOG_CONNECT;
+         else if(!strncmp(&args[set ? 4 : 6], " LIN", strlen(" LIN")))
+           new_bit = LOG_LINK;
          
          if(!new_bit)
            goto print_usage;
@@ -313,13 +315,15 @@ ohs_cmd_log(FILE *handle, char *args)
        printf("CONNECT ");
       if(logbits & LOG_FORWARD)
        printf("FORWARD ");
+      if(logbits & LOG_LINK)
+       printf("LINK ");
 
       printf("\n");
     }
   return 1;
 
  print_usage:
-  printf("Usage: log <[set|unset] [CONNECT|FORWARD]>\n");
+  printf("Usage: log <[set|unset] [CONNECT|FORWARD|LINK]>\n");
   return 0;
 
 }
index 259c394..6348279 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsr_host_switch.h,v 1.5 2005/05/31 06:52:28 kattemat Exp $
+ * $Id: olsr_host_switch.h,v 1.6 2005/05/31 08:55:23 kattemat Exp $
  */
 
 #ifndef _OLSR_HOST_SWITCH
@@ -81,7 +81,8 @@ extern struct ohs_connection *ohs_conns;
 
 #define LOG_DEFAULT 0x0
 #define LOG_FORWARD 0x1
-#define LOG_CONNECT 0x3
+#define LOG_CONNECT 0x2
+#define LOG_LINK    0x4
 
 #ifdef WIN32
 int __stdcall