diff options
author | Changli Gao <xiaosuo@gmail.com> | 2010-11-12 11:34:17 -0500 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2010-11-12 11:34:17 -0500 |
commit | ca36181050a523f6c0af3ef7cb509bbbc4ede276 (patch) | |
tree | 4016b9c676c10a25e1891240c63cc910b33e6db6 | |
parent | e5fc9e7a666e5964b60e05903b90aa832354b68c (diff) |
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>
-rw-r--r-- | net/netfilter/xt_NFQUEUE.c | 6 |
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) | |||
72 | 72 | ||
73 | if (info->queues_total > 1) { | 73 | if (info->queues_total > 1) { |
74 | if (par->family == NFPROTO_IPV4) | 74 | if (par->family == NFPROTO_IPV4) |
75 | queue = hash_v4(skb) % info->queues_total + queue; | 75 | queue = (((u64) hash_v4(skb) * info->queues_total) >> |
76 | 32) + queue; | ||
76 | #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE) | 77 | #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE) |
77 | else if (par->family == NFPROTO_IPV6) | 78 | else if (par->family == NFPROTO_IPV6) |
78 | queue = hash_v6(skb) % info->queues_total + queue; | 79 | queue = (((u64) hash_v6(skb) * info->queues_total) >> |
80 | 32) + queue; | ||
79 | #endif | 81 | #endif |
80 | } | 82 | } |
81 | return NF_QUEUE_NR(queue); | 83 | return NF_QUEUE_NR(queue); |