From 51daee24e2805775739bcc918f048573f97d4d20 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 29 Mar 2009 13:46:01 -0700 Subject: [PATCH] --- yaml --- r: 139116 b: refs/heads/master c: 424b86a6bc9459a830e1e94e0e908f3ac1716b7e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/netfilter/xt_cluster.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 653469e256a5..414b730a23db 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 13223cb02ccfa375f2d683d08d30db5b72264f1e +refs/heads/master: 424b86a6bc9459a830e1e94e0e908f3ac1716b7e diff --git a/trunk/net/netfilter/xt_cluster.c b/trunk/net/netfilter/xt_cluster.c index ad5bd890e4e8..6c4847662b85 100644 --- a/trunk/net/netfilter/xt_cluster.c +++ b/trunk/net/netfilter/xt_cluster.c @@ -57,6 +57,13 @@ xt_cluster_hash(const struct nf_conn *ct, return (((u64)hash * info->total_nodes) >> 32); } +static inline bool +xt_cluster_ipv6_is_multicast(const struct in6_addr *addr) +{ + __be32 st = addr->s6_addr32[0]; + return ((st & htonl(0xFF000000)) == htonl(0xFF000000)); +} + static inline bool xt_cluster_is_multicast_addr(const struct sk_buff *skb, u_int8_t family) { @@ -67,8 +74,8 @@ xt_cluster_is_multicast_addr(const struct sk_buff *skb, u_int8_t family) is_multicast = ipv4_is_multicast(ip_hdr(skb)->daddr); break; case NFPROTO_IPV6: - is_multicast = ipv6_addr_type(&ipv6_hdr(skb)->daddr) & - IPV6_ADDR_MULTICAST; + is_multicast = + xt_cluster_ipv6_is_multicast(&ipv6_hdr(skb)->daddr); break; default: WARN_ON(1);