linux/net/ipv6
Kristian Slavov 1d1428045c [IPV6]: Fix address deletion
If you add more than one IPv6 address belonging to the same prefix and 
delete the address that was last added, routing table entry for that 
prefix is also deleted.
Tested on 2.6.14.4

To reproduce:
ip addr add 3ffe::1/64 dev eth0
ip addr add 3ffe::2/64 dev eth0
/* wait DAD */
sleep 1
ip addr del 3ffe::2/64 dev eth0
ip -6 route

(route to 3ffe::/64 should be gone)

In ipv6_del_addr(), if ifa == ifp, we set ifa->if_next to NULL, and later 
assign ifap = &ifa->if_next, effectively terminating the for-loop.
This prevents us from checking if there are other addresses using the same 
prefix that are valid, and thus resulting in deletion of the prefix.
This applies only if the first entry in idev->addr_list is the address to 
be deleted.

Signed-off-by: Kristian Slavov <kristian.slavov@nomadiclab.com>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-12-21 18:47:24 -08:00
..
netfilter [NETFILTER]: Fix incorrect dependency for IP6_NF_TARGET_NFQUEUE 2005-12-19 13:53:26 -08:00
addrconf.c [IPV6]: Fix address deletion 2005-12-21 18:47:24 -08:00
af_inet6.c [IPV6]: Load protocol module dynamically. 2005-12-02 20:56:57 -08:00
ah6.c [CRYPTO]: crypto_free_tfm() callers no longer need to check for NULL 2005-09-01 17:44:29 -07:00
anycast.c
datagram.c [IPV6]: Fix calculation of AH length during filling ancillary data. 2005-11-20 12:21:59 +09:00
esp6.c [IPv6] IPsec: fix pmtu calculation of esp 2005-12-08 23:11:42 -08:00
exthdrs_core.c
exthdrs.c [IPV6]: Fix sending extension headers before and including routing header. 2005-11-20 12:23:18 +09:00
icmp.c [NET]: Add const markers to various variables. 2005-11-29 16:21:38 -08:00
inet6_hashtables.c
ip6_fib.c [IPV6]: Put addr_diff() into common header for future use. 2005-11-08 09:37:56 -08:00
ip6_flowlabel.c [IPV6]: Fix sending extension headers before and including routing header. 2005-11-20 12:23:18 +09:00
ip6_input.c [NETFILTER]: Add nf_conntrack subsystem. 2005-11-09 16:38:16 -08:00
ip6_output.c [IPV6]: make two functions static 2005-11-29 16:28:56 -08:00
ip6_tunnel.c [IPV6]: ip6ip6_lock is not unlocked in error path. 2005-11-09 13:08:29 -08:00
ipcomp6.c [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
ipv6_sockglue.c [IPV6]: make two functions static 2005-11-29 16:28:56 -08:00
ipv6_syms.c [IPV6]: Make ipv6_addr_type() more generic so that we can use it for source address selection. 2005-11-08 09:38:12 -08:00
Kconfig
Makefile
mcast.c [IGMP]: workaround for IGMP v1/v2 bug 2005-12-02 20:32:59 -08:00
ndisc.c [IPV6]: Fix NS handing for proxy/anycast address 2005-10-05 12:11:41 -07:00
netfilter.c
proc.c [NET]: Wider use of for_each_*cpu() 2005-10-25 23:54:01 -02:00
protocol.c
raw.c Merge git://git.skbuff.net/gitroot/yoshfuji/linux-2.6.14+advapi-fix/ 2005-11-20 20:52:16 -08:00
reassembly.c [IPV4,IPV6]: replace handmade list with hlist in IPv{4,6} reassembly 2005-11-16 12:55:37 -08:00
route.c [IPV6]: Fix route lifetime. 2005-12-19 14:02:45 -08:00
sit.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
sysctl_net_ipv6.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
tcp_ipv6.c [TCPv6]: Fix skb leak 2005-12-12 14:38:10 -08:00
udp.c Merge git://git.skbuff.net/gitroot/yoshfuji/linux-2.6.14+advapi-fix/ 2005-11-20 20:52:16 -08:00
xfrm6_input.c
xfrm6_output.c
xfrm6_policy.c [XFRM]: Handle DCCP in xfrm{4,6}_decode_session 2005-12-19 14:03:46 -08:00
xfrm6_state.c
xfrm6_tunnel.c [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers 2005-08-29 16:11:18 -07:00