gpt4 book ai didi

c - Linux 内核源代码中定义的 TTL(生存时间)值在哪里?

转载 作者:行者123 更新时间:2023-11-30 14:32:54 24 4
gpt4 key购买 nike

我很难找到 Linux 内核源代码中定义 TTL 的位置。有人能指出它在哪个文件吗?

我不确定,但我可能在 net/ipv4/ipconfig.c 的第 820 行找到了它

    /* Construct IP header */
skb_reset_network_header(skb);
h = ip_hdr(skb);
h->version = 4;
h->ihl = 5;
h->tot_len = htons(sizeof(struct bootp_pkt));
h->frag_off = htons(IP_DF);
h->ttl = 64;

如果我更改它并编译内核源代码,我会使用新值吗?

编辑:它也可以在 include/uapi/linux/ip.h 第 69 行定义:

#define IPVERSION   4
#define MAXTTL 255
#define IPDEFTTL 64

最佳答案

好的,我已经弄清楚了。它在 include/uapi/linux/ip.h 第 69 行定义(对于版本 5.5-rc5)。

#define IPDEFTTL    64

我将其更改为其他内容(即 123),编译源代码,安装它,并使用 Wireshark 验证我的数据包的 TTL 是否已更改(更改为 123)。

源代码中使用此功能的位置位于 net/ipv4/af_inet.c 的第 1828 行(对于版本 5.5-rc5):

    /* Default values for sysctl-controlled parameters.
* We set them here, in case sysctl is not compiled.
*/
net->ipv4.sysctl_ip_default_ttl = IPDEFTTL;

关于c - Linux 内核源代码中定义的 TTL(生存时间)值在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com