diff --git a/components/lwip/apps/ping/ping_sock.c b/components/lwip/apps/ping/ping_sock.c index cb247fe072..afb0308e62 100644 --- a/components/lwip/apps/ping/ping_sock.c +++ b/components/lwip/apps/ping/ping_sock.c @@ -49,6 +49,7 @@ typedef struct { uint32_t elapsed_time_ms; uint32_t total_time_ms; uint8_t ttl; + uint8_t tos; uint32_t flags; void (*on_ping_success)(esp_ping_handle_t hdl, void *args); void (*on_ping_timeout)(esp_ping_handle_t hdl, void *args); @@ -113,6 +114,7 @@ static int esp_ping_receive(esp_ping_t *ep) if ((iecho->id == ep->packet_hdr->id) && (iecho->seqno == ep->packet_hdr->seqno)) { ep->received++; ep->ttl = iphdr->_ttl; + ep->tos = iphdr->_tos; ep->recv_len = lwip_ntohs(IPH_LEN(iphdr)) - data_head; // The data portion of ICMP return len; } @@ -356,6 +358,10 @@ esp_err_t esp_ping_get_profile(esp_ping_handle_t hdl, esp_ping_profile_t profile from = &ep->packet_hdr->seqno; copy_size = sizeof(ep->packet_hdr->seqno); break; + case ESP_PING_PROF_TOS: + from = &ep->tos; + copy_size = sizeof(ep->tos); + break; case ESP_PING_PROF_TTL: from = &ep->ttl; copy_size = sizeof(ep->ttl); diff --git a/components/lwip/include/apps/ping/ping_sock.h b/components/lwip/include/apps/ping/ping_sock.h index 3e07fd564c..2eb0d21e70 100644 --- a/components/lwip/include/apps/ping/ping_sock.h +++ b/components/lwip/include/apps/ping/ping_sock.h @@ -93,6 +93,7 @@ typedef struct { */ typedef enum { ESP_PING_PROF_SEQNO, /*!< Sequence number of a ping procedure */ + ESP_PING_PROF_TOS, /*!< Type of service of a ping procedure */ ESP_PING_PROF_TTL, /*!< Time to live of a ping procedure */ ESP_PING_PROF_REQUEST, /*!< Number of request packets sent out */ ESP_PING_PROF_REPLY, /*!< Number of reply packets received */