]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/bridge/br_netfilter_hooks.c
net: atheros: atl1c: use new api ethtool_{get|set}_link_ksettings
[linux.git] / net / bridge / br_netfilter_hooks.c
index 2fe9345c1407108bf5a0802671fa419aa9b24e7e..8155bd2a5138431e09a31298b17d150df1f15e20 100644 (file)
@@ -561,8 +561,8 @@ static int br_nf_forward_finish(struct net *net, struct sock *sk, struct sk_buff
        }
        nf_bridge_push_encap_header(skb);
 
-       NF_HOOK_THRESH(NFPROTO_BRIDGE, NF_BR_FORWARD, net, sk, skb,
-                      in, skb->dev, br_forward_finish, 1);
+       br_nf_hook_thresh(NF_BR_FORWARD, net, sk, skb, in, skb->dev,
+                         br_forward_finish);
        return 0;
 }
 
@@ -845,8 +845,10 @@ static unsigned int ip_sabotage_in(void *priv,
                                   struct sk_buff *skb,
                                   const struct nf_hook_state *state)
 {
-       if (skb->nf_bridge && !skb->nf_bridge->in_prerouting)
-               return NF_STOP;
+       if (skb->nf_bridge && !skb->nf_bridge->in_prerouting) {
+               state->okfn(state->net, state->sk, skb);
+               return NF_STOLEN;
+       }
 
        return NF_ACCEPT;
 }
@@ -1016,10 +1018,10 @@ int br_nf_hook_thresh(unsigned int hook, struct net *net,
 
        /* We may already have this, but read-locks nest anyway */
        rcu_read_lock();
-       nf_hook_state_init(&state, elem, hook, NF_BR_PRI_BRNF + 1,
-                          NFPROTO_BRIDGE, indev, outdev, sk, net, okfn);
+       nf_hook_state_init(&state, hook, NFPROTO_BRIDGE, indev, outdev,
+                          sk, net, okfn);
 
-       ret = nf_hook_slow(skb, &state);
+       ret = nf_hook_slow(skb, &state, elem);
        rcu_read_unlock();
        if (ret == 1)
                ret = okfn(net, sk, skb);