bridge: Fix problems around fdb entries pointing to the bridge device
authorToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Thu, 4 Aug 2016 02:11:19 +0000 (11:11 +0900)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Aug 2016 04:42:44 +0000 (21:42 -0700)
commit7bb90c3715a496c650b2e879225030f9dd9cfafb
tree21e9961ec303a730ac0bef04661e4638e5dd2fe2
parent836384d2501dee87b1c437f3e268871980c857bf
bridge: Fix problems around fdb entries pointing to the bridge device

Adding fdb entries pointing to the bridge device uses fdb_insert(),
which lacks various checks and does not respect added_by_user flag.

As a result, some inconsistent behavior can happen:
* Adding temporary entries succeeds but results in permanent entries.
* Same goes for "dynamic" and "use".
* Changing mac address of the bridge device causes deletion of
  user-added entries.
* Replacing existing entries looks successful from userspace but actually
  not, regardless of NLM_F_EXCL flag.

Use the same logic as other entries and fix them.

Fixes: 3741873b4f73 ("bridge: allow adding of fdb entries pointing to the bridge device")
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_fdb.c