Re: [lng-odp] [API-NEXT PATCH 1/4] linux-gen: packet: recognize ICMPv6 packets

2017-04-04 Thread Elo, Matias (Nokia - FI/Espoo)
Sure, I'll send rebased v2.

-Matias


> On 3 Apr 2017, at 22:38, Maxim Uvarov  wrote:
> 
> Matias can you please update patches and check them?
> 
> Maxim.
> 
> On 04/03/17 02:36, Bill Fischofer wrote:
>> For this series:
>> 
>> Reviewed-and-tested-by: Bill Fischofer 
>> 
>> On Wed, Mar 22, 2017 at 10:29 AM, Matias Elo  wrote:
>>> Signed-off-by: Matias Elo 
>>> ---
>>> example/generator/odp_generator.c | 4 ++--
>>> example/ipsec/odp_ipsec_stream.c  | 6 +++---
>>> helper/include/odp/helper/ip.h| 3 ++-
>>> platform/linux-generic/include/protocols/ip.h | 3 ++-
>>> platform/linux-generic/odp_packet.c   | 5 -
>>> 5 files changed, 13 insertions(+), 8 deletions(-)
>>> 
>>> diff --git a/example/generator/odp_generator.c 
>>> b/example/generator/odp_generator.c
>>> index 8062d87..1fd4899 100644
>>> --- a/example/generator/odp_generator.c
>>> +++ b/example/generator/odp_generator.c
>>> @@ -267,7 +267,7 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool)
>>>ip->ver_ihl = ODPH_IPV4 << 4 | ODPH_IPV4HDR_IHL_MIN;
>>>ip->tot_len = odp_cpu_to_be_16(args->appl.payload + ODPH_ICMPHDR_LEN 
>>> +
>>>   ODPH_IPV4HDR_LEN);
>>> -   ip->proto = ODPH_IPPROTO_ICMP;
>>> +   ip->proto = ODPH_IPPROTO_ICMPv4;
>>>seq = odp_atomic_fetch_add_u64(, 1) % 0x;
>>>ip->id = odp_cpu_to_be_16(seq);
>>>ip->chksum = 0;
>>> @@ -483,7 +483,7 @@ static void print_pkts(int thr, odp_packet_t pkt_tbl[], 
>>> unsigned len)
>>>}
>>> 
>>>/* icmp */
>>> -   if (ip->proto == ODPH_IPPROTO_ICMP) {
>>> +   if (ip->proto == ODPH_IPPROTO_ICMPv4) {
>>>icmp = (odph_icmphdr_t *)(buf + offset);
>>>/* echo reply */
>>>if (icmp->type == ICMP_ECHOREPLY) {
>>> diff --git a/example/ipsec/odp_ipsec_stream.c 
>>> b/example/ipsec/odp_ipsec_stream.c
>>> index 428ec04..b9576ae 100644
>>> --- a/example/ipsec/odp_ipsec_stream.c
>>> +++ b/example/ipsec/odp_ipsec_stream.c
>>> @@ -219,7 +219,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t 
>>> *stream,
>>>ip->src_addr = odp_cpu_to_be_32(entry->tun_src_ip);
>>>ip->dst_addr = odp_cpu_to_be_32(entry->tun_dst_ip);
>>>} else {
>>> -   ip->proto = ODPH_IPPROTO_ICMP;
>>> +   ip->proto = ODPH_IPPROTO_ICMPv4;
>>>ip->src_addr = odp_cpu_to_be_32(stream->src_ip);
>>>ip->dst_addr = odp_cpu_to_be_32(stream->dst_ip);
>>>}
>>> @@ -262,7 +262,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t 
>>> *stream,
>>>inner_ip = (odph_ipv4hdr_t *)data;
>>>memset((char *)inner_ip, 0, sizeof(*inner_ip));
>>>inner_ip->ver_ihl = 0x45;
>>> -   inner_ip->proto = ODPH_IPPROTO_ICMP;
>>> +   inner_ip->proto = ODPH_IPPROTO_ICMPv4;
>>>inner_ip->id = odp_cpu_to_be_16(stream->id);
>>>inner_ip->ttl = 64;
>>>inner_ip->tos = 0;
>>> @@ -519,7 +519,7 @@ clear_packet:
>>>icmp = (odph_icmphdr_t *)(inner_ip + 1);
>>>data = (uint8_t *)icmp;
>>>} else {
>>> -   if (ODPH_IPPROTO_ICMP != ip->proto)
>>> +   if (ODPH_IPPROTO_ICMPv4 != ip->proto)
>>>return FALSE;
>>>icmp = (odph_icmphdr_t *)data;
>>>}
>>> diff --git a/helper/include/odp/helper/ip.h b/helper/include/odp/helper/ip.h
>>> index ba6e675..91776fa 100644
>>> --- a/helper/include/odp/helper/ip.h
>>> +++ b/helper/include/odp/helper/ip.h
>>> @@ -205,13 +205,14 @@ typedef struct ODP_PACKED {
>>>  * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
>>>  * @{*/
>>> #define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
>>> -#define ODPH_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol 
>>> (1) */
>>> +#define ODPH_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol 
>>> (1) */
>>> #define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
>>> #define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
>>> #define ODPH_IPPROTO_ROUTE   0x2B /**< IPv6 Routing header (43) */
>>> #define ODPH_IPPROTO_FRAG0x2C /**< IPv6 Fragment (44) */
>>> #define ODPH_IPPROTO_AH  0x33 /**< Authentication Header (51) */
>>> #define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) 
>>> */
>>> +#define ODPH_IPPROTO_ICMPv6  0x3A /**< Internet Control Message Protocol 
>>> (58) */
>>> #define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
>>> 
>>> /**@}*/
>>> diff --git a/platform/linux-generic/include/protocols/ip.h 
>>> b/platform/linux-generic/include/protocols/ip.h
>>> index 20041f1..2b34a75 100644
>>> --- a/platform/linux-generic/include/protocols/ip.h
>>> 

Re: [lng-odp] [API-NEXT PATCH 1/4] linux-gen: packet: recognize ICMPv6 packets

2017-04-03 Thread Maxim Uvarov
Matias can you please update patches and check them?

Maxim.

On 04/03/17 02:36, Bill Fischofer wrote:
> For this series:
> 
> Reviewed-and-tested-by: Bill Fischofer 
> 
> On Wed, Mar 22, 2017 at 10:29 AM, Matias Elo  wrote:
>> Signed-off-by: Matias Elo 
>> ---
>>  example/generator/odp_generator.c | 4 ++--
>>  example/ipsec/odp_ipsec_stream.c  | 6 +++---
>>  helper/include/odp/helper/ip.h| 3 ++-
>>  platform/linux-generic/include/protocols/ip.h | 3 ++-
>>  platform/linux-generic/odp_packet.c   | 5 -
>>  5 files changed, 13 insertions(+), 8 deletions(-)
>>
>> diff --git a/example/generator/odp_generator.c 
>> b/example/generator/odp_generator.c
>> index 8062d87..1fd4899 100644
>> --- a/example/generator/odp_generator.c
>> +++ b/example/generator/odp_generator.c
>> @@ -267,7 +267,7 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool)
>> ip->ver_ihl = ODPH_IPV4 << 4 | ODPH_IPV4HDR_IHL_MIN;
>> ip->tot_len = odp_cpu_to_be_16(args->appl.payload + ODPH_ICMPHDR_LEN 
>> +
>>ODPH_IPV4HDR_LEN);
>> -   ip->proto = ODPH_IPPROTO_ICMP;
>> +   ip->proto = ODPH_IPPROTO_ICMPv4;
>> seq = odp_atomic_fetch_add_u64(, 1) % 0x;
>> ip->id = odp_cpu_to_be_16(seq);
>> ip->chksum = 0;
>> @@ -483,7 +483,7 @@ static void print_pkts(int thr, odp_packet_t pkt_tbl[], 
>> unsigned len)
>> }
>>
>> /* icmp */
>> -   if (ip->proto == ODPH_IPPROTO_ICMP) {
>> +   if (ip->proto == ODPH_IPPROTO_ICMPv4) {
>> icmp = (odph_icmphdr_t *)(buf + offset);
>> /* echo reply */
>> if (icmp->type == ICMP_ECHOREPLY) {
>> diff --git a/example/ipsec/odp_ipsec_stream.c 
>> b/example/ipsec/odp_ipsec_stream.c
>> index 428ec04..b9576ae 100644
>> --- a/example/ipsec/odp_ipsec_stream.c
>> +++ b/example/ipsec/odp_ipsec_stream.c
>> @@ -219,7 +219,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t 
>> *stream,
>> ip->src_addr = odp_cpu_to_be_32(entry->tun_src_ip);
>> ip->dst_addr = odp_cpu_to_be_32(entry->tun_dst_ip);
>> } else {
>> -   ip->proto = ODPH_IPPROTO_ICMP;
>> +   ip->proto = ODPH_IPPROTO_ICMPv4;
>> ip->src_addr = odp_cpu_to_be_32(stream->src_ip);
>> ip->dst_addr = odp_cpu_to_be_32(stream->dst_ip);
>> }
>> @@ -262,7 +262,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t 
>> *stream,
>> inner_ip = (odph_ipv4hdr_t *)data;
>> memset((char *)inner_ip, 0, sizeof(*inner_ip));
>> inner_ip->ver_ihl = 0x45;
>> -   inner_ip->proto = ODPH_IPPROTO_ICMP;
>> +   inner_ip->proto = ODPH_IPPROTO_ICMPv4;
>> inner_ip->id = odp_cpu_to_be_16(stream->id);
>> inner_ip->ttl = 64;
>> inner_ip->tos = 0;
>> @@ -519,7 +519,7 @@ clear_packet:
>> icmp = (odph_icmphdr_t *)(inner_ip + 1);
>> data = (uint8_t *)icmp;
>> } else {
>> -   if (ODPH_IPPROTO_ICMP != ip->proto)
>> +   if (ODPH_IPPROTO_ICMPv4 != ip->proto)
>> return FALSE;
>> icmp = (odph_icmphdr_t *)data;
>> }
>> diff --git a/helper/include/odp/helper/ip.h b/helper/include/odp/helper/ip.h
>> index ba6e675..91776fa 100644
>> --- a/helper/include/odp/helper/ip.h
>> +++ b/helper/include/odp/helper/ip.h
>> @@ -205,13 +205,14 @@ typedef struct ODP_PACKED {
>>   * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
>>   * @{*/
>>  #define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
>> -#define ODPH_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol 
>> (1) */
>> +#define ODPH_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol 
>> (1) */
>>  #define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
>>  #define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
>>  #define ODPH_IPPROTO_ROUTE   0x2B /**< IPv6 Routing header (43) */
>>  #define ODPH_IPPROTO_FRAG0x2C /**< IPv6 Fragment (44) */
>>  #define ODPH_IPPROTO_AH  0x33 /**< Authentication Header (51) */
>>  #define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) 
>> */
>> +#define ODPH_IPPROTO_ICMPv6  0x3A /**< Internet Control Message Protocol 
>> (58) */
>>  #define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
>>
>>  /**@}*/
>> diff --git a/platform/linux-generic/include/protocols/ip.h 
>> b/platform/linux-generic/include/protocols/ip.h
>> index 20041f1..2b34a75 100644
>> --- a/platform/linux-generic/include/protocols/ip.h
>> +++ b/platform/linux-generic/include/protocols/ip.h
>> @@ -157,13 +157,14 @@ typedef struct ODP_PACKED {
>>   * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
>>   * @{*/
>>  

Re: [lng-odp] [API-NEXT PATCH 1/4] linux-gen: packet: recognize ICMPv6 packets

2017-03-28 Thread Elo, Matias (Nokia - FI/Espoo)
Ping.


> On 22 Mar 2017, at 17:29, Matias Elo  wrote:
> 
> Signed-off-by: Matias Elo 
> ---
> example/generator/odp_generator.c | 4 ++--
> example/ipsec/odp_ipsec_stream.c  | 6 +++---
> helper/include/odp/helper/ip.h| 3 ++-
> platform/linux-generic/include/protocols/ip.h | 3 ++-
> platform/linux-generic/odp_packet.c   | 5 -
> 5 files changed, 13 insertions(+), 8 deletions(-)
> 
> diff --git a/example/generator/odp_generator.c 
> b/example/generator/odp_generator.c
> index 8062d87..1fd4899 100644
> --- a/example/generator/odp_generator.c
> +++ b/example/generator/odp_generator.c
> @@ -267,7 +267,7 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool)
>   ip->ver_ihl = ODPH_IPV4 << 4 | ODPH_IPV4HDR_IHL_MIN;
>   ip->tot_len = odp_cpu_to_be_16(args->appl.payload + ODPH_ICMPHDR_LEN +
>  ODPH_IPV4HDR_LEN);
> - ip->proto = ODPH_IPPROTO_ICMP;
> + ip->proto = ODPH_IPPROTO_ICMPv4;
>   seq = odp_atomic_fetch_add_u64(, 1) % 0x;
>   ip->id = odp_cpu_to_be_16(seq);
>   ip->chksum = 0;
> @@ -483,7 +483,7 @@ static void print_pkts(int thr, odp_packet_t pkt_tbl[], 
> unsigned len)
>   }
> 
>   /* icmp */
> - if (ip->proto == ODPH_IPPROTO_ICMP) {
> + if (ip->proto == ODPH_IPPROTO_ICMPv4) {
>   icmp = (odph_icmphdr_t *)(buf + offset);
>   /* echo reply */
>   if (icmp->type == ICMP_ECHOREPLY) {
> diff --git a/example/ipsec/odp_ipsec_stream.c 
> b/example/ipsec/odp_ipsec_stream.c
> index 428ec04..b9576ae 100644
> --- a/example/ipsec/odp_ipsec_stream.c
> +++ b/example/ipsec/odp_ipsec_stream.c
> @@ -219,7 +219,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
>   ip->src_addr = odp_cpu_to_be_32(entry->tun_src_ip);
>   ip->dst_addr = odp_cpu_to_be_32(entry->tun_dst_ip);
>   } else {
> - ip->proto = ODPH_IPPROTO_ICMP;
> + ip->proto = ODPH_IPPROTO_ICMPv4;
>   ip->src_addr = odp_cpu_to_be_32(stream->src_ip);
>   ip->dst_addr = odp_cpu_to_be_32(stream->dst_ip);
>   }
> @@ -262,7 +262,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
>   inner_ip = (odph_ipv4hdr_t *)data;
>   memset((char *)inner_ip, 0, sizeof(*inner_ip));
>   inner_ip->ver_ihl = 0x45;
> - inner_ip->proto = ODPH_IPPROTO_ICMP;
> + inner_ip->proto = ODPH_IPPROTO_ICMPv4;
>   inner_ip->id = odp_cpu_to_be_16(stream->id);
>   inner_ip->ttl = 64;
>   inner_ip->tos = 0;
> @@ -519,7 +519,7 @@ clear_packet:
>   icmp = (odph_icmphdr_t *)(inner_ip + 1);
>   data = (uint8_t *)icmp;
>   } else {
> - if (ODPH_IPPROTO_ICMP != ip->proto)
> + if (ODPH_IPPROTO_ICMPv4 != ip->proto)
>   return FALSE;
>   icmp = (odph_icmphdr_t *)data;
>   }
> diff --git a/helper/include/odp/helper/ip.h b/helper/include/odp/helper/ip.h
> index ba6e675..91776fa 100644
> --- a/helper/include/odp/helper/ip.h
> +++ b/helper/include/odp/helper/ip.h
> @@ -205,13 +205,14 @@ typedef struct ODP_PACKED {
>  * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
>  * @{*/
> #define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
> -#define ODPH_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol (1) 
> */
> +#define ODPH_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol (1) 
> */
> #define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
> #define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
> #define ODPH_IPPROTO_ROUTE   0x2B /**< IPv6 Routing header (43) */
> #define ODPH_IPPROTO_FRAG0x2C /**< IPv6 Fragment (44) */
> #define ODPH_IPPROTO_AH  0x33 /**< Authentication Header (51) */
> #define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */
> +#define ODPH_IPPROTO_ICMPv6  0x3A /**< Internet Control Message Protocol 
> (58) */
> #define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
> 
> /**@}*/
> diff --git a/platform/linux-generic/include/protocols/ip.h 
> b/platform/linux-generic/include/protocols/ip.h
> index 20041f1..2b34a75 100644
> --- a/platform/linux-generic/include/protocols/ip.h
> +++ b/platform/linux-generic/include/protocols/ip.h
> @@ -157,13 +157,14 @@ typedef struct ODP_PACKED {
>  * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
>  * @{*/
> #define _ODP_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
> -#define _ODP_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol (1) 
> */
> +#define _ODP_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol (1) 
> */
> #define _ODP_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
> #define _ODP_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
> #define 

[lng-odp] [API-NEXT PATCH 1/4] linux-gen: packet: recognize ICMPv6 packets

2017-03-22 Thread Matias Elo
Signed-off-by: Matias Elo 
---
 example/generator/odp_generator.c | 4 ++--
 example/ipsec/odp_ipsec_stream.c  | 6 +++---
 helper/include/odp/helper/ip.h| 3 ++-
 platform/linux-generic/include/protocols/ip.h | 3 ++-
 platform/linux-generic/odp_packet.c   | 5 -
 5 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/example/generator/odp_generator.c 
b/example/generator/odp_generator.c
index 8062d87..1fd4899 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -267,7 +267,7 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool)
ip->ver_ihl = ODPH_IPV4 << 4 | ODPH_IPV4HDR_IHL_MIN;
ip->tot_len = odp_cpu_to_be_16(args->appl.payload + ODPH_ICMPHDR_LEN +
   ODPH_IPV4HDR_LEN);
-   ip->proto = ODPH_IPPROTO_ICMP;
+   ip->proto = ODPH_IPPROTO_ICMPv4;
seq = odp_atomic_fetch_add_u64(, 1) % 0x;
ip->id = odp_cpu_to_be_16(seq);
ip->chksum = 0;
@@ -483,7 +483,7 @@ static void print_pkts(int thr, odp_packet_t pkt_tbl[], 
unsigned len)
}
 
/* icmp */
-   if (ip->proto == ODPH_IPPROTO_ICMP) {
+   if (ip->proto == ODPH_IPPROTO_ICMPv4) {
icmp = (odph_icmphdr_t *)(buf + offset);
/* echo reply */
if (icmp->type == ICMP_ECHOREPLY) {
diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c
index 428ec04..b9576ae 100644
--- a/example/ipsec/odp_ipsec_stream.c
+++ b/example/ipsec/odp_ipsec_stream.c
@@ -219,7 +219,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
ip->src_addr = odp_cpu_to_be_32(entry->tun_src_ip);
ip->dst_addr = odp_cpu_to_be_32(entry->tun_dst_ip);
} else {
-   ip->proto = ODPH_IPPROTO_ICMP;
+   ip->proto = ODPH_IPPROTO_ICMPv4;
ip->src_addr = odp_cpu_to_be_32(stream->src_ip);
ip->dst_addr = odp_cpu_to_be_32(stream->dst_ip);
}
@@ -262,7 +262,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
inner_ip = (odph_ipv4hdr_t *)data;
memset((char *)inner_ip, 0, sizeof(*inner_ip));
inner_ip->ver_ihl = 0x45;
-   inner_ip->proto = ODPH_IPPROTO_ICMP;
+   inner_ip->proto = ODPH_IPPROTO_ICMPv4;
inner_ip->id = odp_cpu_to_be_16(stream->id);
inner_ip->ttl = 64;
inner_ip->tos = 0;
@@ -519,7 +519,7 @@ clear_packet:
icmp = (odph_icmphdr_t *)(inner_ip + 1);
data = (uint8_t *)icmp;
} else {
-   if (ODPH_IPPROTO_ICMP != ip->proto)
+   if (ODPH_IPPROTO_ICMPv4 != ip->proto)
return FALSE;
icmp = (odph_icmphdr_t *)data;
}
diff --git a/helper/include/odp/helper/ip.h b/helper/include/odp/helper/ip.h
index ba6e675..91776fa 100644
--- a/helper/include/odp/helper/ip.h
+++ b/helper/include/odp/helper/ip.h
@@ -205,13 +205,14 @@ typedef struct ODP_PACKED {
  * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
  * @{*/
 #define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
-#define ODPH_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol (1) */
+#define ODPH_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol (1) */
 #define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
 #define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
 #define ODPH_IPPROTO_ROUTE   0x2B /**< IPv6 Routing header (43) */
 #define ODPH_IPPROTO_FRAG0x2C /**< IPv6 Fragment (44) */
 #define ODPH_IPPROTO_AH  0x33 /**< Authentication Header (51) */
 #define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */
+#define ODPH_IPPROTO_ICMPv6  0x3A /**< Internet Control Message Protocol (58) 
*/
 #define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
 
 /**@}*/
diff --git a/platform/linux-generic/include/protocols/ip.h 
b/platform/linux-generic/include/protocols/ip.h
index 20041f1..2b34a75 100644
--- a/platform/linux-generic/include/protocols/ip.h
+++ b/platform/linux-generic/include/protocols/ip.h
@@ -157,13 +157,14 @@ typedef struct ODP_PACKED {
  * IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
  * @{*/
 #define _ODP_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
-#define _ODP_IPPROTO_ICMP0x01 /**< Internet Control Message Protocol (1) */
+#define _ODP_IPPROTO_ICMPv4  0x01 /**< Internet Control Message Protocol (1) */
 #define _ODP_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
 #define _ODP_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
 #define _ODP_IPPROTO_ROUTE   0x2B /**< IPv6 Routing header (43) */
 #define _ODP_IPPROTO_FRAG0x2C /**< IPv6 Fragment (44) */
 #define _ODP_IPPROTO_AH  0x33 /**< Authentication Header (51) */