Linus Lüssing
2023-Aug-08 00:29 UTC
[Bridge] Getting + maintaining a consistent MDB view in userspace?
Hi, Is there a recommended way to get and monitor the MDB state from userspace, without potential synchronization races? I can use "bridge monitor mdb" to get changes or "bridge mdb show" to get the current state (as well as use the underlying netlink calls from my own application without the "bridge" command). But if I were first calling "bridge mdb show" and then "bridge monitor mdb" then there is a brief moment where I might miss some changes. Or if I were doing it the other way around then a change might wrongly override a valid entry? Or the full dump might not be as up to date as the change event I got before? Ideally I'd be looking for a variant of "bridge monitor mdb" which first dumps the whole, consistent mdb state and after that provides updates in the correct order. Regards, Linus
Stephen Hemminger
2023-Aug-08 01:20 UTC
[Bridge] Getting + maintaining a consistent MDB view in userspace?
On Tue, 8 Aug 2023 02:29:09 +0200 Linus L?ssing <linus.luessing at c0d3.blue> wrote:> Hi, > > Is there a recommended way to get and monitor the MDB state from > userspace, without potential synchronization races? > > I can use "bridge monitor mdb" to get changes or "bridge mdb show" > to get the current state (as well as use the underlying netlink > calls from my own application without the "bridge" command). > > But if I were first calling "bridge mdb show" and then "bridge > monitor mdb" then there is a brief moment where I might miss some > changes. Or if I were doing it the other way around then a change > might wrongly override a valid entry? Or the full dump might not > be as up to date as the change event I got before? > > Ideally I'd be looking for a variant of "bridge monitor mdb" which > first dumps the whole, consistent mdb state and after that > provides updates in the correct order. > > Regards, LinusSame issue as dumping routing table which routing daemons deal with. Most applications end up with two netlink sockets, one for monitor and one for dumping. You really can't do it from the bridge utility, need to build your own tools.