mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2025-03-13 18:07:03 +00:00
Channels that are down keep ptr on routing tables but do not keep them locked. It is safe because the existence of tables depend on being configured. But when a table is removed during reconfiguration, the channel kept a dangling pointer since it fell down until it was removed. This could be triggered by 'show protocols all' and other similar. Change locking so that a channel kept a table locked for its whole existence. The same change is already in BIRD 3. Note that this is somewhat conceptually problematic as downed channels do not keep resources. Also, other objects in specialized channels (igp_table, base_table in bgp_channel, mpls_domain / mpls_range in mpls_channel) are still locked only when channel is active, but for them it is easier to keep track that they are not accessed when they are deconfigured.