[API-NEXT,v5,3/11] api: ipsec: introduce all_status bitfield covering all error and flags

Message ID 1494950422-11135-4-git-send-email-odpbot@yandex.ru
State New
Headers show
Series
  • [API-NEXT,v5,1/11] api: ipsec: add soft limit expiration event
Related show

Commit Message

Github ODP bot May 16, 2017, 4 p.m.
From: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>


An expectation would be that an application would check if there is any
exceptional status set by checking the all_status field and then further
descending on the reason on the particular exception.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>

---
/** Email created from pull request 28 (lumag:ipsec)
 ** https://github.com/Linaro/odp/pull/28
 ** Patch: https://github.com/Linaro/odp/pull/28.patch
 ** Base sha: f4c213cccc49b4b28557506ad19fba49b872d24f
 ** Merge commit sha: e6ef5a70e5261ee32e5edb33fc7710d103010d95
 **/
 include/odp/api/spec/ipsec.h | 135 +++++++++++++++++++++++--------------------
 1 file changed, 72 insertions(+), 63 deletions(-)

Patch hide | download patch | download mbox

diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index b1c81b1..103fc39 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -851,71 +851,80 @@  typedef struct odp_ipsec_op_opt_t {
 #define ODP_IPSEC_OK 0
 
 /** IPSEC operation status */
-typedef struct odp_ipsec_op_status_t {
-	/** Variant mappings for op status */
-	union {
-		/** Error flags */
-		struct {
-			/** Protocol error. Not a valid ESP or AH packet. */
-			uint32_t proto            : 1;
-
-			/** SA lookup failed */
-			uint32_t sa_lookup        : 1;
-
-			/** Authentication failed */
-			uint32_t auth             : 1;
-
-			/** Anti-replay check failed */
-			uint32_t antireplay       : 1;
-
-			/** Other algorithm error */
-			uint32_t alg              : 1;
-
-			/** Packet does not fit into the given MTU size */
-			uint32_t mtu              : 1;
-
-			/** Soft lifetime expired: seconds */
-			uint32_t soft_exp_sec     : 1;
-
-			/** Soft lifetime expired: bytes */
-			uint32_t soft_exp_bytes   : 1;
-
-			/** Soft lifetime expired: packets */
-			uint32_t soft_exp_packets : 1;
-
-			/** Hard lifetime expired: seconds */
-			uint32_t hard_exp_sec     : 1;
-
-			/** Hard lifetime expired: bytes */
-			uint32_t hard_exp_bytes   : 1;
-
-			/** Hard lifetime expired: packets */
-			uint32_t hard_exp_packets : 1;
-
-		} error;
-
-		/** All error bits
-		 *
-		 *  This field can be used to set, clear or compare multiple
-		 *  flags. For example, 'status.all_error != ODP_IPSEC_OK'
-		 *  checks if there are
-		 *  any errors.
-		 */
-		uint32_t all_error;
+typedef union odp_ipsec_op_status_t {
+	struct {
+		/** Variant mappings for op status */
+		union {
+			/** Error flags */
+			struct {
+				/**
+				 * Protocol error. Not a valid ESP or AH
+				 * packet.
+				 */
+				uint32_t proto            : 1;
+
+				/** SA lookup failed */
+				uint32_t sa_lookup        : 1;
+
+				/** Authentication failed */
+				uint32_t auth             : 1;
+
+				/** Anti-replay check failed */
+				uint32_t antireplay       : 1;
+
+				/** Other algorithm error */
+				uint32_t alg              : 1;
+
+				/**
+				 * Packet does not fit into the given MTU size
+				 */
+				uint32_t mtu              : 1;
+
+				/** Soft lifetime expired: seconds */
+				uint32_t soft_exp_sec     : 1;
+
+				/** Soft lifetime expired: bytes */
+				uint32_t soft_exp_bytes   : 1;
+
+				/** Soft lifetime expired: packets */
+				uint32_t soft_exp_packets : 1;
+
+				/** Hard lifetime expired: seconds */
+				uint32_t hard_exp_sec     : 1;
+
+				/** Hard lifetime expired: bytes */
+				uint32_t hard_exp_bytes   : 1;
+
+				/** Hard lifetime expired: packets */
+				uint32_t hard_exp_packets : 1;
+
+			} error;
+
+			/** All error bits
+			 *
+			 *  This field can be used to set, clear or compare
+			 *  multiple flags. For example, 'status.all_error !=
+			 *  ODP_IPSEC_OK' checks if there are any errors.
+			 */
+			uint32_t all_error;
+		};
+
+		/** Variant mappings for status flags */
+		union {
+			/** Status flags */
+			struct {
+				/** Packet was processed in inline mode */
+				uint32_t inline_mode      : 1;
+
+			} flag;
+
+			/** All flag bits */
+			uint32_t all_flag;
+		};
 	};
 
-	/** Variant mappings for status flags */
-	union {
-		/** Status flags */
-		struct {
-			/** Packet was processed in inline mode */
-			uint32_t inline_mode      : 1;
-
-		} flag;
-
-		/** All flag bits */
-		uint32_t all_flag;
-	};
+	/** All status bits */
+	uint64_t all_status;
 
 } odp_ipsec_op_status_t;