最近在eBPF的TC程序中对TCP的checksum进行重计算,其中遇到了点“小”问题。
在重计算checksum后,发现携带payload的报文checksum总是计算错误:
刚开始是以为没有考虑末尾单字节,但是代码单独拉出来做单元测试又没有问题。
最后把skb->data_end - skb->data看了以下长度,发现这个长度和前面无payload的报文长度一样,最后才发现skb->data_end其实是报文4层网络头的结束位置,而且我计算checksum的结束位置正是skb->data_end,实在是很“坑”,这个命名怎么看都像是...
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。