在虚拟机上进行编译和执行,得到的结果源地址IP和目的地址IP是一样的,网络用的桥接模式。
在user程序中进行对百度的ping操作。而且监控网口改成了我自己的网口。
但是得到的就有我虚拟机的地址,socket源和目的地址都是。
这是负责储存信息的结构体,在map中作为键key。
这是给结构体中源和目标地址赋值的操作函数部分。
这是map,值为包的数量和大小的结构体。
这是user态的输出。
像是端口,协议号,包数和数据大小都能正常输出,就是这个源地址和目的地址是一样的。
然后我把源和目的地址改成定值1和2.
输出就是1和2,感觉这是对的(没有ping百度,是连接的vscode,走22端口)
然后我又去看了这个struct sk_buff的偏移量,确实也是不一样的,源地址n1的偏移量26,目的地址n2的偏移量30,理应得到两个不同的内容才对。
这俩load_word函数得到的理应是不同的值才对。但输出的确实是同一个值。
但输出就是一样的,就怀疑是struct sk_buff结构体里面填充的源和目的地址是一样的。
这个程序就是源码目录下/samples/bpf/sockex3.
我不能理解为什么,也许是我没理解到程序在做什么,求救大佬指导。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。