gpt4 book ai didi

c - 我需要从内核空间调用套接字 "setopt"例程

转载 作者:可可西里 更新时间:2023-11-01 02:47:53 26 4
gpt4 key购买 nike

我需要从内核空间更改 TCP 套接字(尽管我想保持它的通用性)。 USB 驱动程序将收到一条消息,需要对给定的 socket 结构进行此更改。

直接调用该函数需要用户空间内存,我无法在生产环境中使用变通方法。因此,直接调用似乎不太可能。我看到的另一个解决方案是复制需要用户空间内存的部分,但我也不想将此解决方案投入生产。

我正在考虑编写一个用户空间程序,通过 procfs 与驱动程序对话并进行调用。驱动程序会将数据放入文件中以指示用户空间应用程序执行各种操作。

有没有更好的方法来实现这一点?

最佳答案

根据选项,您可以调用 sock_setsockopttcp_setsockopt来自内核空间。还有 IPv4 的函数和 IPv6选项。

或者,如果您只想操作特定选项,您可以查看这些函数是如何实现的,然后对您的特定选项使用相同的实现。例如,如果您想调整 TCP_CONGESTION tcp_setsockopt 直接执行此操作(在验证传入的值之后):

    lock_sock(sk);
err = tcp_set_congestion_control(sk, name, true, true,
ns_capable(sock_net(sk)->user_ns,
CAP_NET_ADMIN));
release_sock(sk);

关于c - 我需要从内核空间调用套接字 "setopt"例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662617/

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