if ((*pskb)->ip_summed != CHECKSUM_HW) 
if ((*pskb)->ip_summed != CHECKSUM_UNNECESSARY) 
set_ect_tcp(struct sk_buff **pskb, const struct ipt_ECN_info *einfo, int inward){	struct tcphdr _tcph, *tcph;	u_int16_t diffs[2];	/* Not enought header? */	tcph = skb_header_pointer(*pskb, (*pskb)->nh.iph->ihl*4,				  sizeof(_tcph), &_tcph);	if (!tcph)		return 0;	if ((!(einfo->operation & IPT_ECN_OP_SET_ECE) ||	     tcph->ece == einfo->proto.tcp.ece) &&	    ((!(einfo->operation & IPT_ECN_OP_SET_CWR) ||	     tcph->cwr == einfo->proto.tcp.cwr)))		return 1;	if (!skb_ip_make_writable(pskb, (*pskb)->nh.iph->ihl*4+sizeof(*tcph)))		return 0;	tcph = (void *)(*pskb)->nh.iph + (*pskb)->nh.iph->ihl*4;	diffs[0] = ((u_int16_t *)tcph)[6];	if (einfo->operation & IPT_ECN_OP_SET_ECE)		tcph->ece = einfo->proto.tcp.ece;	if (einfo->operation & IPT_ECN_OP_SET_CWR)		tcph->cwr = einfo->proto.tcp.cwr;	diffs[1] = ((u_int16_t *)tcph)[6];	diffs[0] = diffs[0] ^ 0xFFFF;	if ((*pskb)->ip_summed != CHECKSUM_HW)		tcph->check = csum_fold(csum_partial((char *)diffs,						     sizeof(diffs),						     tcph->check^0xFFFF));	else		if (skb_checksum_help(*pskb, inward))			return 0;	(*pskb)->nfcache |= NFC_ALTERED;	return 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f93592ff4fa4a55aa7640d435fa93338e190294d/ipt_ECN.c/clean/net/ipv4/netfilter/ipt_ECN.c