Hi everyone- I posted a few weeks ago about extracting the TCP code into a loadable module, in order to facilitate easier debugging and TCP experimentation. Since it seems that there is no publicly available work on this, I decided to create it myself. I have finally finished an initial version of a custom TCP module. I have created a transport protocol called TCPSKS to verify my kernel patches. If anyone is interested, please contact me and I'd be more than happy to share it. I currently have a patch file for 2.4.20. Summary of how it works: Basically, to create a TCPSKS socket, a user uses the following call: int fd = socket(PF_INET, SOCK_STREAM, 135) /* whereas, usually the 3rd parameter is usually 0 */ Summary of how it works: The TCPSKS code is more or less the same as TCP, except it uses its own slab cache and module counts must be maintained. All the sysctl variables have been replicated and are local to my TCP module. The init routines are called upon module load, and certain data structures are destroyed when the module is unloaded. TCPSKS uses the same network layer as TCP although it is very straightforward to implement your own network layer. You could even implement your own protocol family. As it stands, there is a little bit of interdependence in the socket interface implementaiton in af_inet.c that I have not yet removed, which I plan to do. However, I have eliminated the interdependence in the listen system call, by modifying the protosw structure to include a listen member. I think this follows more closely to the BSD implementation anyway. For sure there may be some bugs, as it has not been exhaustively tested. But as an initial piece of work, it makes protocol development significantly easier, reducing the number of required reboots. Cheers- Shan Shan Sinha Network and Mobile Systems CSAIL MIT (formerly the Laboratory for Computer Science) ssinha@mit.edu - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html