Added option CHECKSUM_GEN_ICMP

This commit is contained in:
goldsimon 2012-01-16 09:40:15 +01:00
parent 4bcb7accb8
commit 5546e46c60
3 changed files with 14 additions and 0 deletions

View File

@ -6,6 +6,9 @@ HISTORY
++ New features:
2012-01-16: Simon Goldschmidt
* opt.h, icmp.c: Added option CHECKSUM_GEN_ICMP
2011-07-21: Simon Goldschmidt (patch by hanhui)
* ip4.c, etharp.c, pbuf.h: bug #33634 ip_forward() have a faulty behaviour:
Added pbuf flags to mark incoming packets as link-layer broadcast/multicast.

View File

@ -190,12 +190,16 @@ icmp_input(struct pbuf *p, struct netif *inp)
ip_addr_copy(iphdr->src, *ip_current_dest_addr());
ip_addr_copy(iphdr->dest, *ip_current_src_addr());
ICMPH_TYPE_SET(iecho, ICMP_ER);
#if CHECKSUM_GEN_ICMP
/* adjust the checksum */
if (iecho->chksum >= PP_HTONS(0xffffU - (ICMP_ECHO << 8))) {
iecho->chksum += PP_HTONS(ICMP_ECHO << 8) + 1;
} else {
iecho->chksum += PP_HTONS(ICMP_ECHO << 8);
}
#else /* CHECKSUM_GEN_ICMP */
iecho->chksum = 0;
#endif /* CHECKSUM_GEN_ICMP */
/* Set the correct TTL and recalculate the header checksum. */
IPH_TTL_SET(iphdr, ICMP_TTL);

View File

@ -1803,6 +1803,13 @@
#define CHECKSUM_GEN_TCP 1
#endif
/**
* CHECKSUM_GEN_ICMP==1: Generate checksums in software for outgoing ICMP packets.
*/
#ifndef CHECKSUM_GEN_ICMP
#define CHECKSUM_GEN_ICMP 1
#endif
/**
* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.
*/