Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/bridge/br_netfilter.c

Filename:/net/bridge/br_netfilter.c
Lines Added:13
Lines Deleted:31
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25-rc9-git1  2.6.25-rc9-git2  2.6.25-rc9-git3  2.6.25 

Location
[  2.6.25-rc7
  [  net
    [  bridge
       o  br_netfilter.c

Patch

diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index 9f78a69..1c0efd8 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -353,7 +353,7 @@ static int br_nf_pre_routing_finish(struct sk_buff *skb)
          if (err != -EHOSTUNREACH || !in_dev || IN_DEV_FORWARD(in_dev))
             goto free_skb;
 
-         if (!ip_route_output_key(&rt, &fl)) {
+         if (!ip_route_output_key(&init_net, &rt, &fl)) {
             /* - Bridged-and-DNAT'ed traffic doesn't
              *   require ip_forwarding. */
             if (((struct dst_entry *)rt)->dev == dev) {
@@ -511,7 +511,7 @@ static unsigned int br_nf_pre_routing_ipv6(unsigned int hook,
    if (!setup_pre_routing(skb))
       return NF_DROP;
 
-   NF_HOOK(PF_INET6, NF_IP6_PRE_ROUTING, skb, skb->dev, NULL,
+   NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, skb->dev, NULL,
       br_nf_pre_routing_finish_ipv6);
 
    return NF_STOLEN;
@@ -584,7 +584,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff *skb,
       return NF_DROP;
    store_orig_dstaddr(skb);
 
-   NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, skb->dev, NULL,
+   NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, skb->dev, NULL,
       br_nf_pre_routing_finish);
 
    return NF_STOLEN;
@@ -681,7 +681,7 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb,
    nf_bridge->mask |= BRNF_BRIDGED;
    nf_bridge->physoutdev = skb->dev;
 
-   NF_HOOK(pf, NF_IP_FORWARD, skb, bridge_parent(in), parent,
+   NF_HOOK(pf, NF_INET_FORWARD, skb, bridge_parent(in), parent,
       br_nf_forward_finish);
 
    return NF_STOLEN;
@@ -828,11 +828,7 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff *skb,
    nf_bridge_pull_encap_header(skb);
    nf_bridge_save_header(skb);
 
-#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
-   if (nf_bridge->netoutdev)
-      realoutdev = nf_bridge->netoutdev;
-#endif
-   NF_HOOK(pf, NF_IP_POST_ROUTING, skb, NULL, realoutdev,
+   NF_HOOK(pf, NF_INET_POST_ROUTING, skb, NULL, realoutdev,
       br_nf_dev_queue_xmit);
 
    return NF_STOLEN;
@@ -871,7 +867,7 @@ static unsigned int ip_sabotage_in(unsigned int hook, struct sk_buff *skb,
  * PF_BRIDGE/NF_BR_LOCAL_OUT functions don't get bridged traffic as input.
  * For br_nf_post_routing, we need (prio = NF_BR_PRI_LAST), because
  * ip_refrag() can return NF_STOLEN. */
-static struct nf_hook_ops br_nf_ops[] = {
+static struct nf_hook_ops br_nf_ops[] __read_mostly = {
    { .hook = br_nf_pre_routing,
      .owner = THIS_MODULE,
      .pf = PF_BRIDGE,
@@ -905,12 +901,12 @@ static struct nf_hook_ops br_nf_ops[] = {
    { .hook = ip_sabotage_in,
      .owner = THIS_MODULE,
      .pf = PF_INET,
-     .hooknum = NF_IP_PRE_ROUTING,
+     .hooknum = NF_INET_PRE_ROUTING,
      .priority = NF_IP_PRI_FIRST, },
    { .hook = ip_sabotage_in,
      .owner = THIS_MODULE,
      .pf = PF_INET6,
-     .hooknum = NF_IP6_PRE_ROUTING,
+     .hooknum = NF_INET_PRE_ROUTING,
      .priority = NF_IP6_PRI_FIRST, },
 };
 
@@ -967,24 +963,10 @@ static ctl_table brnf_table[] = {
    { .ctl_name = 0 }
 };
 
-static ctl_table brnf_bridge_table[] = {
-   {
-      .ctl_name   = NET_BRIDGE,
-      .procname   = "bridge",
-      .mode      = 0555,
-      .child      = brnf_table,
-   },
-   { .ctl_name = 0 }
-};
-
-static ctl_table brnf_net_table[] = {
-   {
-      .ctl_name   = CTL_NET,
-      .procname   = "net",
-      .mode      = 0555,
-      .child      = brnf_bridge_table,
-   },
-   { .ctl_name = 0 }
+static struct ctl_path brnf_path[] = {
+   { .procname = "net", .ctl_name = CTL_NET, },
+   { .procname = "bridge", .ctl_name = NET_BRIDGE, },
+   { }
 };
 #endif
 
@@ -996,7 +978,7 @@ int __init br_netfilter_init(void)
    if (ret < 0)
       return ret;
 #ifdef CONFIG_SYSCTL
-   brnf_sysctl_header = register_sysctl_table(brnf_net_table);
+   brnf_sysctl_header = register_sysctl_paths(brnf_path, brnf_table);
    if (brnf_sysctl_header == NULL) {
       printk(KERN_WARNING
              "br_netfilter: can't register to sysctl.\n");


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.