X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=net%2Fbridge%2Fbr_fdb.c;h=eb57502bb2641b7087b50a8c2577699f3b3ab388;hb=0a7606c121d58c1831805262c5b764e181429e7d;hp=3fc697293819524823ee8bb4d9918493f12db6e0;hpb=c4d36a822e7c51cd6ffcf9133854d5e32489d269;p=linux-2.6-omap-h63xx.git diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 3fc69729381..eb57502bb26 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c @@ -36,7 +36,7 @@ int __init br_fdb_init(void) br_fdb_cache = kmem_cache_create("bridge_fdb_cache", sizeof(struct net_bridge_fdb_entry), 0, - SLAB_HWCACHE_ALIGN, NULL, NULL); + SLAB_HWCACHE_ALIGN, NULL); if (!br_fdb_cache) return -ENOMEM; @@ -384,6 +384,11 @@ void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source, if (hold_time(br) == 0) return; + /* ignore packets unless we are using this port */ + if (!(source->state == BR_STATE_LEARNING || + source->state == BR_STATE_FORWARDING)) + return; + fdb = fdb_find(head, addr); if (likely(fdb)) { /* attempt to update an entry for a local interface */