aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter/xt_NFQUEUE.c
diff options
context:
space:
mode:
authorChangli Gao <xiaosuo@gmail.com>2010-11-12 17:34:17 +0100
committerPatrick McHardy <kaber@trash.net>2010-11-12 17:34:17 +0100
commitca36181050a523f6c0af3ef7cb509bbbc4ede276 (patch)
tree4016b9c676c10a25e1891240c63cc910b33e6db6 /net/netfilter/xt_NFQUEUE.c
parentnetfilter: nf_conntrack: don't always initialize ct->proto (diff)
downloadlinux-dev-ca36181050a523f6c0af3ef7cb509bbbc4ede276.tar.xz
linux-dev-ca36181050a523f6c0af3ef7cb509bbbc4ede276.zip
netfilter: xt_NFQUEUE: remove modulo operations
Signed-off-by: Changli Gao <xiaosuo@gmail.com> Acked-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/netfilter/xt_NFQUEUE.c')
-rw-r--r--net/netfilter/xt_NFQUEUE.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/netfilter/xt_NFQUEUE.c b/net/netfilter/xt_NFQUEUE.c
index 039cce1bde3d..39627706aac6 100644
--- a/net/netfilter/xt_NFQUEUE.c
+++ b/net/netfilter/xt_NFQUEUE.c
@@ -72,10 +72,12 @@ nfqueue_tg_v1(struct sk_buff *skb, const struct xt_action_param *par)
if (info->queues_total > 1) {
if (par->family == NFPROTO_IPV4)
- queue = hash_v4(skb) % info->queues_total + queue;
+ queue = (((u64) hash_v4(skb) * info->queues_total) >>
+ 32) + queue;
#if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE)
else if (par->family == NFPROTO_IPV6)
- queue = hash_v6(skb) % info->queues_total + queue;
+ queue = (((u64) hash_v6(skb) * info->queues_total) >>
+ 32) + queue;
#endif
}
return NF_QUEUE_NR(queue);