aboutsummaryrefslogtreecommitdiff
path: root/include/odp/api/spec/ipsec.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/odp/api/spec/ipsec.h')
-rw-r--r--include/odp/api/spec/ipsec.h49
1 files changed, 42 insertions, 7 deletions
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 3441d83c9..6e28e7fb4 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -20,7 +20,7 @@ extern "C" {
#endif
#include <odp/api/crypto.h>
-#include <odp/api/support.h>
+#include <odp/api/std_types.h>
#include <odp/api/packet_io.h>
#include <odp/api/protocols.h>
#include <odp/api/classification.h>
@@ -338,6 +338,28 @@ typedef struct odp_ipsec_capability_t {
*/
uint32_t max_cls_cos;
+ /**
+ * Scheduled queue support
+ *
+ * 0: Scheduled queues are not supported either as IPsec SA destination
+ * queues or as IPsec default queue
+ * 1: Scheduled queues are supported as both IPsec SA destination queues
+ * and IPsec default queue
+ * @see odp_ipsec_sa_param_t
+ */
+ odp_bool_t queue_type_sched;
+
+ /**
+ * Plain queue support
+ *
+ * 0: Plain queues are not supported either as IPsec SA destination
+ * queues or as IPsec default queue
+ * 1: Plain queues are supported as both IPsec SA destination queues and
+ * IPsec default queue
+ * @see odp_ipsec_sa_param_t
+ */
+ odp_bool_t queue_type_plain;
+
/** Maximum number of different destination queues. The same queue may
* be used for many SAs. */
uint32_t max_queues;
@@ -1532,6 +1554,17 @@ typedef struct odp_ipsec_packet_result_t {
uint32_t len;
} outer_hdr;
+ /** Total IP length of the original ESP or AH packet before IPsec
+ * decapsulation. This is valid only for inbound inline and async
+ * processed packets. Zero value means that the length information
+ * is not available.
+ *
+ * If the result packet was reassembled from multiple IPsec
+ * protected packets, this is the sum of the lengths of all the
+ * involved IPsec packets.
+ */
+ uint32_t orig_ip_len;
+
} odp_ipsec_packet_result_t;
/**
@@ -1591,9 +1624,10 @@ typedef struct odp_ipsec_status_t {
* packets consumed and outputs a new packet handle for each outputted packet.
* Outputted packets contain IPSEC result metadata (odp_ipsec_packet_result_t),
* which should be checked for transformation errors, etc. Outputted packets
- * with error status have not been transformed but the original packet is
- * returned. The operation does not modify packets that it does not consume.
- * It cannot consume all input packets if 'num_out' is smaller than 'num_in'.
+ * with error status have undefined content, except that in case of sa_lookup
+ * error the original input packet data is returned. The operation does not
+ * modify packets that it does not consume. It cannot consume all input
+ * packets if 'num_out' is smaller than 'num_in'.
*
* Packet context pointer and user area content are copied from input to output
* packets. Output packets are allocated from the same pool(s) as input packets.
@@ -1675,9 +1709,10 @@ int odp_ipsec_in(const odp_packet_t pkt_in[], int num_in,
* packets consumed and outputs a new packet handle for each outputted packet.
* Outputted packets contain IPSEC result metadata (odp_ipsec_packet_result_t),
* which should be checked for transformation errors, etc. Outputted packets
- * with error status have not been transformed but the original packet is
- * returned. The operation does not modify packets that it does not consume.
- * It cannot consume all input packets if 'num_out' is smaller than 'num_in'.
+ * with error status have undefined content, except that in case of MTU error
+ * the original input packet data is returned. The operation does not modify
+ * packets that it does not consume. It cannot consume all input packets if
+ * 'num_out' is smaller than 'num_in'.
*
* Packet context pointer and user area content are copied from input to output
* packets. Output packets are allocated from the same pool(s) as input packets.