]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/bridge/br_if.c
Merge branch 'linus' into x86/quirks
[linux-2.6-omap-h63xx.git] / net / bridge / br_if.c
index a072ea5ca6f58fc90b48e0b663cbaac4ff039816..573e20f7dba46065e5e40f103ba0196c64894f22 100644 (file)
@@ -168,7 +168,7 @@ static void del_br(struct net_bridge *br)
        unregister_netdevice(br->dev);
 }
 
-static struct net_device *new_bridge_dev(const char *name)
+static struct net_device *new_bridge_dev(struct net *net, const char *name)
 {
        struct net_bridge *br;
        struct net_device *dev;
@@ -178,6 +178,7 @@ static struct net_device *new_bridge_dev(const char *name)
 
        if (!dev)
                return NULL;
+       dev_net_set(dev, net);
 
        br = netdev_priv(dev);
        br->dev = dev;
@@ -202,6 +203,9 @@ static struct net_device *new_bridge_dev(const char *name)
        br->topology_change = 0;
        br->topology_change_detected = 0;
        br->ageing_time = 300 * HZ;
+
+       br_netfilter_rtable_init(br);
+
        INIT_LIST_HEAD(&br->age_list);
 
        br_stp_timer_init(br);
@@ -259,12 +263,12 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
        return p;
 }
 
-int br_add_bridge(const char *name)
+int br_add_bridge(struct net *net, const char *name)
 {
        struct net_device *dev;
        int ret;
 
-       dev = new_bridge_dev(name);
+       dev = new_bridge_dev(net, name);
        if (!dev)
                return -ENOMEM;
 
@@ -291,13 +295,13 @@ out_free:
        goto out;
 }
 
-int br_del_bridge(const char *name)
+int br_del_bridge(struct net *net, const char *name)
 {
        struct net_device *dev;
        int ret = 0;
 
        rtnl_lock();
-       dev = __dev_get_by_name(&init_net, name);
+       dev = __dev_get_by_name(net, name);
        if (dev == NULL)
                ret =  -ENXIO;  /* Could not find device */
 
@@ -442,13 +446,13 @@ int br_del_if(struct net_bridge *br, struct net_device *dev)
        return 0;
 }
 
-void __exit br_cleanup_bridges(void)
+void br_net_exit(struct net *net)
 {
        struct net_device *dev;
 
        rtnl_lock();
 restart:
-       for_each_netdev(&init_net, dev) {
+       for_each_netdev(net, dev) {
                if (dev->priv_flags & IFF_EBRIDGE) {
                        del_br(dev->priv);
                        goto restart;