xburst: remove support for old kernels
[openwrt/svn-archive/archive.git] / target / linux / generic / patches-3.2 / 644-bridge_optimize_netfilter_hooks.patch
index 06b05f8af96555f9cd4220165c685f6a2b97319a..6c3c3e5c60c4e3663ec4b200411c18e5ca6a9d8b 100644 (file)
@@ -1,12 +1,16 @@
 --- a/net/bridge/br_netfilter.c
 +++ b/net/bridge/br_netfilter.c
-@@ -62,6 +62,11 @@ static int brnf_filter_pppoe_tagged __re
+@@ -62,6 +62,15 @@ static int brnf_filter_pppoe_tagged __re
  #define brnf_filter_pppoe_tagged 0
  #endif
  
++int brnf_call_ebtables __read_mostly = 0;
++EXPORT_SYMBOL_GPL(brnf_call_ebtables);
++
 +bool br_netfilter_run_hooks(void)
 +{
-+      return brnf_call_iptables | brnf_call_ip6tables | brnf_call_arptables;
++      return brnf_call_iptables | brnf_call_ip6tables | brnf_call_arptables |
++             brnf_call_ebtables;
 +}
 +
  static inline __be16 vlan_proto(const struct sk_buff *skb)
        if (vlan_tx_tag_present(skb))
 --- a/net/bridge/br_private.h
 +++ b/net/bridge/br_private.h
-@@ -491,12 +491,25 @@ static inline bool br_multicast_is_route
+@@ -488,15 +488,29 @@ static inline bool br_multicast_is_route
+ /* br_netfilter.c */
+ #ifdef CONFIG_BRIDGE_NETFILTER
++extern int brnf_call_ebtables;
  extern int br_netfilter_init(void);
  extern void br_netfilter_fini(void);
  extern void br_netfilter_rtable_init(struct net_bridge *);
  
 --- a/net/bridge/br_multicast.c
 +++ b/net/bridge/br_multicast.c
-@@ -824,7 +824,7 @@ static void __br_multicast_send_query(st
+@@ -827,7 +827,7 @@ static void __br_multicast_send_query(st
        if (port) {
                __skb_push(skb, sizeof(struct ethhdr));
                skb->dev = port->dev;
                dev_queue_xmit);
  }
  
+--- a/net/bridge/netfilter/ebtables.c
++++ b/net/bridge/netfilter/ebtables.c
+@@ -2399,11 +2399,13 @@ static int __init ebtables_init(void)
+       }
+       printk(KERN_INFO "Ebtables v2.0 registered\n");
++      brnf_call_ebtables = 1;
+       return 0;
+ }
+ static void __exit ebtables_fini(void)
+ {
++      brnf_call_ebtables = 0;
+       nf_unregister_sockopt(&ebt_sockopts);
+       xt_unregister_target(&ebt_standard_target);
+       printk(KERN_INFO "Ebtables v2.0 unregistered\n");