ipv6:remove ipv6 global address after the interface is down

From: zhuyj
Date: Tue Apr 01 2014 - 05:30:38 EST


This is a multi-part message in MIME format. Hi, Paul

With kernel 2.6.34.x, the following problem will appear.

TargetA ------------------------- TargetB
3000::1/64 3000::2/64

TargetA
- bring the interface down by doing an "ifconfig eth1 down"
- bring the interface back up by doing an "ifconfig eth1 up"

TargetB
- ping6 3000::1
ping6 succeeds the first time
- after bringing the interface on TargetA down and then back up, ping6 to the interface fails.

With the latest mainline kernel(3.4+), this problem is resolved. When eth1 is down, ipv6 address and route item are removed.
But with kernel 2.6.34.x, when eth1 is down, ipv6 address remains while route item is removed.

So when eth1 is up and assign the previous ipv6 address, with 2.6.34.x, some errors will appear. But with latest mainline kernel, it can work well.

So I made a patch to fix this problem in kernel 2.6.34.x. Please merge this to kernel2.6.34.x.

Thanks a lot.
Zhu Yanjun