ip_conntrack_event_cache_init(*pskb);  
unsigned int ip_conntrack_in(unsigned int hooknum,			     struct sk_buff **pskb,			     const struct net_device *in,			     const struct net_device *out,			     int (*okfn)(struct sk_buff *)){	struct ip_conntrack *ct;	enum ip_conntrack_info ctinfo;	struct ip_conntrack_protocol *proto;	int set_reply = 0;	int ret;	/* Previously seen (loopback or untracked)?  Ignore. */	if ((*pskb)->nfct) {		CONNTRACK_STAT_INC(ignore);		return NF_ACCEPT;	}	/* Never happen */	if ((*pskb)->nh.iph->frag_off & htons(IP_OFFSET)) {		if (net_ratelimit()) {		printk(KERN_ERR "ip_conntrack_in: Frag of proto %u (hook=%u)\n",		       (*pskb)->nh.iph->protocol, hooknum);		}		return NF_DROP;	}/* Doesn't cover locally-generated broadcast, so not worth it. */#if 0	/* Ignore broadcast: no `connection'. */	if ((*pskb)->pkt_type == PACKET_BROADCAST) {		printk("Broadcast packet!\n");		return NF_ACCEPT;	} else if (((*pskb)->nh.iph->daddr & htonl(0x000000FF)) 		   == htonl(0x000000FF)) {		printk("Should bcast: %u.%u.%u.%u->%u.%u.%u.%u (sk=%p, ptype=%u)\n",		       NIPQUAD((*pskb)->nh.iph->saddr),		       NIPQUAD((*pskb)->nh.iph->daddr),		       (*pskb)->sk, (*pskb)->pkt_type);	}#endif	proto = __ip_conntrack_proto_find((*pskb)->nh.iph->protocol);	/* It may be an special packet, error, unclean...	 * inverse of the return code tells to the netfilter	 * core what to do with the packet. */	if (proto->error != NULL 	    && (ret = proto->error(*pskb, &ctinfo, hooknum)) <= 0) {		CONNTRACK_STAT_INC(error);		CONNTRACK_STAT_INC(invalid);		return -ret;	}	if (!(ct = resolve_normal_ct(*pskb, proto,&set_reply,hooknum,&ctinfo))) {		/* Not valid part of a connection */		CONNTRACK_STAT_INC(invalid);		return NF_ACCEPT;	}	if (IS_ERR(ct)) {		/* Too stressed to deal. */		CONNTRACK_STAT_INC(drop);		return NF_DROP;	}	IP_NF_ASSERT((*pskb)->nfct);	ip_conntrack_event_cache_init(*pskb);	ret = proto->packet(ct, *pskb, ctinfo);	if (ret < 0) {		/* Invalid: inverse of the return code tells		 * the netfilter core what to do*/		nf_conntrack_put((*pskb)->nfct);		(*pskb)->nfct = NULL;		CONNTRACK_STAT_INC(invalid);		return -ret;	}	if (set_reply && !test_and_set_bit(IPS_SEEN_REPLY_BIT, &ct->status))		ip_conntrack_event_cache(IPCT_STATUS, *pskb);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/a86888b925299330053d20e0eba03ac4d2648c4b/ip_conntrack_core.c/clean/net/ipv4/netfilter/ip_conntrack_core.c