Use HNA routing table with ETX. Support "<?lua= ... ?>" in TAS. Let
authorThomas Lopatic <thomas@lopatic.de>
Tue, 15 Nov 2005 23:46:20 +0000 (23:46 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Tue, 15 Nov 2005 23:46:20 +0000 (23:46 +0000)
users override the minimal HELLO validity time. Secure session cookies
in TAS.

lib/tas/src/glua.c
lib/tas/src/os_unix.c
src/cfgparser/olsrd_conf.c
src/lq_route.c

index 9a56a84..52b7a9d 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: glua.c,v 1.2 2005/11/10 19:50:42 kattemat Exp $
+ * $Id: glua.c,v 1.3 2005/11/15 23:46:19 tlopatic Exp $
  */
 
 #include "lua/lua.h"
@@ -177,20 +177,35 @@ int lspToLua(const char *rootDir, const char *lspFileName,
       if (i == lspLen)
         break;
 
-      i += 5;
-      start = i;
+      if (buff[i + 5] == '=')
+      {
+        i += 6;
+        code = 2;
+      }
 
-      code = 1;
+      else
+      {
+        i += 5;
+        code = 1;
+      }
+
+      start = i;
 
       continue;
     }
 
-    if (code == 1 && (i == lspLen || strncmp((char *)(buff + i), "?>", 2) == 0))
+    if (code > 0 && (i == lspLen || strncmp((char *)(buff + i), "?>", 2) == 0))
     {
+      if (code > 1)
+        fprintf(file, "tas.write(");
+
       for (k = start; k < i; k++)
         if (buff[k] != 13)
           fputc(buff[k], file);
 
+      if (code > 1)
+        fputc(')', file);
+
       fputc('\n', file);
 
       if (i == lspLen)
index 9d275ac..3adeb92 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: os_unix.c,v 1.4 2005/11/10 19:50:42 kattemat Exp $
+ * $Id: os_unix.c,v 1.5 2005/11/15 23:46:20 tlopatic Exp $
  */
 
 #if defined linux
 
 static int mainSocket;
 
-// XXX - insecure
-
 void getRandomBytes(unsigned char *buff, int len)
 {
+  int file;
+  int readLen;
+
   memset(buff, 0, len);
 
-  buff[0] = (unsigned char)getpid();
+  file = open("/dev/random", O_RDONLY);
+
+  if (file < 0)
+  {
+    fprintf(stderr, "warning: cannot open /dev/random\n");
+    return;
+  }
+
+  while (len > 0)
+  {
+    readLen = read(file, buff, len);
+
+    if (readLen < 0)
+    {
+      fprintf(stderr, "warning: cannot read from /dev/random\n");
+      close(file);
+      return;
+    }
+
+    buff += readLen;
+    len -= readLen;
+  }
+
+  close(file);
 }
 
 int addrLen(int family)
index cf8f124..1d162ce 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_conf.c,v 1.43 2005/10/23 19:01:04 tlopatic Exp $
+ * $Id: olsrd_conf.c,v 1.44 2005/11/15 23:46:20 tlopatic Exp $
  */
 
 
@@ -309,6 +309,16 @@ olsrd_sanity_check_cnf(struct olsrd_config *cnf)
        }
        
       /* HELLO interval */
+
+      if (io->hello_params.validity_time < 0.0)
+      {
+        if (cnf->lq_level == 0)
+          io->hello_params.validity_time = NEIGHB_HOLD_TIME;
+
+        else
+          io->hello_params.validity_time = cnf->lq_wsize * io->hello_params.emission_interval;
+      }
+
       if(io->hello_params.emission_interval < cnf->pollrate ||
         io->hello_params.emission_interval > io->hello_params.validity_time)
        {
@@ -316,20 +326,6 @@ olsrd_sanity_check_cnf(struct olsrd_config *cnf)
          return -1;
        }
 
-      if (cnf->lq_level > 0)
-      {
-        float want = cnf->lq_wsize * io->hello_params.emission_interval;
-
-        if (io->hello_params.validity_time < want)
-        {
-          io->hello_params.validity_time = want;
-
-          fprintf(stderr,
-                  "WARNING: %s HELLO validity time set to %.1f seconds!\n",
-                  in->name, want);
-        }
-      }
-
       /* TC interval */
       if(io->tc_params.emission_interval < cnf->pollrate ||
         io->tc_params.emission_interval > io->tc_params.validity_time)
@@ -495,7 +491,7 @@ get_default_if_config()
   io->ipv6_addrtype = 0; /* global */
 
   io->hello_params.emission_interval = HELLO_INTERVAL;
-  io->hello_params.validity_time = NEIGHB_HOLD_TIME;
+  io->hello_params.validity_time = -1.0;
   io->tc_params.emission_interval = TC_INTERVAL;
   io->tc_params.validity_time = TOP_HOLD_TIME;
   io->mid_params.emission_interval = MID_INTERVAL;
index c249101..2660940 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: lq_route.c,v 1.37 2005/10/23 20:58:14 tlopatic Exp $
+ * $Id: lq_route.c,v 1.38 2005/11/15 23:46:20 tlopatic Exp $
  */
 
 #include "defs.h"
@@ -605,6 +605,10 @@ void olsr_calculate_lq_routing_table(void)
     }
   }
 
+  // save the old HNA routing table
+
+  olsr_move_route_table(hna_routes, old_hna);
+
   // add HNA routes - the set of unprocessed network nodes contains
   // all reachable network nodes
 
@@ -671,7 +675,7 @@ void olsr_calculate_lq_routing_table(void)
 
       // find the correct list
 
-      head_rt = &routingtable[olsr_hashing(&hna->A_network_addr)];
+      head_rt = &hna_routes[olsr_hashing(&hna->A_network_addr)];
 
       // enqueue
 
@@ -690,8 +694,10 @@ void olsr_calculate_lq_routing_table(void)
   // move the route changes into the kernel
 
   olsr_update_kernel_routes();
+  olsr_update_kernel_hna_routes();
 
   // free the saved routing table
 
   olsr_free_routing_table(old_routes);
+  olsr_free_routing_table(old_hna);
 }