ip_conntrack_event(IPCT_DESTROY, ct); 
destroy_conntrack(struct nf_conntrack *nfct){	struct ip_conntrack *ct = (struct ip_conntrack *)nfct;	struct ip_conntrack_protocol *proto;	DEBUGP("destroy_conntrack(%p)\n", ct);	IP_NF_ASSERT(atomic_read(&nfct->use) == 0);	IP_NF_ASSERT(!timer_pending(&ct->timeout));	set_bit(IPS_DYING_BIT, &ct->status);	/* To make sure we don't get any weird locking issues here:	 * destroy_conntrack() MUST NOT be called with a write lock	 * to ip_conntrack_lock!!! -HW */	proto = __ip_conntrack_proto_find(ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.protonum);	if (proto && proto->destroy)		proto->destroy(ct);	if (ip_conntrack_destroyed)		ip_conntrack_destroyed(ct);	write_lock_bh(&ip_conntrack_lock);	/* Expectations will have been removed in clean_from_lists,	 * except TFTP can create an expectation on the first packet,	 * before connection is in the list, so we need to clean here,	 * too. */	ip_ct_remove_expectations(ct);	/* We overload first tuple to link into unconfirmed list. */	if (!is_confirmed(ct)) {		BUG_ON(list_empty(&ct->tuplehash[IP_CT_DIR_ORIGINAL].list));		list_del(&ct->tuplehash[IP_CT_DIR_ORIGINAL].list);	}	CONNTRACK_STAT_INC(delete);	write_unlock_bh(&ip_conntrack_lock);	if (ct->master)		ip_conntrack_put(ct->master);	DEBUGP("destroy_conntrack: returning ct=%p to slab\n", ct);	ip_conntrack_free(ct);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/14a50bbaa51202b676a95e9b41bc5ed6c77aa9cc/ip_conntrack_core.c/clean/net/ipv4/netfilter/ip_conntrack_core.c