mod_timer(&rt_periodic_timer, now + ip_rt_gc_interval); 
mod_timer(&rt_periodic_timer, jiffies + ip_rt_gc_interval); 
static void rt_check_expire(unsigned long dummy){	static int rover;	int i = rover, t;	struct rtable *rth, **rthp;	unsigned long now = jiffies;	for (t = ip_rt_gc_interval << rt_hash_log; t >= 0;	     t -= ip_rt_gc_timeout) {		unsigned long tmo = ip_rt_gc_timeout;		i = (i + 1) & rt_hash_mask;		rthp = &rt_hash_table[i].chain;		spin_lock(rt_hash_lock_addr(i));		while ((rth = *rthp) != NULL) {			if (rth->u.dst.expires) {				/* Entry is expired even if it is in use */				if (time_before_eq(now, rth->u.dst.expires)) {					tmo >>= 1;					rthp = &rth->u.rt_next;					continue;				}			} else if (!rt_may_expire(rth, tmo, ip_rt_gc_timeout)) {				tmo >>= 1;				rthp = &rth->u.rt_next;				continue;			}			/* Cleanup aged off entries. */#ifdef CONFIG_IP_ROUTE_MULTIPATH_CACHED			/* remove all related balanced entries if necessary */			if (rth->u.dst.flags & DST_BALANCED) {				rthp = rt_remove_balanced_route(					&rt_hash_table[i].chain,					rth, NULL);				if (!rthp)					break;			} else {				*rthp = rth->u.rt_next;				rt_free(rth);			}#else /* CONFIG_IP_ROUTE_MULTIPATH_CACHED */ 			*rthp = rth->u.rt_next; 			rt_free(rth);#endif /* CONFIG_IP_ROUTE_MULTIPATH_CACHED */		}		spin_unlock(rt_hash_lock_addr(i));		/* Fallback loop breaker. */		if (time_after(jiffies, now))			break;	}	rover = i;	mod_timer(&rt_periodic_timer, now + ip_rt_gc_interval);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/bb1d23b02657f494dff295f6cdd1f29df30fa61e/route.c/clean/net/ipv4/route.c