Patch na jądro Linuxa --- autoconfiguracja adresów

Jacek Konieczny jajcus w zeus.polsl.gliwice.pl
Pią, 9 Cze 2000, 20:59:18 MEST


Od dawna denerwował mnie bug w kernelu, który sprawiał, że czasami
znikał adres "all-nodes" (ff02::1, szczególnie na clientach DHCP) 
i przez to nie działała autoconfiguracja adresów.

Jakiś (długi) czas temu opisałem problem Kuzniecowowi, obiecał podesłać
patcha, ale w końcu sam go musiałem zrobić. Jest w załączniku.

Pasuje na 2.2.16, ale i pewnie na wiele starszych.

Pozdrowienia,
        Jacek
-------------- następna część ---------

 This patch fixes problem with disapearing all-nodes (ff02::1) multicast
 address after setting interface down and up. When all-nodes address is not
 present IPv6 address autoconfiguration doesn't work.

 	Jacek Konieczny <jajcus w pld.org.pl>

diff -durN linux-2.2.16.orig/net/ipv6/addrconf.c linux/net/ipv6/addrconf.c
--- linux-2.2.16.orig/net/ipv6/addrconf.c	Tue Jan  4 19:12:27 2000
+++ linux/net/ipv6/addrconf.c	Fri Jun  9 20:37:48 2000
@@ -255,8 +255,6 @@
 		idev = ipv6_add_dev(dev);
 		if (idev == NULL)
 			return NULL;
-		if (dev->flags&IFF_UP)
-			ipv6_mc_up(idev);
 	}
 	return idev;
 }
@@ -1045,6 +1043,8 @@
 		return;
 	}
 
+	ipv6_mc_up(idev);
+		
 	addrconf_lock();
 	ifp = ipv6_add_addr(idev, &addr, IFA_HOST);
 
@@ -1084,6 +1084,8 @@
 	if (idev == NULL)
 		return;
 
+	ipv6_mc_up(idev);
+	
 #ifdef CONFIG_IPV6_EUI64
 	memset(&addr, 0, sizeof(struct in6_addr));
 
@@ -1120,6 +1122,8 @@
 		printk(KERN_DEBUG "init sit: add_dev failed\n");
 		return;
 	}
+
+	ipv6_mc_up(idev);
 
 	sit_add_v4_addrs(idev);
 


Więcej informacji o liście dyskusyjnej 6BONE-PL