Application can indicate which packet parsing results it is
interested in (all, none or selected).

Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com>
---
 include/odp/api/packet_flags.h | 26 ++++++++++++++++++++++++++
 include/odp/api/packet_io.h    | 19 +++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/include/odp/api/packet_flags.h b/include/odp/api/packet_flags.h
index bfbcc94..9444fdc 100644
--- a/include/odp/api/packet_flags.h
+++ b/include/odp/api/packet_flags.h
@@ -26,6 +26,32 @@ extern "C" {
  *  @{
  */
 
+
+/**
+ * Packet input parsing flags
+ *
+ * Each flag represents a parser output. See parser output functions for
+ * details.
+ */
+typedef struct odp_packet_parse_flags_t {
+       uint32_t eth:1;       /**< See odp_packet_has_eth() */
+       uint32_t jumbo:1;     /**< See odp_packet_has_jumbo() */
+       uint32_t vlan:1;      /**< See odp_packet_has_vlan() */
+       uint32_t vlan_qinq:1; /**< See odp_packet_has_vlan_qinq() */
+       uint32_t arp:1;       /**< See odp_packet_has_arp() */
+       uint32_t ipv4:1;      /**< See odp_packet_has_ipv4() */
+       uint32_t ipv6:1;      /**< See odp_packet_has_ipv6() */
+       uint32_t ipfrag:1;    /**< See odp_packet_has_ipfrag() */
+       uint32_t ipopt:1;     /**< See odp_packet_has_ipopt() */
+       uint32_t ipsec:1;     /**< See odp_packet_has_ipsec() */
+       uint32_t udp:1;       /**< See odp_packet_has_udp() */
+       uint32_t tcp:1;       /**< See odp_packet_has_tcp() */
+       uint32_t sctp:1;      /**< See odp_packet_has_sctp() */
+       uint32_t icmp:1;      /**< See odp_packet_has_icmp() */
+
+       uint32_t _reserved1:18; /**< Reserved. Do not use. */
+} odp_packet_parse_flags_t;
+
 /**
  * Check for packet errors
  *
diff --git a/include/odp/api/packet_io.h b/include/odp/api/packet_io.h
index 77c207e..97f79ee 100644
--- a/include/odp/api/packet_io.h
+++ b/include/odp/api/packet_io.h
@@ -18,6 +18,8 @@
 extern "C" {
 #endif
 
+#include <odp/packet_flags.h>
+
 /** @defgroup odp_packet_io ODP PACKET IO
  *  Operations on a packet.
  *  @{
@@ -58,6 +60,19 @@ enum odp_pktio_input_mode {
 };
 
 /**
+ * Packet parsing mode
+ */
+enum odp_pktio_parse_mode {
+       /** Parse all protocols */
+       ODP_PKTIN_PARSE_ALL = 0,
+       /** Parsing not needed */
+       ODP_PKTIN_PARSE_NONE,
+       /** Parsing can be limited to the flags set in
+           odp_packet_parse_flags_t */
+       ODP_PKTIN_PARSE_SELECTED
+};
+
+/**
  * Packet IO parameters
  *
  * In minimum, user must select the input mode. Use 0 for defaults. Initialize
@@ -66,6 +81,10 @@ enum odp_pktio_input_mode {
 typedef struct odp_pktio_param_t {
        /** Packet input mode */
        enum odp_pktio_input_mode in_mode;
+       /** Packet parse mode */
+       enum odp_pktio_parse_mode parse_mode;
+       /** Parse selection when parse_mode is ODP_PKTIN_PARSE_SELECTED */
+       odp_packet_parse_flags_t parse;
 } odp_pktio_param_t;
 
 /**
-- 
2.3.5

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to