netfilter: bridge: refactor clearing BRNF_NF_BRIDGE_PREROUTING
authorBernhard Thaler <bernhard.thaler@wvnet.at>
Sat, 30 May 2015 13:26:13 +0000 (15:26 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 12 Jun 2015 12:07:53 +0000 (14:07 +0200)
use binary AND on complement of BRNF_NF_BRIDGE_PREROUTING to unset
bit in nf_bridge->mask.

Signed-off-by: Bernhard Thaler <bernhard.thaler@wvnet.at>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/bridge/br_netfilter.c

index 46660a28feef7c21750dd76e8337e6146532ee28..2651876894e0034f2540d8a268e0049934744f91 100644 (file)
@@ -290,7 +290,7 @@ static int br_nf_pre_routing_finish_ipv6(struct sock *sk, struct sk_buff *skb)
                skb->pkt_type = PACKET_OTHERHOST;
                nf_bridge->pkt_otherhost = false;
        }
-       nf_bridge->mask ^= BRNF_NF_BRIDGE_PREROUTING;
+       nf_bridge->mask &= ~BRNF_NF_BRIDGE_PREROUTING;
 
        rt = bridge_parent_rtable(nf_bridge->physindev);
        if (!rt) {
@@ -415,7 +415,7 @@ static int br_nf_pre_routing_finish(struct sock *sk, struct sk_buff *skb)
                skb->pkt_type = PACKET_OTHERHOST;
                nf_bridge->pkt_otherhost = false;
        }
-       nf_bridge->mask ^= BRNF_NF_BRIDGE_PREROUTING;
+       nf_bridge->mask &= ~BRNF_NF_BRIDGE_PREROUTING;
        if (daddr_was_changed(skb, nf_bridge)) {
                if ((err = ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, dev))) {
                        struct in_device *in_dev = __in_dev_get_rcu(dev);