<div dir="ltr">Hi Alexander,<div><br></div><div>Thanks for the reply. I think the kernel/iface stuff is a little bit more complicated than you've explained - there are lots of places around the code where calls are made directly rather than referring to the functions in the proto structure. I'm trying to make clones of the krt and iface modules just to see what it'll take, but there are a few loose ends - for example, kif_choose_primary() is called directly in a few different places - this needs to be based on the proto structure for the kernel if we want any chance of being able to change kernel modules at config/runtime instead of at build time.</div>
<div><br></div><div>Cheers</div><div>Sam</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 14, 2013 at 4:04 PM, Alexander V. Chernikov <span dir="ltr"><<a href="mailto:melifaro@ipfw.ru" target="_blank">melifaro@ipfw.ru</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 14.06.2013 06:51, Sam Russell wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I want a way to swap out the kernel/iface stuff from BIRD and replace<br>
that with something that can talk to an OpenFlow/SDN controller. I've<br>
made a start debugging to find out where I need to cut things into place<br>
and put it in github (bird Git was broken yesterday so had to start from<br>
1.3.10 tarball) <a href="https://github.com/samrussell/bird" target="_blank">https://github.com/samrussell/<u></u>bird</a><br>
<br>
Is anyone else keen for this? I've hooked the krt_notify,<br>
krt_learn_announce_update and ifa_send_notify functions and these seem<br>
to be the main things - would this be enough to make a start?<br>
<br>
My ideal goal would be to separate all the kernel/interface code from<br>
the engine and abstract it away in another protocol (or 2) so that<br>
</blockquote></div>
It is already separated - no one stops you from not using Device / Kernel protocol instances in your config files. Kernel protocol is _a bit_ special and OS-dependent, but generally it is just the same protocol as any other.<br>

<br>
Note that you still need to have some real interface information for IGP to work if you need it.<br>
<br>
In all other cases you can simply add new protocol/protocols in proto/ section.<br>
<br>
I've stared some tutorial on writing new bird protocol once, but it is currently in a very early stage.<br>
<a href="http://bird.mpls.in/projects/mpls-bird/wiki/Bird_new_proto" target="_blank">http://bird.mpls.in/projects/<u></u>mpls-bird/wiki/Bird_new_proto</a><br>
<br>
Maybe this can help a bit..<div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
different kernels/controllers can be swapped out at config time or run<br>
time, not at build time.<br>
<br>
Keen for any feedback<br>
<br>
Cheers<br>
Sam<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>