I am using Quagga ATM but I had a quick look at BIRD and I got a few observations.
The LSA/checksum code seem very inefficient. LSAs are built allocating/reallocing bits of memory. This is slow and will case memory fragmentation. The fletcher checksum is very slow as it has extra tests in the hot path and also flips endian in the LSA back and forth. I can't work out how the SPF next hop works(calc_next_hop). I tried to compare it with Quagga's ospf_nexthop_calculation() but the structure is too different. The reason for me looking into this was to see how much work it would be to add unnumbered ppp links but as I can't work out how nexthop is working I didn't get very far. I have impl. unnumbered ppp link for Quagga that works really well but this work hasn't been accepted into Quagga yet since Quagga development has stalled. I could show you how I did it Quagga though. Jocke