From: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolai...@linaro.org>
Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org>
---
/** Email created from pull request 505 (muvarov:devel/master_merge_api-next)
 ** https://github.com/Linaro/odp/pull/505
 ** Patch: https://github.com/Linaro/odp/pull/505.patch
 ** Base sha: 284f52d72ec19df3774c7409780f1f9eea33b8e6
 ** Merge commit sha: 5da68bf06572d3d0651c37cbba03aa91995ec465
 **/
 platform/linux-generic/odp_packet.c | 38 +++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/platform/linux-generic/odp_packet.c 
b/platform/linux-generic/odp_packet.c
index e24aa0c7a..8a5833ded 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -2485,3 +2485,41 @@ int odp_packet_has_ref(odp_packet_t pkt)
 
        return 0;
 }
+
+odp_proto_l3_type_t odp_packet_l3_type(odp_packet_t pkt)
+{
+       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+
+       if (pkt_hdr->p.input_flags.ipv4)
+               return ODP_PROTO_L3_TYPE_IPV4;
+       else if (pkt_hdr->p.input_flags.ipv6)
+               return ODP_PROTO_L3_TYPE_IPV6;
+       else if (pkt_hdr->p.input_flags.arp)
+               return ODP_PROTO_L3_TYPE_ARP;
+
+       return ODP_PROTO_L3_TYPE_NONE;
+}
+
+odp_proto_l4_type_t odp_packet_l4_type(odp_packet_t pkt)
+{
+       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+
+       if (pkt_hdr->p.input_flags.tcp)
+               return ODP_PROTO_L4_TYPE_TCP;
+       else if (pkt_hdr->p.input_flags.udp)
+               return ODP_PROTO_L4_TYPE_UDP;
+       else if (pkt_hdr->p.input_flags.sctp)
+               return ODP_PROTO_L4_TYPE_SCTP;
+       else if (pkt_hdr->p.input_flags.ipsec_ah)
+               return ODP_PROTO_L4_TYPE_AH;
+       else if (pkt_hdr->p.input_flags.ipsec_esp)
+               return ODP_PROTO_L4_TYPE_ESP;
+       else if (pkt_hdr->p.input_flags.icmp &&
+                pkt_hdr->p.input_flags.ipv4)
+               return ODP_PROTO_L4_TYPE_ICMPV4;
+       else if (pkt_hdr->p.input_flags.icmp &&
+                pkt_hdr->p.input_flags.ipv6)
+               return ODP_PROTO_L4_TYPE_ICMPV6;
+
+       return ODP_PROTO_L4_TYPE_NONE;
+}

Reply via email to