- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Linux 内核中,我们在网络堆栈中有一个 sk_buff 结构,我们从中获取 inode,我们希望从这个 inode 中获取创建 inode 的进程的 pid。 sk_buff 中有一个 pid 字段,但它始终设置为 0。
有没有办法从内核内部知道 inode 的 pid?
最佳答案
您可以使用 skb 读取 PID
skb->sk->socket->file->f_owner->pid
对于一些较旧的内核版本,您可以将 PID 读作
skb->sk->socket->file->f_owner
关于c - 在 Linux 内核中从 sk_buff 和 inode 获取 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841483/
我正在为 Linux 内核编写一个模块,它试图窃取数据包及其相关的 sk_buff。为此,我想使用 struct sk_buff *skb_copy(const struct sk_buff *skb
struct sk_buff 确实很难理解(至少对我来说,当你第一次处理它时)。 在有人说我应该在提问之前先用谷歌搜索一下网络之前,请理解我确实这么做了,但运气不佳。有一些很好但过时的文档和论文,可以
我修改了一个虚拟网络设备的传输函数 (ndo_start_xmit),它获取一个 struct sk_buff skb_one 作为输入。 在传输流的某个时刻,我生成了第二个 struct sk_bu
我正在为 linux 内核开发一些网络驱动程序。它工作正常,但似乎存在内存泄漏。我认为我使用的两个功能是可疑的: skb2 = skb_realloc_headroom(skb, size); skb
谁能帮我解决以下问题: 我计划将新协议(protocol)添加到现有的 Linux 内核中。我的疑问是如何在使用 skb_alloc() 调用分配内存之前找出 sk_buff 结构大小 最佳答案 没有
sk_buff linux 内核中的数据结构被组织成一个双向链表,但是这个链表的最后一个成员和第一个成员指向一个sk_buff_head 结构。但是,next 和 prev 成员被声明为指向 sk_b
我正在编写一个 Linux 内核模块,它将数据包重定向到本地主机网络服务器,该数据包最初是通过这台机器使用网桥转发的。它还重定向以回复客户端。客户端忘记了重定向。所以有2个部分 1. 所有通过网桥转发
我需要在我的 NetFilter 钩子(Hook)中窃取一些 SKB,并保留它们一段时间。 内核是否有一次可以使用多少个 SKB 的限制?在我的内核模块中保存大约 100,000 个甚至更多的 SKB
我正在编写一个 netfilter 模块来根据目标 IP 检查来丢弃数据包。 我注册了一个nf钩子(Hook) nfho_out.hook = hook_func_out; nfho_out.hook
我发现 skb->users 持有使用这个特定缓冲区的实体数量。 但是既然SKB属于一个特定的套接字,对应于一个特定的进程,它怎么可能有多个用户呢? 最佳答案 sk_buffs 通常代表网络数据包。它
我有一个捕获传出互联网流量的内核模块(Netfilter hook:LOCAL_OUT)在这个钩子(Hook)处,仍然没有以太网头。 我构建了以太网 header 并准备好使用,但是如何将它附加到 s
由于sk_buff字段在本地处理,将其存储在主机顺序中更有意义。 sk_buff->vlan_tci 等字段是在主机顺序。存储某些字段是否有原因 sk_buff->protocol , sk_buff
是否有可能在 sk_buff 结构中获取 linux 内核中的套接字 ID?我知道我可以使用此代码获取 socket: const struct tcphdr *th = tcp_hdr(skb);
我打算开发一个应用程序来监控特定端口上的流量。为此,我需要列出系统中所有 LIVE sk_buff 的所有 sk_buff 数据。如何做到这一点? 我写了下面的代码(基本上是一个内核模块。) incl
我正在尝试从 struct sk_buff 中提取数据,但没有收到我期望的输出。有问题的帧是 34 字节;一个 14 字节的以太网 header 包裹着一个 8 字节(实验协议(protocol))
长话短说,我正在尝试构建一个非常简单的 UDP SKB,只是为了将一些东西放到线上。场景如下: 我加载了一个内核模块,它(除其他外)覆盖了/net/ipv4/udp.c 中标准 udp_sendmsg
我正在尝试将从机器传出的所有数据包的源 IP 修改为我在此内核模块中指定的内容,但每次我尝试访问 nh.iph->saddr 我在编译时收到一条错误消息 结构 sk_buff 没有名为 nh 的成员
我目前正在尝试调试在以太网之上运行的 ATM 封装层。基本上,ATM 信元在以太网 header 之后按顺序存储。但是我怀疑司机对 sk_buffs 的天真方法被打破了。 驱动程序盲目地假设 skb-
我正在开发一个 Linux 内核模块,它需要修改网络数据包并附加一个额外的 header 。我已经实现了修改部分,重新计算了校验和并且效果很好。但我不知道如何安全地附加一个额外的标题。如果我的输入
我们正在编写一个内核模块来向数据包添加一些额外的数据。我们在 skbuff 的数据部分的源中添加了 120 字节的数据,我们正试图从目标的 skbuff 中提取该数据。 以下是我们在两台机器上运行的内
我是一名优秀的程序员,十分优秀!