]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/commitdiff
patch #6463 (IGMP - Adding Random Delay): added define LWIP_RAND() for lwip-wide...
authorgoldsimon <goldsimon>
Sun, 10 Jan 2010 10:47:27 +0000 (10:47 +0000)
committergoldsimon <goldsimon>
Sun, 10 Jan 2010 10:47:27 +0000 (10:47 +0000)
CHANGELOG
src/core/init.c
src/core/ipv4/igmp.c

index dfd75e3804b6682a96fea46556e19f02d163521d..b2298bf8e0ad09e6956aea6285d3411a4b6a2b5d 100644 (file)
--- 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
index b65d656edcedb6b8b4e4e8ca953dc5691ec4e589..83ed331ca02e20aebc6527f3dda6e11383b67392 100644 (file)
   #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))
 #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.
index 7c07bc46575d01869cdd8c5d19388ac4a8b78651..14b0e2bc709d909c5e33549045f8bf88090a05ef 100644 (file)
@@ -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;
 }
 
 /**