Free (GPLv2) TCP/IP stack developed by TASS Belgium

Fork of PicoTCP by Daniele Lacamera

Revision:
46:c35c84e301e0
Parent:
29:1a47b7151851
--- a/modules/pico_icmp4.c	Tue Jul 23 13:22:24 2013 +0000
+++ b/modules/pico_icmp4.c	Thu Jul 25 08:43:55 2013 +0000
@@ -44,16 +44,10 @@
   struct pico_icmp4_hdr *hdr = (struct pico_icmp4_hdr *) f->transport_hdr;
   if (hdr->type == PICO_ICMP_ECHO) {
     hdr->type = PICO_ICMP_ECHOREPLY;
-    /* Ugly, but the best way to get ICMP data size here. */
-    f->transport_len = f->buffer_len - PICO_SIZE_IP4HDR;
-    if (f->dev->eth)
-      f->transport_len -= PICO_SIZE_ETHHDR;
-    pico_icmp4_checksum(f);
-    f->net_hdr = f->transport_hdr - PICO_SIZE_IP4HDR;
-    f->start = f->net_hdr;
-    f->len = f->buffer_len;
+    /* outgoing frames require a f->len without the ethernet header len */
     if (f->dev->eth)
       f->len -= PICO_SIZE_ETHHDR;
+    pico_icmp4_checksum(f);
     pico_ipv4_rebound(f);
   } else if (hdr->type == PICO_ICMP_UNREACH) {
     f->net_hdr = f->transport_hdr + PICO_ICMPHDR_UN_SIZE;