main: replace random() by our own function
authorFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 26 Feb 2015 00:10:52 +0000 (01:10 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 26 Feb 2015 10:27:56 +0000 (11:27 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/main.c
src/olsr.c
src/scheduler.c

index 7b31aee..5b93ae1 100644 (file)
@@ -62,6 +62,7 @@
 #include "mpr_selector_set.h"
 #include "gateway.h"
 #include "olsr_niit.h"
+#include "olsr_random.h"
 
 #ifdef __linux__
 #include <linux/types.h>
@@ -283,28 +284,6 @@ olsrmain_load_config(char *file) {
   return 0;
 }
 
-static void initRandom(void) {
-  unsigned int seed = (unsigned int)time(NULL);
-
-#ifndef _WIN32
-  int randomFile;
-
-  randomFile = open("/dev/urandom", O_RDONLY);
-  if (randomFile == -1) {
-    randomFile = open("/dev/random", O_RDONLY);
-  }
-
-  if (randomFile != -1) {
-    if (read(randomFile, &seed, sizeof(seed)) != sizeof(seed)) {
-      ; /* to fix an 'unused result' compiler warning */
-    }
-    close(randomFile);
-  }
-#endif /* _WIN32 */
-
-  srandom(seed);
-}
-
 /**
  * Main entrypoint
  */
@@ -372,7 +351,7 @@ int main(int argc, char *argv[]) {
   olsr_openlog("olsrd");
 
   /* setup random seed */
-  initRandom();
+  olsr_init_random();
 
   /* Init widely used statics */
   memset(&all_zero, 0, sizeof(union olsr_ip_addr));
index b158531..4ced580 100644 (file)
@@ -66,6 +66,7 @@
 #include "lq_plugin.h"
 #include "gateway.h"
 #include "duplicate_handler.h"
+#include "olsr_random.h"
 
 #include <stdarg.h>
 #include <signal.h>
@@ -127,7 +128,7 @@ union olsr_ip_addr all_zero;
 void
 init_msg_seqno(void)
 {
-  message_seqno = random() & 0xFFFF;
+  message_seqno = olsr_random() & 0xFFFF;
 }
 
 /**
@@ -413,7 +414,7 @@ void
 set_buffer_timer(struct interface_olsr *ifn)
 {
   /* Set timer */
-  ifn->fwdtimer = GET_TIMESTAMP(random() * olsr_cnf->max_jitter * MSEC_PER_SEC / RAND_MAX);
+  ifn->fwdtimer = GET_TIMESTAMP(olsr_random() * olsr_cnf->max_jitter * MSEC_PER_SEC / OLSR_RANDOM_MAX);
 }
 
 void
index b581231..dc979ce 100644 (file)
@@ -46,6 +46,7 @@
 #include "olsr_cookie.h"
 #include "net_os.h"
 #include "mpr_selector_set.h"
+#include "olsr_random.h"
 
 #include <sys/times.h>
 
@@ -626,7 +627,7 @@ walk_timers(uint32_t * last_run)
            */
           if (timer->timer_period) {
             /* For periodical timers, rehash the random number and restart */
-            timer->timer_random = random();
+            timer->timer_random = olsr_random();
             olsr_change_timer(timer, timer->timer_period, timer->timer_jitter_pct, OLSR_TIMER_PERIODIC);
           } else {
             /* Singleshot timers are stopped */
@@ -790,7 +791,7 @@ olsr_start_timer(unsigned int rel_time,
    * Compute random numbers only once.
    */
   if (!timer->timer_random) {
-    timer->timer_random = random();
+    timer->timer_random = olsr_random();
   }
 
   /* Fill entry */