From 0a71f8f76f975b4c5937cbe476a7edd722c3e0ba Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 28 Jun 2014 09:14:44 +0200 Subject: [PATCH] For DOV: LCR random number generator Generate random number from jitter of all messages inside LCR. --- message.c | 9 +++++++++ message.h | 1 + 2 files changed, 10 insertions(+) diff --git a/message.c b/message.c index 1e4d37d..cfda36b 100644 --- a/message.c +++ b/message.c @@ -30,10 +30,19 @@ void cleanup_message(void) del_work(&message_work); } +unsigned int lcr_random = 0; + /* creates a new message with the given attributes. the message must be filled then. after filling, the message_put must be called */ struct lcr_msg *message_create(int id_from, int id_to, int flow, int type) { struct lcr_msg *message; + struct timeval now_tv; + struct timezone now_tz; + + gettimeofday(&now_tv, &now_tz); + lcr_random = (lcr_random << 1) | (lcr_random >> 31); + lcr_random ^= now_tv.tv_sec; + lcr_random ^= now_tv.tv_usec; message = (struct lcr_msg *)MALLOC(sizeof(struct lcr_msg)); if (!message) diff --git a/message.h b/message.h index 8a8bc44..38ee5da 100644 --- a/message.h +++ b/message.h @@ -489,6 +489,7 @@ enum { /* messages between entities */ }; +extern unsigned int lcr_random; struct lcr_msg *message_create(int id_from, int id_to, int flow, int type); #define message_put(m) _message_put(m, __FILE__, __LINE__) void _message_put(struct lcr_msg *message, const char *file, int line); -- 2.13.6