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 [IPV6]: V6 route events reported with wrong netlink PID and seq number 2005-06-21 13:51:04 -07:00
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 [SELINUX]: Fix ipv6_skip_exthdr() invocation causing OOPS. 2005-04-24 20:16:19 -07:00
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 [INET6_HASHTABLES]: Move inet6_lookup functions to net/ipv6/inet6_hashtables.c 2005-08-29 15:57:29 -07:00
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 [NET]: Make ipip/ip6_tunnel independant of XFRM 2005-07-19 14:03:34 -07:00
Makefile [INET6_HASHTABLES]: Move inet6_lookup functions to net/ipv6/inet6_hashtables.c 2005-08-29 15:57:29 -07:00
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 [NET]: Make NETDEBUG pure printk wrappers 2005-08-29 15:56:08 -07:00
proc.c [NET]: Wider use of for_each_*cpu() 2005-10-25 23:54:01 -02:00
protocol.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
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 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfrm6_output.c [IPV6]: Fix xfrm tunnel oops with large packets 2005-05-23 13:11:07 -07:00
xfrm6_policy.c [XFRM]: Handle DCCP in xfrm{4,6}_decode_session 2005-12-19 14:03:46 -08:00
xfrm6_state.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfrm6_tunnel.c [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers 2005-08-29 16:11:18 -07:00