dir = xp->index & 7; 
dir = xfrm_policy_id2dir(xp->index); 
static void xfrm_policy_timer(unsigned long data){	struct xfrm_policy *xp = (struct xfrm_policy*)data;	unsigned long now = (unsigned long)xtime.tv_sec;	long next = LONG_MAX;	int warn = 0;	int dir;	read_lock(&xp->lock);	if (xp->dead)		goto out;	dir = xp->index & 7;	if (xp->lft.hard_add_expires_seconds) {		long tmo = xp->lft.hard_add_expires_seconds +			xp->curlft.add_time - now;		if (tmo <= 0)			goto expired;		if (tmo < next)			next = tmo;	}	if (xp->lft.hard_use_expires_seconds) {		long tmo = xp->lft.hard_use_expires_seconds +			(xp->curlft.use_time ? : xp->curlft.add_time) - now;		if (tmo <= 0)			goto expired;		if (tmo < next)			next = tmo;	}	if (xp->lft.soft_add_expires_seconds) {		long tmo = xp->lft.soft_add_expires_seconds +			xp->curlft.add_time - now;		if (tmo <= 0) {			warn = 1;			tmo = XFRM_KM_TIMEOUT;		}		if (tmo < next)			next = tmo;	}	if (xp->lft.soft_use_expires_seconds) {		long tmo = xp->lft.soft_use_expires_seconds +			(xp->curlft.use_time ? : xp->curlft.add_time) - now;		if (tmo <= 0) {			warn = 1;			tmo = XFRM_KM_TIMEOUT;		}		if (tmo < next)			next = tmo;	}	if (warn)		km_policy_expired(xp, dir, 0);	if (next != LONG_MAX &&	    !mod_timer(&xp->timer, jiffies + make_jiffies(next)))		xfrm_pol_hold(xp);out:	read_unlock(&xp->lock);	xfrm_pol_put(xp);	return;expired:	read_unlock(&xp->lock);	if (!xfrm_policy_delete(xp, dir))		km_policy_expired(xp, dir, 1);	xfrm_pol_put(xp);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/77d8d7a6848c81084f413e1ec4982123a56e2ccb/xfrm_policy.c/clean/net/xfrm/xfrm_policy.c