- 论坛徽章:
- 0
|
本帖最后由 316953425 于 2014-03-27 12:53 编辑
回复 2# Godbach
我用如下代码重新计算了ip和tcp的校验和以后:
54 sb->csum = 0;
55 iph_off = iph->ihl << 2;
56 tcph_off = tcph->doff << 2;
57
58 /*IP*/
59 iph->check = 0;
60 iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
61
62 sb->csum = 0;
63 sb->csum = csum_partial((unsigned char *)(tcph + tcph_off),
64 ntohs(iph->tot_len)-iph_off-tcph_off, 0);
65 /*TCP*/
66 tcph->check = 0;
67 tcph->check = csum_tcpudp_magic(iph->saddr, iph->daddr,
68 ntohs(iph->tot_len)-iph_off, iph->protocol,
69 csum_partial((unsigned char *)tcph, tcph_off, sb->csum));
70
71 sb->ip_summed = CHECKSUM_NONE;
发现syn和fin对端可以正常收到,但是承载数据的tcp包,对端还是收不到为什么啊???
我是直接在sk_buff上修改的,没有复制一个新的sk_buff
|
|