struct rtable* rth; 
struct rtable* rth = NULL; 
static inline int ip_mkroute_input(struct sk_buff *skb, 				   struct fib_result* res, 				   const struct flowi *fl,				   struct in_device *in_dev,				   u32 daddr, u32 saddr, u32 tos){#ifdef CONFIG_IP_ROUTE_MULTIPATH_CACHED	struct rtable* rth;	unsigned char hop, hopcount, lasthop;	int err = -EINVAL;	unsigned int hash;	if (res->fi)		hopcount = res->fi->fib_nhs;	else		hopcount = 1;	lasthop = hopcount - 1;	/* distinguish between multipath and singlepath */	if (hopcount < 2)		return ip_mkroute_input_def(skb, res, fl, in_dev, daddr,					    saddr, tos);		/* add all alternatives to the routing cache */	for (hop = 0; hop < hopcount; hop++) {		res->nh_sel = hop;		/* create a routing cache entry */		err = __mkroute_input(skb, res, in_dev, daddr, saddr, tos,				      &rth);		if (err)			return err;		/* put it into the cache */		hash = rt_hash_code(daddr, saddr ^ (fl->iif << 5), tos);		err = rt_intern_hash(hash, rth, (struct rtable**)&skb->dst);		if (err)			return err;		/* forward hop information to multipath impl. */		multipath_set_nhinfo(rth,				     FIB_RES_NETWORK(*res),				     FIB_RES_NETMASK(*res),				     res->prefixlen,				     &FIB_RES_NH(*res));		/* only for the last hop the reference count is handled		 * outside		 */		if (hop == lasthop)			atomic_set(&(skb->dst->__refcnt), 1);	}	return err;#else /* CONFIG_IP_ROUTE_MULTIPATH_CACHED  */	return ip_mkroute_input_def(skb, res, fl, in_dev, daddr, saddr, tos);#endif /* CONFIG_IP_ROUTE_MULTIPATH_CACHED  */}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7abaa27c1c54208bd76fa8bae55839c034aebfb2/route.c/clean/net/ipv4/route.c