struct rtable *rth; 
struct rtable *rth = NULL; 
static inline int ip_mkroute_output(struct rtable** rp,				    struct fib_result* res,				    const struct flowi *fl,				    const struct flowi *oldflp,				    struct net_device *dev_out,				    unsigned flags){#ifdef CONFIG_IP_ROUTE_MULTIPATH_CACHED	u32 tos = RT_FL_TOS(oldflp);	unsigned char hop;	unsigned hash;	int err = -EINVAL;	struct rtable *rth;	if (res->fi && res->fi->fib_nhs > 1) {		unsigned char hopcount = res->fi->fib_nhs;		for (hop = 0; hop < hopcount; hop++) {			struct net_device *dev2nexthop;			res->nh_sel = hop;			/* hold a work reference to the output device */			dev2nexthop = FIB_RES_DEV(*res);			dev_hold(dev2nexthop);			err = __mkroute_output(&rth, res, fl, oldflp,					       dev2nexthop, flags);			if (err != 0)				goto cleanup;			hash = rt_hash_code(oldflp->fl4_dst, 					    oldflp->fl4_src ^					    (oldflp->oif << 5), tos);			err = rt_intern_hash(hash, rth, rp);			/* forward hop information to multipath impl. */			multipath_set_nhinfo(rth,					     FIB_RES_NETWORK(*res),					     FIB_RES_NETMASK(*res),					     res->prefixlen,					     &FIB_RES_NH(*res));		cleanup:			/* release work reference to output device */			dev_put(dev2nexthop);			if (err != 0)				return err;		}		atomic_set(&(*rp)->u.dst.__refcnt, 1);		return err;	} else {		return ip_mkroute_output_def(rp, res, fl, oldflp, dev_out,					     flags);	}#else /* CONFIG_IP_ROUTE_MULTIPATH_CACHED */	return ip_mkroute_output_def(rp, res, fl, oldflp, dev_out, flags);#endif}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7abaa27c1c54208bd76fa8bae55839c034aebfb2/route.c/clean/net/ipv4/route.c