]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/bridge/br_netfilter.c
netfilter: xtables: idletimer target implementation
[net-next-2.6.git] / net / bridge / br_netfilter.c
index 93f80fefa496f862eb12d6bb82af285d9e9e3e1f..cbea5af24ce6b3cce4cfb77805692e620702e0c8 100644 (file)
@@ -244,8 +244,7 @@ static int br_nf_pre_routing_finish_ipv6(struct sk_buff *skb)
                kfree_skb(skb);
                return 0;
        }
-       dst_hold(&rt->u.dst);
-       skb_dst_set(skb, &rt->u.dst);
+       skb_dst_set_noref(skb, &rt->u.dst);
 
        skb->dev = nf_bridge->physindev;
        nf_bridge_update_protocol(skb);
@@ -396,8 +395,7 @@ bridged_dnat:
                        kfree_skb(skb);
                        return 0;
                }
-               dst_hold(&rt->u.dst);
-               skb_dst_set(skb, &rt->u.dst);
+               skb_dst_set_noref(skb, &rt->u.dst);
        }
 
        skb->dev = nf_bridge->physindev;
@@ -643,10 +641,10 @@ static int br_nf_forward_finish(struct sk_buff *skb)
                        skb->pkt_type = PACKET_OTHERHOST;
                        nf_bridge->mask ^= BRNF_PKT_TYPE;
                }
+               nf_bridge_update_protocol(skb);
        } else {
                in = *((struct net_device **)(skb->cb));
        }
-       nf_bridge_update_protocol(skb);
        nf_bridge_push_encap_header(skb);
 
        NF_HOOK_THRESH(NFPROTO_BRIDGE, NF_BR_FORWARD, skb, in,