Sockets 在什么情况下bpf_get_socket_cookie()返回0

Sockets 在什么情况下bpf_get_socket_cookie()返回0,sockets,linux-kernel,bpf,trafficshaping,Sockets,Linux Kernel,Bpf,Trafficshaping,声明如果skb中缺少套接字字段,则bpf\u get\u socket\u cookie()返回0 在这种情况下,套接字字段在什么情况下丢失?它是否取决于BPF程序连接到数据路径中的哪个位置?例如,bpf\u get\u socket\u cookie()如果筛选器附加了tc filter add dev。。。进入。。。bpf…(比如说,在Linux内核4.19上)?如果数据包尚未解复用到套接字,则套接字字段为空。对于TCP,这种情况发生在 因此,是的,这将取决于您将BPF程序附加到何处。您需要

声明如果
skb
中缺少套接字字段,则
bpf\u get\u socket\u cookie()
返回0


在这种情况下,套接字字段在什么情况下丢失?它是否取决于BPF程序连接到数据路径中的哪个位置?例如,
bpf\u get\u socket\u cookie()
如果筛选器附加了
tc filter add dev。。。进入。。。bpf…
(比如说,在Linux内核4.19上)?

如果数据包尚未解复用到套接字,则套接字字段为空。对于TCP,这种情况发生在


因此,是的,这将取决于您将BPF程序附加到何处。您需要在数据包解复用到套接字之前将其连接。

非常感谢。您还知道
tc过滤器的连接点是否添加了开发。。。进入。。。bpf…
是一种数据包尚未解复用到套接字的协议(在TCP的情况下)?(我想是的,因为流量低于L4。)或者这取决于:TCP流开始时为NULL,后续包为非NULL。这些实验表明,
bpf\u get\u socket\u cookie()
对于此类附件总是返回0,如果需要访问此类cookie,则必须在数据路径的其他位置附加bpf程序。