gpt4 book ai didi

linux - 获取 sk_buff 中套接字的套接字 ID

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:33 26 4
gpt4 key购买 nike

是否有可能在 sk_buff 结构中获取 linux 内核中的套接字 ID?我知道我可以使用此代码获取 socket:

const struct tcphdr *th = tcp_hdr(skb);
struct sock *sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
if (sk)
struct socket* = sk->sk_socket;

我在哪里可以找到 ID 以及这个 ID 的最大值是多少?

最佳答案

套接字是一个文件。

您会在 struct socket 中找到一个 struct file *file 成员。

我推荐你look at this question ,特别是链接 "things you never should do in the Kernel"关于已接受的答案,因为我担心您尝试从内核中的套接字结构检索文件描述符的原因(通常,您想做完全相反的事情)。

要从内核下的给定文件检索文件描述符,您需要迭代 fdtable(搜索 files_fdtable())...这是需要完成大量工作,尤其是在打开大量文件的情况下。

文件描述符值的最大值将是系统中允许的最大文件数,并且可以通过类似的方式检索:

files_fdtable(current->files)->max_fds;

关于linux - 获取 sk_buff 中套接字的套接字 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38819128/

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