[PATCH v3] Babel: Replace internal route selection by bird's nest
dxld at darkboxed.org
dxld at darkboxed.org
Sat Feb 11 14:02:05 CET 2023
Hi Maria,
On Mon, Feb 06, 2023 at 02:19:53PM +0100, Maria Matejka wrote:
> Picking up this, hoping that it is still relevant.
Yes, absolutely :)
> You can do this as the import/export limits in BGP do exactly this, yet the
> appropriate function
>
> void proto_schedule_down(struct proto *p, byte restart, byte code);
>
> is currently marked static. There is no problem making this function static
> in case the protocol needs restart.
>
> Another way to do this is to initiate the protocol shutdown yourself by
> calling proto_notify_state(p, PS_DOWN) which restarts the protocol unless
> you set disabled = 1 … or if you need to do some asynchronous work, you may
> call first proto_notify_state(p, PS_STOP), then do and schedule that work
> and after it is finally done, you call proto_notify_state(p, PS_DOWN).
Perfect that sounds like what we'd want to do in this case.
I'm still trying to find a convincing argument for why the bad case can
never happen though. Can you think of a codepath that calls rt_notify with
one of our own routes outside of us calling into rte_update*? I'm having a
hard time reading the rt-table code, it just has so many twists and turns
:)
As long as that can never happens I just have to worry about our babel
internal object lifetimes.
> I should definitely put some time into writing a "how to write a protocol"
> guide.
Let me know if/when you need a clueless dummy to bounce drafts off of ;)
Thanks,
--Daniel
More information about the Bird-users
mailing list