diff options
author | Jiri Pirko <jpirko@redhat.com> | 2010-06-15 02:50:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-15 14:48:58 -0400 |
commit | f350a0a87374418635689471606454abc7beaa3a (patch) | |
tree | c8210542a9848f6b5953b58d2ba1dbfb11715f14 /net/bridge/br_fdb.c | |
parent | a35e2c1b6d90544b3c688783869817628e5f9607 (diff) |
bridge: use rx_handler_data pointer to store net_bridge_port pointer
Register net_bridge_port pointer as rx_handler data pointer. As br_port is
removed from struct net_device, another netdev priv_flag is added to indicate
the device serves as a bridge port. Also rcuized pointers are now correctly
dereferenced in br_fdb.c and in netfilter parts.
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_fdb.c')
-rw-r--r-- | net/bridge/br_fdb.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 26637439965b..6818e609b2c0 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c | |||
@@ -242,11 +242,11 @@ int br_fdb_test_addr(struct net_device *dev, unsigned char *addr) | |||
242 | struct net_bridge_fdb_entry *fdb; | 242 | struct net_bridge_fdb_entry *fdb; |
243 | int ret; | 243 | int ret; |
244 | 244 | ||
245 | if (!dev->br_port) | 245 | if (!br_port_exists(dev)) |
246 | return 0; | 246 | return 0; |
247 | 247 | ||
248 | rcu_read_lock(); | 248 | rcu_read_lock(); |
249 | fdb = __br_fdb_get(dev->br_port->br, addr); | 249 | fdb = __br_fdb_get(br_port_get_rcu(dev)->br, addr); |
250 | ret = fdb && fdb->dst->dev != dev && | 250 | ret = fdb && fdb->dst->dev != dev && |
251 | fdb->dst->state == BR_STATE_FORWARDING; | 251 | fdb->dst->state == BR_STATE_FORWARDING; |
252 | rcu_read_unlock(); | 252 | rcu_read_unlock(); |