Overhaul netmod system
Ratman runs in userspace and doesn't require any special privileges and netmods are statically linked into a Ratman instance. However we'll have netmods (see !106 (merged)) that require permissions on a system. Ideally this doesn't mean that users will have to run the entire router as root. Another consideration is allowing users to include their own netmods without having to re-compile the router from scratch.
Potentially there's three approaches we can take here:
- Don't change anything: Ratman will need to be statically linked against netmods and run as root if any of the netmods require special permissions
- Allow loading of driver modules via
.so
path which allows users to include their own netmods without having to re-compile the router but doesn't solve the permission problem - Create another netmod socket API and spawn a new process for each netmod. In this model permissions for a driver can be isolated without having to elevate the entire Router. It also allows for users to include their own modules without having to re-compile Ratman.
Problems
- Makes Ratman harder to start?
- Adds latency to the sending flow
- Generally more complex setup and debug-ability