|
@@ -1086,7 +1086,7 @@ NetReceive(uchar *inpkt, int len)
|
|
|
if ((ip->ip_hl_v & 0x0f) > 0x05)
|
|
|
return;
|
|
|
/* Check the Checksum of the header */
|
|
|
- if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE / 2)) {
|
|
|
+ if (!ip_checksum_ok((uchar *)ip, IP_HDR_SIZE)) {
|
|
|
debug("checksum bad\n");
|
|
|
return;
|
|
|
}
|
|
@@ -1290,27 +1290,6 @@ common:
|
|
|
}
|
|
|
/**********************************************************************/
|
|
|
|
|
|
-int
|
|
|
-NetCksumOk(uchar *ptr, int len)
|
|
|
-{
|
|
|
- return !((NetCksum(ptr, len) + 1) & 0xfffe);
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-unsigned
|
|
|
-NetCksum(uchar *ptr, int len)
|
|
|
-{
|
|
|
- ulong xsum;
|
|
|
- ushort *p = (ushort *)ptr;
|
|
|
-
|
|
|
- xsum = 0;
|
|
|
- while (len-- > 0)
|
|
|
- xsum += *p++;
|
|
|
- xsum = (xsum & 0xffff) + (xsum >> 16);
|
|
|
- xsum = (xsum & 0xffff) + (xsum >> 16);
|
|
|
- return xsum & 0xffff;
|
|
|
-}
|
|
|
-
|
|
|
int
|
|
|
NetEthHdrSize(void)
|
|
|
{
|
|
@@ -1410,7 +1389,7 @@ void net_set_udp_header(uchar *pkt, IPaddr_t dest, int dport, int sport,
|
|
|
net_set_ip_header(pkt, dest, NetOurIP);
|
|
|
ip->ip_len = htons(IP_UDP_HDR_SIZE + len);
|
|
|
ip->ip_p = IPPROTO_UDP;
|
|
|
- ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE >> 1);
|
|
|
+ ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
|
|
|
|
|
|
ip->udp_src = htons(sport);
|
|
|
ip->udp_dst = htons(dport);
|