if (cda[CTA_PROTOINFO-1]) { err = ctnetlink_change_protoinfo(ct, cda); if (err < 0) return err; }  
ctnetlink_create_conntrack(struct nfattr *cda[], 			   struct ip_conntrack_tuple *otuple,			   struct ip_conntrack_tuple *rtuple){	struct ip_conntrack *ct;	int err = -EINVAL;	DEBUGP("entered %s\n", __FUNCTION__);	ct = ip_conntrack_alloc(otuple, rtuple);	if (ct == NULL || IS_ERR(ct))		return -ENOMEM;		if (!cda[CTA_TIMEOUT-1])		goto err;	ct->timeout.expires = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_TIMEOUT-1]));	ct->timeout.expires = jiffies + ct->timeout.expires * HZ;	ct->status |= IPS_CONFIRMED;	err = ctnetlink_change_status(ct, cda);	if (err < 0)		goto err;	ct->helper = ip_conntrack_helper_find_get(rtuple);	add_timer(&ct->timeout);	ip_conntrack_hash_insert(ct);	if (ct->helper)		ip_conntrack_helper_put(ct->helper);	DEBUGP("conntrack with id %u inserted\n", ct->id);	return 0;err:		ip_conntrack_free(ct);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/061cb4a0ec34a6e3069d5a1b3c547e55a71498c5/ip_conntrack_netlink.c/clean/net/ipv4/netfilter/ip_conntrack_netlink.c