Hi,
For one thing, I've changed the orig_node->router dereference as discussed on IRC, now using an extra getter method for that to reduce the lines of code for rcu-dereferencing, rcu-locking and refcounting for the router pointer and to make it easier to keep track of the right refcounting (Patch 4/5). Note, that the previous version was pretty simple, by just using rcu_dereference() everywhere. However, this current version is a little more invasive, so would be great if someone could double check that I didn't introduce any new mem-leaks or null-pointer-dereferences due to wrong refcounting. It already took me quite some time to find and squash two bugs I had introduced with this, so there might be even more in there. I double checked it myself and also tested it in a 4 node chain toplogy vm setup, though.
after reviewing these patches I made some modifications before committing them in revision 1956-1960.
Thanks, Marek