- 論壇徽章:
- 0
|
本帖最后由 316953425 于 2014-03-27 12:53 編輯
回復(fù) 2# Godbach
我用如下代碼重新計(jì)算了ip和tcp的校驗(yàn)和以后:
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;
發(fā)現(xiàn)syn和fin對(duì)端可以正常收到,但是承載數(shù)據(jù)的tcp包,對(duì)端還是收不到為什么???
我是直接在sk_buff上修改的,沒(méi)有復(fù)制一個(gè)新的sk_buff
|
|