All functions are checked right now and all functions can be NULL. Check the patch #2 ...
This seems strange. What sort of routing protocol can you build, which has a NULL receive function? Only static routes. I would perform the check once in _register(), that there is a receive function, and never check it again. Save yourself a few cycles.
There is an LWN article about these ideas. Worth a read. I will post a link later.
Andrew