[PATCH v3] Babel: Replace internal route selection by bird's nest

Maria Matejka maria.matejka at nic.cz
Sat Feb 11 14:22:13 CET 2023


Hello!
> 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
> :)

This is definitely possible, think about this case:

protocol babel { preference 150; ... }
protocol static { preference 200; ... }

$ show route
X/Y via A, preference 200, protocol static [*]
X/Y via B, preference 150, protocol babel

When Babel imports the route, it gets back (rt_notify) the static route 
which is best.

Then the admin requests "disable static1" and Babel gets (rt_notify) its 
own route without doing anything.

And you should also be aware that in BIRD 3, you never get rt_notify 
while calling rte_update(); route updates are always asynchronous and 
you get them always in a clean context.

>> 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 ;)

Thank you for volunteering!

Maria
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2839 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20230211/f53656d6/attachment.p7s>


More information about the Bird-users mailing list