diff options
author | Pavel Emelianov <xemul@openvz.org> | 2007-05-03 18:13:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-05-03 18:13:45 -0400 |
commit | 7562f876cd93800f2f8c89445f2a563590b24e09 (patch) | |
tree | 78a34c011af275efa0d55ba59c3bd49b771dd533 /net/bridge | |
parent | 03fba0479600114f32d29eee74ca3eaa364606bf (diff) |
[NET]: Rework dev_base via list_head (v3)
Cleanup of dev_base list use, with the aim to simplify making device
list per-namespace. In almost every occasion, use of dev_base variable
and dev->next pointer could be easily replaced by for_each_netdev
loop. A few most complicated places were converted to using
first_netdev()/next_netdev().
Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Acked-by: Kirill Korotaev <dev@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_if.c | 4 | ||||
-rw-r--r-- | net/bridge/br_ioctl.c | 4 | ||||
-rw-r--r-- | net/bridge/br_netlink.c | 3 |
3 files changed, 6 insertions, 5 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 690573bbf012..849deaf14108 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c | |||
@@ -475,11 +475,9 @@ void __exit br_cleanup_bridges(void) | |||
475 | struct net_device *dev, *nxt; | 475 | struct net_device *dev, *nxt; |
476 | 476 | ||
477 | rtnl_lock(); | 477 | rtnl_lock(); |
478 | for (dev = dev_base; dev; dev = nxt) { | 478 | for_each_netdev_safe(dev, nxt) |
479 | nxt = dev->next; | ||
480 | if (dev->priv_flags & IFF_EBRIDGE) | 479 | if (dev->priv_flags & IFF_EBRIDGE) |
481 | del_br(dev->priv); | 480 | del_br(dev->priv); |
482 | } | ||
483 | rtnl_unlock(); | 481 | rtnl_unlock(); |
484 | 482 | ||
485 | } | 483 | } |
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c index eda0fbfc923a..bb15e9e259b1 100644 --- a/net/bridge/br_ioctl.c +++ b/net/bridge/br_ioctl.c | |||
@@ -27,7 +27,9 @@ static int get_bridge_ifindices(int *indices, int num) | |||
27 | struct net_device *dev; | 27 | struct net_device *dev; |
28 | int i = 0; | 28 | int i = 0; |
29 | 29 | ||
30 | for (dev = dev_base; dev && i < num; dev = dev->next) { | 30 | for_each_netdev(dev) { |
31 | if (i >= num) | ||
32 | break; | ||
31 | if (dev->priv_flags & IFF_EBRIDGE) | 33 | if (dev->priv_flags & IFF_EBRIDGE) |
32 | indices[i++] = dev->ifindex; | 34 | indices[i++] = dev->ifindex; |
33 | } | 35 | } |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 35facc0c11c2..0fcf6f073064 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
@@ -109,7 +109,8 @@ static int br_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) | |||
109 | struct net_device *dev; | 109 | struct net_device *dev; |
110 | int idx; | 110 | int idx; |
111 | 111 | ||
112 | for (dev = dev_base, idx = 0; dev; dev = dev->next) { | 112 | idx = 0; |
113 | for_each_netdev(dev) { | ||
113 | /* not a bridge port */ | 114 | /* not a bridge port */ |
114 | if (dev->br_port == NULL || idx < cb->args[0]) | 115 | if (dev->br_port == NULL || idx < cb->args[0]) |
115 | goto skip; | 116 | goto skip; |