linux-2.4.x send too many (more than 3) RS packets.
This fixes the problem.
USAGI Branch: bFIX_2_4_3-20010501a
Reference: RFC2461
6.3.7. Sending Router Solicitations
:
routers or learn prefixes. To obtain Router Advertisements quickly,
a host SHOULD transmit up to MAX_RTR_SOLICITATIONS Router
Solicitation messages each separated by at least
RTR_SOLICITATION_INTERVAL seconds. Router Solicitations may be sent
after any of the following events:
:
10. PROTOCOL CONSTANTS
:
MAX_RTR_SOLICITATIONS 3 transmissions
Index: net/ipv6/addrconf.c
===================================================================
RCS file: /cvsroot/usagi/kernel/linux24/net/ipv6/addrconf.c,v
retrieving revision 1.1.1.4
retrieving revision 1.1.1.4.4.1
diff -u -r1.1.1.4 -r1.1.1.4.4.1
--- net/ipv6/addrconf.c 2001/02/22 12:04:36 1.1.1.4
+++ net/ipv6/addrconf.c 2001/04/30 16:12:59 1.1.1.4.4.1
@@ -22,6 +22,8 @@
* Andi Kleen : kill doube kfree on module
* unload.
* Maciej W. Rozycki : FDDI support
+ * sekiya@USAGI : Don't send too many RS
+ * packets.
*/
#include <linux/config.h>
@@ -1415,7 +1417,7 @@
}
spin_lock(&ifp->lock);
- if (ifp->probes++ <= ifp->idev->cnf.rtr_solicits) {
+ if (ifp->probes++ < ifp->idev->cnf.rtr_solicits) {
struct in6_addr all_routers;
addrconf_mod_timer(ifp, AC_RS,
--
yoshfuji@USAGI Project
|