New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[draft] linux support #28
Conversation
this will be used for the linux netlink kroute backend
|
@kaniini, is this branch ready or do you still want to implement a few more things? |
|
hi Claudio, i’m using it in production, we can do the connected interface detection as a second PR if that’s alright :) |
|
Sound like a good plan. I will look over it again and merge it. |
|
How does the initial sync of the routing table work? |
|
Nexthop validation is still stubbed, I can add it though. |
|
Moving away form the stub nexthop validation is for sure needed for proper operation. |
|
Rebased and merged in d66bc87 |
|
Sounds great! |
This is the base support for installing and removing Linux kernel routes using OpenBGPD. Most things are working, e.g.
bgpctl fib couplewill behave as expected for the primary routing table.What is not implemented at the moment
MPLS support
I do not personally use MPLS, so I have no way of testing it in a practical way, and the Linux MPLS support is still quite new, so I haven't bothered to implement MPLS yet. Somebody who knows more about MPLS on Linux is of course welcome to contribute the backend stuff, I will try to review it to the best of my ability.
Connected interface detection (e.g.
kif_...routines)This is relatively straightforward to do, just need to send the appropriate
RTM_GETLINKmessages to the routing socket, and wait for the replies back.Dynamic networks
I am not really certain of the usecase of this on OpenBSD, so I have not given it much thought yet.
Multiple routing tables
This is trivial to add, the main problem is adjusting
ktable_existsfunction. Linux has 4096 route tables per network namespace, and they are always present, but I am not sure ifktable_existsimplies just basic existence of a route table, or actual configuration of one. The rest of the code is basically aware of multiple routing tables.