err = ctnetlink_parse_tuple(cda, &tuple, CTA_EXPECT_MASK); 
err = ctnetlink_parse_tuple(cda, &mask, CTA_EXPECT_MASK); 
ctnetlink_create_expect(struct nfattr *cda[]){	struct ip_conntrack_tuple tuple, mask, master_tuple;	struct ip_conntrack_tuple_hash *h = NULL;	struct ip_conntrack_expect *exp;	struct ip_conntrack *ct;	int err = 0;	DEBUGP("entered %s\n", __FUNCTION__);	err = ctnetlink_parse_tuple(cda, &tuple, CTA_EXPECT_TUPLE);	if (err < 0)		return err;	err = ctnetlink_parse_tuple(cda, &tuple, CTA_EXPECT_MASK);	if (err < 0)		return err;	if (cda[CTA_TUPLE_ORIG-1])		err = ctnetlink_parse_tuple(cda, &master_tuple, CTA_TUPLE_ORIG);	else if (cda[CTA_TUPLE_REPLY-1])		err = ctnetlink_parse_tuple(cda, &master_tuple, 					    CTA_TUPLE_REPLY);	else		return -EINVAL;	if (err < 0)		return err;	/* Look for master conntrack of this expectation */	h = ip_conntrack_find_get(&master_tuple, NULL);	if (!h)		return -ENOENT;	ct = tuplehash_to_ctrack(h);	if (!ct->helper) {		/* such conntrack hasn't got any helper, abort */		err = -EINVAL;		goto out;	}	exp = ip_conntrack_expect_alloc(ct);	if (!exp) {		err = -ENOMEM;		goto out;	}		exp->expectfn = NULL;	exp->master = ct;	memcpy(&exp->tuple, &tuple, sizeof(struct ip_conntrack_tuple));	memcpy(&exp->mask, &mask, sizeof(struct ip_conntrack_tuple));	err = ip_conntrack_expect_related(exp);	ip_conntrack_expect_put(exp);out:		ip_conntrack_put(tuplehash_to_ctrack(h));	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/bd9a26b7f2ee7567571bb5b7acc1a256c544a0dd/ip_conntrack_netlink.c/buggy/net/ipv4/netfilter/ip_conntrack_netlink.c