Hi Currently TCP is statically linked to the kernel. How can I make it a loadable module? I need to modify TCP (tcp_input.c and tcp_output.c). It would be easier for my development if it's just another module (I don't need to restart every time). I changed the *fs_initcall(inet_init)* to *module_init(inet_init)*, but doesn't seem to help. Looking forward to your suggestions. Many thanks Tamim
On Sat, 05 Nov 2016 21:10:19 -0400, "Md. Islam" said:
Currently TCP is statically linked to the kernel. How can I make it a loadable module? I need to modify TCP (tcp_input.c and tcp_output.c).
What problem are you trying to solve by modifying those two? There may be other approaches to do it.
Currently TCP is statically linked to the kernel.
Correct, so how is this done and where ? Once you figure that part out you have what you need to do what you want to :)
How can I make it a loadable module?
Change into your source tree, look for this file: linux-4.7.2/linux-4.7.2/net/Kconfig Kconfig is used by the KBuild system that menuconfig uses. Look for the section: config INET bool "TCP/IP networking" <-- change bool to tristate, save and run make menuconfig. Now you can ask menuconfig to build TCP as a module. But... it may be better to if you can use: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt One last thing, heed the warnings in Kconfig they are there for a reason. Good luck and what exactly are you trying to do ? Am curious. Aruna ( Shrugs and gets ready to duck a flying trout Valdis may send my way :)
Hi Aruna Thanks a lot! I changed the Kconfig to tristate and set the config_INET=m. I also needed to add "depends on CONFIG_INET" to other config options those depend on INET. I could build it. But when I reboot, I got the following error and it doesn't boot. Giving up :-( error getting socket: Address family not supported by protocol error initializing udev control socket I'm trying to write a Media-friendly TCP (by implementing a new option). Please let me know if you have any suggestion. Many thanks Tamim On Mon, Nov 14, 2016 at 7:17 AM, Aruna Hewapathirane <aruna.hewapathirane@gmail.com> wrote:
Currently TCP is statically linked to the kernel.
Correct, so how is this done and where ? Once you figure that part out you have what you need to do what you want to :)
How can I make it a loadable module?
Change into your source tree, look for this file: linux-4.7.2/linux-4.7.2/net/Kconfig
Kconfig is used by the KBuild system that menuconfig uses.
Look for the section: config INET bool "TCP/IP networking" <-- change bool to tristate, save and run make menuconfig.
Now you can ask menuconfig to build TCP as a module.
But... it may be better to if you can use: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
One last thing, heed the warnings in Kconfig they are there for a reason.
Good luck and what exactly are you trying to do ? Am curious.
Aruna ( Shrugs and gets ready to duck a flying trout Valdis may send my way :)
-- Tamim PhD Student/Graduate Assistant CS Department, Kent State University Kent, OH 44240 http://web.cs.kent.edu/~mislam4/
On Tue, 15 Nov 2016 00:14:43 -0500, "Md. Islam" said:
I'm trying to write a Media-friendly TCP (by implementing a new option). Please let me know if you have any suggestion.
Step 0: Figure out what the new option is, and why you think it will be media-friendly. Hint: some 80% of internet traffic is streaming video, and seems to be doing OK without any new options. So you may want to double-check what you're planning to achieve. There's a pretty good chance that what you're trying to do can *already* be done with an existing tunable parameter, or with a traffic control module external to the main TCP stack (see the work on fq_codel to stop bufferbloat for an example).
participants (3)
-
Aruna Hewapathirane -
Md. Islam -
Valdis.Kletnieks@vt.edu