fix timing issues on systems where RAND_MAX is not INT32_MAX
authorSebastian Wiedenroth <wiedi@frubar.net>
Mon, 24 Oct 2016 00:38:34 +0000 (00:38 +0000)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 30 Nov 2016 20:54:14 +0000 (21:54 +0100)
Signed-off-by: Sebastian Wiedenroth <wiedi@frubar.net>
src/olsr_switch/link_rules.c
src/scheduler.c

index 6180bb5..1236bc8 100644 (file)
@@ -69,7 +69,7 @@ ohs_check_link(struct ohs_connection *oc, union olsr_ip_addr *dst)
       return 0;
     }
 
-    r = 1 + (int)(100.0 / (RAND_MAX + 1.0) * olsr_random());
+    r = 1 + (int)(100.0 / (OLSR_RANDOM_MAX + 1.0) * olsr_random());
 
     if (logbits & LOG_LINK) {
       struct ipaddr_str addrstr, dststr;
index 367f6ec..1d1aafa 100644 (file)
@@ -614,7 +614,7 @@ calc_jitter(unsigned int rel_time, uint8_t jitter_pct, unsigned int random_val)
    * Play some tricks to avoid overflows with integer arithmetic.
    */
   jitter_time = (jitter_pct * rel_time) / 100;
-  jitter_time = random_val / (1 + RAND_MAX / (jitter_time + 1));
+  jitter_time = random_val / (1 + OLSR_RANDOM_MAX / (jitter_time + 1));
 
   OLSR_PRINTF(3, "TIMER: jitter %u%% rel_time %ums to %ums\n", jitter_pct, rel_time, rel_time - jitter_time);