diff options
| author | Miguel <m.i@gmx.at> | 2018-09-25 22:57:30 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-25 22:57:30 +0200 |
| commit | 065de9ace593e41a59ed21b713c5fffbec759d50 (patch) | |
| tree | d4ca509bf23cecf388246e18ec93127c9e89be0d /net/icmp.c | |
| parent | f93f24f3a5ca4692a28ab4970bbf158e1f486074 (diff) | |
ip/icmp checksum fix
Diffstat (limited to 'net/icmp.c')
| -rw-r--r-- | net/icmp.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -26,8 +26,8 @@ bool icmp_reply(struct netdev *dev,struct eth_hdr *hdr) data->csum=0; ipv4->csum=0; - data->csum=htons(checksum(data,ipv4->len-ipv4->ihl*4)); - ipv4->csum=htons(checksum(ipv4,ntohs(ipv4->len))); + data->csum=(checksum(data,ntohs(ipv4->len)-ipv4->ihl*4)); + ipv4->csum=(checksum(ipv4,ntohs(ipv4->len))); dev->transmit(hdr,ntohs(ipv4->len)+14); // 14bytes for link2 @@ -43,7 +43,7 @@ bool icmp_incoming(struct netdev *dev,struct eth_hdr *hdr) klog ("icmp code=%d",data->code); klog ("icmp csum=0x%04x",ntohs(data->csum)); data->csum=0; - klog("expected checksum = 0x%04X",checksum(data,ipv4->len-ipv4->ihl*4)); + klog("expected checksum = 0x%04X",checksum(data,ntohs(ipv4->len)-ipv4->ihl*4)); if(data->type==ICMP_ECHO_REQUEST) // echo request { |
