From d85a18752f5af273532efc09dfada2256cfade83 Mon Sep 17 00:00:00 2001 From: goldsimon Date: Sun, 10 Jan 2010 10:47:27 +0000 Subject: [PATCH] patch #6463 (IGMP - Adding Random Delay): added define LWIP_RAND() for lwip-wide randomization (to be defined in cc.h) --- CHANGELOG | 4 ++++ src/core/init.c | 5 ++++- src/core/ipv4/igmp.c | 5 +---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index dfd75e38..b2298bf8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,6 +19,10 @@ HISTORY ++ New features: + 2010-01-10: Simon Goldschmidt + * init.c, igmp.c: patch #6463 (IGMP - Adding Random Delay): added define + LWIP_RAND() for lwip-wide randomization (to be defined in cc.h) + 2009-12-31: Simon Goldschmidt * tcpip.c, init.c, memp.c, sys.c, memp_std.h, sys.h, tcpip.h added timers.c/.h: Separated timer implementation from semaphore/mbox diff --git a/src/core/init.c b/src/core/init.c index b65d656e..83ed331c 100644 --- a/src/core/init.c +++ b/src/core/init.c @@ -145,7 +145,7 @@ #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h" #endif /* There must be sufficient timeouts, taking into account requirements of the subsystems. */ -#if ((NO_SYS==0) && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT))) +#if (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT)) #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts" #endif #if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS)) @@ -172,6 +172,9 @@ #if !LWIP_ETHERNET && (LWIP_ARP || PPPOE_SUPPORT) #error "LWIP_ETHERNET needs to be turned on for LWIP_ARP or PPPOE_SUPPORT" #endif +#ifndef LWIP_RAND + #error "LWIP_RAND() needs to be defined to a random-function returning an u32_t random value" +#endif /* Compile-time checks for deprecated options. diff --git a/src/core/ipv4/igmp.c b/src/core/ipv4/igmp.c index 7c07bc46..14b0e2bc 100644 --- a/src/core/ipv4/igmp.c +++ b/src/core/ipv4/igmp.c @@ -641,10 +641,7 @@ igmp_timeout(struct igmp_group *group) void igmp_start_timer(struct igmp_group *group, u8_t max_time) { - /** - * @todo Important !! this should be random 0 -> max_time. Find out how to do this - */ - group->timer = max_time; + group->timer = LWIP_RAND() % max_time; } /**