.. | .. |
---|
868 | 868 | { |
---|
869 | 869 | struct nf_bridge_info *nf_bridge = nf_bridge_info_get(skb); |
---|
870 | 870 | |
---|
871 | | - if (nf_bridge && !nf_bridge->in_prerouting && |
---|
872 | | - !netif_is_l3_master(skb->dev) && |
---|
873 | | - !netif_is_l3_slave(skb->dev)) { |
---|
874 | | - state->okfn(state->net, state->sk, skb); |
---|
875 | | - return NF_STOLEN; |
---|
| 871 | + if (nf_bridge) { |
---|
| 872 | + if (nf_bridge->sabotage_in_done) |
---|
| 873 | + return NF_ACCEPT; |
---|
| 874 | + |
---|
| 875 | + if (!nf_bridge->in_prerouting && |
---|
| 876 | + !netif_is_l3_master(skb->dev) && |
---|
| 877 | + !netif_is_l3_slave(skb->dev)) { |
---|
| 878 | + nf_bridge->sabotage_in_done = 1; |
---|
| 879 | + state->okfn(state->net, state->sk, skb); |
---|
| 880 | + return NF_STOLEN; |
---|
| 881 | + } |
---|
876 | 882 | } |
---|
877 | 883 | |
---|
878 | 884 | return NF_ACCEPT; |
---|