]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
IPV6 autoconfiguration fix, fwd from Brix, ack from DaveM
authorChris Wright <chrisw@sous-sol.org>
Wed, 15 Feb 2006 23:07:41 +0000 (15:07 -0800)
committerChris Wright <chrisw@sous-sol.org>
Wed, 15 Feb 2006 23:07:41 +0000 (15:07 -0800)
queue/address-autoconfiguration-does-not-work-after-device-down-up-cycle.patch [new file with mode: 0644]
queue/series

diff --git a/queue/address-autoconfiguration-does-not-work-after-device-down-up-cycle.patch b/queue/address-autoconfiguration-does-not-work-after-device-down-up-cycle.patch
new file mode 100644 (file)
index 0000000..fe032a0
--- /dev/null
@@ -0,0 +1,40 @@
+From stable-bounces@linux.kernel.org  Wed Feb 15 14:45:50 2006
+Date: Wed, 15 Feb 2006 23:42:14 +0100
+From: Henrik Brix Andersen <brix@gentoo.org>
+To: stable@kernel.org
+Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>, dsd@gentoo.org, Juha-Matti Tapio <jmtapio@verkkotelakka.net>, "David S. Miller" <davem@davemloft.net>
+Subject: [IPV6]: Address autoconfiguration does not work after device down/up cycle
+
+From: Kristian Slavov <kristian.slavov@nomadiclab.com>
+
+If you set network interface down and up again, the IPv6 address
+autoconfiguration does not work. 'ip addr' shows that the link-local
+address is in tentative state. We don't even react to periodical router
+advertisements.
+
+During NETDEV_DOWN we clear IF_READY, and we don't set it back in
+NETDEV_UP. While starting to perform DAD on the link-local address, we
+notice that the device is not in IF_READY, and we abort autoconfiguration
+process (which would eventually send router solicitations).
+
+Acked-by: Juha-Matti Tapio <jmtapio@verkkotelakka.net>
+Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ net/ipv6/addrconf.c |    3 +++
+ 1 files changed, 3 insertions(+)
+
+--- linux-2.6.15.4.orig/net/ipv6/addrconf.c
++++ linux-2.6.15.4/net/ipv6/addrconf.c
+@@ -2164,6 +2164,9 @@ static int addrconf_notify(struct notifi
+                                       dev->name);
+                               break;
+                       }
++
++                      if (idev)
++                              idev->if_flags |= IF_READY;
+               } else {
+                       if (!netif_carrier_ok(dev)) {
+                               /* device is still not ready. */
index 9f4e8a59c2d63c223d45f06f84acb611e172e023..a4a48e5add4c74a9d3bb36ced7c63ce46b815068 100644 (file)
@@ -6,3 +6,4 @@ i386-move-phys_proc_id-early-intel-workaround-to-correct-function.patch
 hugetlbfs-mmap-enomem-failure.patch
 reiserfs-disable-automatic-enabling-of-reiserfs-inode-attributes.patch
 revert-skb_copy_datagram_iovec-recursion-elimination.patch
+address-autoconfiguration-does-not-work-after-device-down-up-cycle.patch