if (diff != 0) { 
if (diff != 0) 
target(struct sk_buff **pskb,       const struct net_device *in,       const struct net_device *out,       unsigned int hooknum,       const void *targinfo,       void *userinfo){	const struct ipt_connmark_target_info *markinfo = targinfo;	u_int32_t diff;	u_int32_t nfmark;	u_int32_t newmark;	enum ip_conntrack_info ctinfo;	struct ip_conntrack *ct = ip_conntrack_get((*pskb), &ctinfo);	if (ct) {	    switch(markinfo->mode) {	    case IPT_CONNMARK_SET:		newmark = (ct->mark & ~markinfo->mask) | markinfo->mark;		if (newmark != ct->mark)		    ct->mark = newmark;		break;	    case IPT_CONNMARK_SAVE:		newmark = (ct->mark & ~markinfo->mask) | ((*pskb)->nfmark & markinfo->mask);		if (ct->mark != newmark)		    ct->mark = newmark;		break;	    case IPT_CONNMARK_RESTORE:		nfmark = (*pskb)->nfmark;		diff = (ct->mark ^ nfmark) & markinfo->mask;		if (diff != 0) {		    (*pskb)->nfmark = nfmark ^ diff;		    (*pskb)->nfcache |= NFC_ALTERED;		}		break;	    }	}	return IPT_CONTINUE;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6869c4d8e066e21623c812c448a05f1ed931c9c6/ipt_CONNMARK.c/buggy/net/ipv4/netfilter/ipt_CONNMARK.c