On Tue, 2007-05-22 at 11:50 +0200, Matthias Weisser wrote: > Hi > > The ping problem I had yesterday disappears when I use a Linux system > to ping my target. Now the ICMP packet from Linux arrives inside the > lwIP stack and a valid reply message is created. This message is then > passed to etharp_output which tries to make room for the ethernet > header with the pbuf_header function. But this wont work. This > > if ((u8_t *)p->payload < (u8_t *)p + sizeof(struct pbuf)) > > is true and therefor the function fails. I don't have any idea how to > fix this. Maybe its quite a simple problem (missing define?).
lwIP is a little bit cheeky and reuses the pbuf with the ICMP request to form the ICMP reply. It is therefore assuming that there is room at the front for the necessary headers. I suppose if your ethernet driver was being very efficient and had stripped off the ethernet header before creating the pbuf, this might not be the case. Can you show how you're creating the pbuf for the received ICMP packet? The other thing to check is what the value is for the PBUF_LINK_HLEN, and what the values in that "if" statement above are. Kieran _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
