diff --git a/lib/birdlib.h b/lib/birdlib.h index b57478df..93ac38ef 100644 --- a/lib/birdlib.h +++ b/lib/birdlib.h @@ -63,4 +63,8 @@ void debug(char *msg, ...); /* Printf to debug output */ #define ASSERT(x) do { } while(0) #endif +/* Pseudorandom numbers */ + +u32 random_u32(void); + #endif diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index 51046645..fef1bd76 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -34,6 +34,20 @@ #include "lib/unix.h" +/* + * Random Numbers + */ + +u32 +random_u32(void) +{ + long int rand_low, rand_high; + + rand_low = random(); + rand_high = random(); + return (rand_low & 0xffff) | ((rand_high & 0xffff) << 16); +} + /* * Timers */ @@ -823,6 +837,7 @@ io_init(void) init_list(&global_event_list); krt_io_init(); now = time(NULL); + srandom((int) now); } void