mirror of
https://github.com/ep00ch/lwip-contrib-mac.git
synced 2024-06-02 10:41:29 +00:00
ping app: restore original packet if packet is not eaten
This commit is contained in:
parent
acc69ff333
commit
346d2f8c8a
|
@ -237,7 +237,7 @@ ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *addr)
|
||||||
LWIP_ASSERT("p != NULL", p != NULL);
|
LWIP_ASSERT("p != NULL", p != NULL);
|
||||||
|
|
||||||
if ((p->tot_len >= (PBUF_IP_HLEN + sizeof(struct icmp_echo_hdr))) &&
|
if ((p->tot_len >= (PBUF_IP_HLEN + sizeof(struct icmp_echo_hdr))) &&
|
||||||
pbuf_header( p, -PBUF_IP_HLEN) == 0) {
|
pbuf_header(p, -PBUF_IP_HLEN) == 0) {
|
||||||
iecho = (struct icmp_echo_hdr *)p->payload;
|
iecho = (struct icmp_echo_hdr *)p->payload;
|
||||||
|
|
||||||
if ((iecho->id == PING_ID) && (iecho->seqno == htons(ping_seq_num))) {
|
if ((iecho->id == PING_ID) && (iecho->seqno == htons(ping_seq_num))) {
|
||||||
|
@ -250,6 +250,8 @@ ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *addr)
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
return 1; /* eat the packet */
|
return 1; /* eat the packet */
|
||||||
}
|
}
|
||||||
|
/* not eaten, restore original packet */
|
||||||
|
pbuf_header(p, PBUF_IP_HLEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0; /* don't eat the packet */
|
return 0; /* don't eat the packet */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user