定义用于TCP内核代码的新套接字选项

时间:2017-05-28 10:30:32

标签: linux networking kernel tcp

我正在尝试为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 (可能包含多个标志值)。

如何定义新的套接字选项,以实现此目的?

0 个答案:

没有答案