ip_ct_refresh_acct(ct, ctinfo, NULL, master_timeout * HZ); 
ip_ct_refresh(ct, *pskb, master_timeout * HZ); 
static int help(struct sk_buff **pskb,                struct ip_conntrack *ct, enum ip_conntrack_info ctinfo){	struct ip_conntrack_expect *exp;	char *data, *data_limit, *tmp;	unsigned int dataoff, i;	u_int16_t port, len;	int ret = NF_ACCEPT;	/* Only look at packets from the Amanda server */	if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)		return NF_ACCEPT;	/* increase the UDP timeout of the master connection as replies from	 * Amanda clients to the server can be quite delayed */	ip_ct_refresh_acct(ct, ctinfo, NULL, master_timeout * HZ);	/* No data? */	dataoff = (*pskb)->nh.iph->ihl*4 + sizeof(struct udphdr);	if (dataoff >= (*pskb)->len) {		if (net_ratelimit())			printk("amanda_help: skblen = %u\n", (*pskb)->len);		return NF_ACCEPT;	}	spin_lock_bh(&amanda_buffer_lock);	skb_copy_bits(*pskb, dataoff, amanda_buffer, (*pskb)->len - dataoff);	data = amanda_buffer;	data_limit = amanda_buffer + (*pskb)->len - dataoff;	*data_limit = '\0';	/* Search for the CONNECT string */	data = strstr(data, "CONNECT ");	if (!data)		goto out;	data += strlen("CONNECT ");	/* Only search first line. */		if ((tmp = strchr(data, '\n')))		*tmp = '\0';	for (i = 0; i < ARRAY_SIZE(conns); i++) {		char *match = strstr(data, conns[i]);		if (!match)			continue;		tmp = data = match + strlen(conns[i]);		port = simple_strtoul(data, &data, 10);		len = data - tmp;		if (port == 0 || len > 5)			break;		exp = ip_conntrack_expect_alloc(ct);		if (exp == NULL) {			ret = NF_DROP;			goto out;		}		exp->expectfn = NULL;		exp->flags = 0;		exp->tuple.src.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip;		exp->tuple.src.u.tcp.port = 0;		exp->tuple.dst.ip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip;		exp->tuple.dst.protonum = IPPROTO_TCP;		exp->tuple.dst.u.tcp.port = htons(port);		exp->mask.src.ip = 0xFFFFFFFF;		exp->mask.src.u.tcp.port = 0;		exp->mask.dst.ip = 0xFFFFFFFF;		exp->mask.dst.protonum = 0xFF;		exp->mask.dst.u.tcp.port = 0xFFFF;		if (ip_nat_amanda_hook)			ret = ip_nat_amanda_hook(pskb, ctinfo,						 tmp - amanda_buffer,						 len, exp);		else if (ip_conntrack_expect_related(exp) != 0)			ret = NF_DROP;		ip_conntrack_expect_put(exp);	}out:	spin_unlock_bh(&amanda_buffer_lock);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1dfbab59498d6f227c91988bab6c71af049a5333/ip_conntrack_amanda.c/buggy/net/ipv4/netfilter/ip_conntrack_amanda.c