 if (test_bit(IPS_SEQ_ADJUST_BIT, &ct->status) && (hooknum == NF_IP_POST_ROUTING || hooknum == NF_IP_LOCAL_IN)) { DEBUGP("ip_nat_core: adjusting sequence number\n"); /* future: put this in a l4-proto specific function, * and call this function here. */ if (!ip_nat_seq_adjust(pskb, ct, ctinfo)) return NF_DROP; } 
unsigned int nat_packet(struct ip_conntrack *ct,			enum ip_conntrack_info ctinfo,			unsigned int hooknum,			struct sk_buff **pskb){	enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);	unsigned long statusbit;	enum ip_nat_manip_type mtype = HOOK2MANIP(hooknum);	if (test_bit(IPS_SEQ_ADJUST_BIT, &ct->status)	    && (hooknum == NF_IP_POST_ROUTING || hooknum == NF_IP_LOCAL_IN)) {		DEBUGP("ip_nat_core: adjusting sequence number\n");		/* future: put this in a l4-proto specific function,		 * and call this function here. */		if (!ip_nat_seq_adjust(pskb, ct, ctinfo))			return NF_DROP;	}	if (mtype == IP_NAT_MANIP_SRC)		statusbit = IPS_SRC_NAT;	else		statusbit = IPS_DST_NAT;	/* Invert if this is reply dir. */	if (dir == IP_CT_DIR_REPLY)		statusbit ^= IPS_NAT_MASK;	/* Non-atomic: these bits don't change. */	if (ct->status & statusbit) {		struct ip_conntrack_tuple target;		/* We are aiming to look like inverse of other direction. */		invert_tuplepr(&target, &ct->tuplehash[!dir].tuple);		if (!manip_pkt(target.dst.protonum, pskb, 0, &target, mtype))			return NF_DROP;	}	return NF_ACCEPT;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/e281e3ac2b6c294d672034909883e7bb9e649ac7/ip_nat_core.c/clean/net/ipv4/netfilter/ip_nat_core.c