if (err) { #if IP6_DEBUG >= 2 printk(KERN_DEBUG "ip6_dst_lookup: " "no available source address\n"); #endif 
if (err) 
int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi *fl){	int err = 0;	*dst = NULL;	if (sk) {		struct ipv6_pinfo *np = inet6_sk(sk);			*dst = sk_dst_check(sk, np->dst_cookie);		if (*dst) {			struct rt6_info *rt = (struct rt6_info*)*dst;					/* Yes, checking route validity in not connected				   case is not very simple. Take into account,				   that we do not support routing by source, TOS,				   and MSG_DONTROUTE 		--ANK (980726)					   1. If route was host route, check that				      cached destination is current.				      If it is network route, we still may				      check its validity using saved pointer				      to the last used address: daddr_cache.				      We do not want to save whole address now,				      (because main consumer of this service				       is tcp, which has not this problem),				      so that the last trick works only on connected				      sockets.				   2. oif also should be the same.				 */				if (((rt->rt6i_dst.plen != 128 ||			      !ipv6_addr_equal(&fl->fl6_dst, &rt->rt6i_dst.addr))			     && (np->daddr_cache == NULL ||				 !ipv6_addr_equal(&fl->fl6_dst, np->daddr_cache)))			    || (fl->oif && fl->oif != (*dst)->dev->ifindex)) {				dst_release(*dst);				*dst = NULL;			}		}	}	if (*dst == NULL)		*dst = ip6_route_output(sk, fl);	if ((err = (*dst)->error))		goto out_err_release;	if (ipv6_addr_any(&fl->fl6_src)) {		err = ipv6_get_saddr(*dst, &fl->fl6_dst, &fl->fl6_src);		if (err) {#if IP6_DEBUG >= 2			printk(KERN_DEBUG "ip6_dst_lookup: "			       "no available source address\n");#endif			goto out_err_release;		}	}	return 0;out_err_release:	dst_release(*dst);	*dst = NULL;	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/44456d37b59d8e541936ed26d8b6e08d27e88ac1/ip6_output.c/clean/net/ipv6/ip6_output.c