Commit bf3a46aa authored by Harald Welte's avatar Harald Welte Committed by David S. Miller
Browse files

[NETFILTER]: convert nfmark and conntrack mark to 32bit



As discussed at netconf'05, we convert nfmark and conntrack-mark to be
32bits even on 64bit architectures.

Signed-off-by: default avatarHarald Welte <laforge@netfilter.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8f3d17fb
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -171,7 +171,7 @@ struct ip_conntrack
#endif /* CONFIG_IP_NF_NAT_NEEDED */
#endif /* CONFIG_IP_NF_NAT_NEEDED */


#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
	unsigned long mark;
	u_int32_t mark;
#endif
#endif


	/* Traversed often, so hopefully in different cacheline to top */
	/* Traversed often, so hopefully in different cacheline to top */
+1 −1
Original line number Original line Diff line number Diff line
@@ -259,7 +259,7 @@ struct sk_buff {


	void			(*destructor)(struct sk_buff *skb);
	void			(*destructor)(struct sk_buff *skb);
#ifdef CONFIG_NETFILTER
#ifdef CONFIG_NETFILTER
	unsigned long		nfmark;
	__u32			nfmark;
	__u32			nfcache;
	__u32			nfcache;
	__u32			nfctinfo;
	__u32			nfctinfo;
	struct nf_conntrack	*nfct;
	struct nf_conntrack	*nfct;
+1 −1
Original line number Original line Diff line number Diff line
@@ -185,7 +185,7 @@ static int ct_seq_show(struct seq_file *s, void *v)
			return -ENOSPC;
			return -ENOSPC;


#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
	if (seq_printf(s, "mark=%lu ", conntrack->mark))
	if (seq_printf(s, "mark=%u ", conntrack->mark))
		return -ENOSPC;
		return -ENOSPC;
#endif
#endif


+1 −1
Original line number Original line Diff line number Diff line
@@ -367,7 +367,7 @@ target(struct sk_buff **pskb,
#ifdef DEBUG_CLUSTERP
#ifdef DEBUG_CLUSTERP
	DUMP_TUPLE(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
	DUMP_TUPLE(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
#endif
#endif
	DEBUGP("hash=%u ct_hash=%lu ", hash, ct->mark);
	DEBUGP("hash=%u ct_hash=%u ", hash, ct->mark);
	if (!clusterip_responsible(cipinfo->config, hash)) {
	if (!clusterip_responsible(cipinfo->config, hash)) {
		DEBUGP("not responsible\n");
		DEBUGP("not responsible\n");
		return NF_DROP;
		return NF_DROP;
+8 −3
Original line number Original line Diff line number Diff line
@@ -40,9 +40,9 @@ target(struct sk_buff **pskb,
       void *userinfo)
       void *userinfo)
{
{
	const struct ipt_connmark_target_info *markinfo = targinfo;
	const struct ipt_connmark_target_info *markinfo = targinfo;
	unsigned long diff;
	u_int32_t diff;
	unsigned long nfmark;
	u_int32_t nfmark;
	unsigned long newmark;
	u_int32_t newmark;


	enum ip_conntrack_info ctinfo;
	enum ip_conntrack_info ctinfo;
	struct ip_conntrack *ct = ip_conntrack_get((*pskb), &ctinfo);
	struct ip_conntrack *ct = ip_conntrack_get((*pskb), &ctinfo);
@@ -94,6 +94,11 @@ checkentry(const char *tablename,
	    }
	    }
	}
	}


	if (matchinfo->mark > 0xffffffff || matchinfo->mask > 0xffffffff) {
		printk(KERN_WARNING "CONNMARK: Only supports 32bit mark\n");
		return 0;
	}

	return 1;
	return 1;
}
}


Loading