spmzt
Developer
I was reading the source code for route(8) and noticed that we have implemented netlink support for our base utilities.
I'm trying to understand why we decided to switch our userland sockets to support netlink.
I have read several comparison articles on the internet, and their reasoning includes:
I also saw commit messages regarding netlink that mentioned "not abusing" BSD sockets. What exactly constitutes abusing the syscall, which is primarily designed for that purpose?
I'm trying to understand why we decided to switch our userland sockets to support netlink.
I have read several comparison articles on the internet, and their reasoning includes:
- "Netlink is async": BSD sockets can be used asynchronous too; they can be used with poll(2) and SOCK_NONBLOCK sockets.
- "Netlink is a loadable kernel module": not justify the reason behind changing the default route.c to route_netlink.c
- "Netlink socket supports multicast": Again, This alone does not justify replacing BSD sockets with netlink in our base utilities.
- "Netlink socket includes firewall features": We don't have this feature, which is understandable, and it is also not related to our use case.
I also saw commit messages regarding netlink that mentioned "not abusing" BSD sockets. What exactly constitutes abusing the syscall, which is primarily designed for that purpose?