我正在尝试为TCP内核代码添加一些功能(在 tcp_input.c 中)。我希望我实现的代码只在某些情况下运行。我想添加一个控制标志,可以从用户空间应用程序设置。
我(我想)我需要添加一个新的套接字选项,以便我可以使用setsockopt()
完成以下操作。
内核空间:
if(tcp_flags.simulate_ecn_signal) {
// run code for simulating ecn signal
}
用户空间:
if(tcp_info.tcpi_retransmits > LIMIT) {
u8 simulate_ecn_signal = 1;
// set the flag, so that the kernel code runs
if (setsockopt(sock, IPPROTO_TCP, TCP_FLAGS, &simulate_ecn_signal, sizeof(simulate_ecn_signal)) < 0)
printf("Can't set data with setsockopt.\n");
}
在上面的示例代码中,我添加了一个示例标志 simulate_ecn_signal
,我认为它可能是(新)套接字选项(struct)的成员,名为 tcp_flags
(可能包含多个标志值)。
如何定义新的套接字选项,以实现此目的?