return -ENOENT; 
return -EADDRNOTAVAIL; 
int ipv6_sock_mc_drop(struct sock *sk, int ifindex, struct in6_addr *addr){	struct ipv6_pinfo *np = inet6_sk(sk);	struct ipv6_mc_socklist *mc_lst, **lnk;	write_lock_bh(&ipv6_sk_mc_lock);	for (lnk = &np->ipv6_mc_list; (mc_lst = *lnk) !=NULL ; lnk = &mc_lst->next) {		if ((ifindex == 0 || mc_lst->ifindex == ifindex) &&		    ipv6_addr_equal(&mc_lst->addr, addr)) {			struct net_device *dev;			*lnk = mc_lst->next;			write_unlock_bh(&ipv6_sk_mc_lock);			if ((dev = dev_get_by_index(mc_lst->ifindex)) != NULL) {				struct inet6_dev *idev = in6_dev_get(dev);				if (idev) {					(void) ip6_mc_leave_src(sk,mc_lst,idev);					__ipv6_dev_mc_dec(idev, &mc_lst->addr);					in6_dev_put(idev);				}				dev_put(dev);			}			sock_kfree_s(sk, mc_lst, sizeof(*mc_lst));			return 0;		}	}	write_unlock_bh(&ipv6_sk_mc_lock);	return -ENOENT;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9951f036fe8a4e6b21962559c64ff13b290ff01a/mcast.c/clean/net/ipv6/mcast.c