Compile the default stack as a module.
The biggest changes are:
- Move tcp_do_segment() into its own file.
- Move sysctl declarations out of the files that are compiled per-stack.
- Move tcp_setpersist() into the timer code.
- Create a new file to contain the code to register the default TCP stack.
We can use this to compile both new and old versions of the default TCP stack. We can also use this to upgrade the TCP stack without reboots: compile new versions of the TCP stack, load it as a module, switch the default to the new version, and restart any applications with listen sockets.
This change still includes the default TCP stack in the monolithic kernel. You could trivially extend this so the default TCP stack was itself a module.