netfilter的类型skb-> sk

时间:2019-02-04 16:32:31

标签: linux sockets kernel netfilter

我正在尝试编写一个NF_INET_LOCAL_OUT netfilter函数。该函数的参数之一是sk_buff* skb-套接字缓冲区,该结构具有一个sk,应该是该缓冲区来自的套接字。
然而,事实证明,在syn-ack数据包上,skb->sk不是实际的struct sock,而是struct request_sock,它是为服务连接请求而创建的“迷你”套接字。
struct request_sock有一个sk成员,该成员指向原始侦听套接字,但事实是,netfilter函数不知道skb->sk是真实的struct sock还是{{ 1}}。我正在编写的netfilter函数需要知道该原始侦听套接字的地址。
我想到的唯一方法是专门测试它是否是一个syn-ack数据包,然后将struct request_sock强制转换为skb->sk,但这似乎很脆弱。

0 个答案:

没有答案