如何在较新的内核中替换struct tcp_opt?

时间:2019-03-20 18:24:29

标签: linux-kernel kernel-module

我正在为内核2.4.x开发一个旧模块,并希望为内核4.15.0.19重写它。

有一个声明在编译期间导致错误:

struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);

我检查了较新的内核,并没有在任何地方定义tcp_opt结构,既没有tp_pinfo联合也没有af_tcp。

从2.4.x内核开始,它在struct sock中声明如下:

    union {
    struct tcp_opt      af_tcp;
    #if defined(CONFIG_INET) || defined (CONFIG_INET_MODULE)
    struct raw_opt      tp_raw4;
    #endif
    #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
    struct raw6_opt     tp_raw;
    #endif /* CONFIG_IPV6 */
    #if defined(CONFIG_SPX) || defined (CONFIG_SPX_MODULE)
    struct spx_opt      af_spx; 
    #endif /* CONFIG_SPX */

} tp_pinfo;

(在问题的开头)首次初始化的目的是什么?在较新的内核中该如何替换?


编辑:

我设法使用以下方法解决了这个问题:

const struct tcp_sock *tp = tcp_sk(sk);

然后以这种方式访问​​TCP选项:

tp->rx_opt.rcv_tsval

0 个答案:

没有答案