Signed-off-by: Matias Elo <matias....@nokia.com>
---
 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(&counters.seq, 1) % 0xffff;
        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_ICMP    0x01 /**< 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_FRAG    0x2C /**< 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_ICMP    0x01 /**< 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_FRAG    0x2C /**< IPv6 Fragment (44) */
 #define _ODP_IPPROTO_AH      0x33 /**< Authentication Header (51) */
 #define _ODP_IPPROTO_ESP     0x32 /**< Encapsulating Security Payload (50) */
+#define _ODP_IPPROTO_ICMPv6  0x3A /**< Internet Control Message Protocol (58) 
*/
 #define _ODP_IPPROTO_SCTP    0x84 /**< Stream Control Transmission protocol
                                       (132) */
 #define _ODP_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
diff --git a/platform/linux-generic/odp_packet.c 
b/platform/linux-generic/odp_packet.c
index 60eef3a..bfe89cb 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -2066,7 +2066,10 @@ int packet_parse_common(packet_parser_t *prs, const 
uint8_t *ptr,
 
                /* Parse Layer 4 headers */
                switch (prs->ip_proto) {
-               case _ODP_IPPROTO_ICMP:
+               case _ODP_IPPROTO_ICMPv4:
+               /* Fall through */
+
+               case _ODP_IPPROTO_ICMPv6:
                        prs->input_flags.icmp = 1;
                        break;
 
-- 
2.7.4

Reply via email to