On 07/30/15 12:04, Alexandru Badicioiu wrote:
Ping.

Alex, Mike replayed to you to fix minor fixes.

Maxim.

On 22 July 2015 at 11:26, <[email protected] <mailto:[email protected]>> wrote:

    From: Alexandru Badicioiu <[email protected]
    <mailto:[email protected]>>

    This patch adds IPSec protocol processing capabilities to crypto
    sesssions. Implementations which have these capabilities in hardware
    crypto engines can use the extension to offload the application from
    IPSec protocol processing.

    Signed-off-by: Alexandru Badicioiu <[email protected]
    <mailto:[email protected]>>
    ---
     include/odp/api/crypto_ipsec.h                     |  110
    ++++++++++++++++++++
     platform/linux-generic/include/odp/crypto.h        |    2 +
     .../include/odp/plat/crypto_ipsec_types.h          |   53 ++++++++++
     3 files changed, 165 insertions(+), 0 deletions(-)
     create mode 100644 include/odp/api/crypto_ipsec.h
     create mode 100644
    platform/linux-generic/include/odp/plat/crypto_ipsec_types.h

    diff --git a/include/odp/api/crypto_ipsec.h
    b/include/odp/api/crypto_ipsec.h
    new file mode 100644
    index 0000000..e59fea4
    --- /dev/null
    +++ b/include/odp/api/crypto_ipsec.h
    @@ -0,0 +1,110 @@
    +/* Copyright (c) 2014, Linaro Limited
    + * All rights reserved.
    + *
    + * SPDX-License-Identifier:    BSD-3-Clause
    + */
    +
    +/**
    + * @file
    + *
    + * ODP crypto IPSec extension
    + */
    +
    +#ifndef ODP_API_CRYPTO_IPSEC_H_
    +#define ODP_API_CRYPTO_IPSEC_H_
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +/**
    + * @enum odp_ipsec_outhdr_type
    + * IPSec tunnel outer header type
    + *
    + * @enum odp_ipsec_ar_ws
    + * IPSec Anti-replay window size
    + *
    + */
    +
    +typedef struct odp_ipsec_params {
    +       uint32_t spi;            /** SPI value */
    +       uint32_t seq;            /** Initial SEQ number */
    +       enum odp_ipsec_ar_ws ar_ws; /** Anti-replay window size -
    +                                       inbound session with
    authentication */
    +       odp_bool_t esn;         /** Use extended sequence numbers */
    +       odp_bool_t auto_iv;     /** Auto IV generation for each
    operation. */
    +       uint16_t out_hdr_size;   /** outer header size - tunnel
    mode */
    +       uint8_t *out_hdr;        /** outer header - tunnel mode */
    +       enum odp_ipsec_outhdr_type out_hdr_type; /* outer header
    type -
    +                                                   tunnel mode */
    +       odp_bool_t ip_csum;     /** update/verify ip header
    checksum */
    +       odp_bool_t ip_dttl;     /** decrement ttl - tunnel mode
    encap & decap */
    +       odp_bool_t remove_outer_hdr; /** remove outer header -
    tunnel mode decap */
    +       odp_bool_t copy_dscp;   /** DiffServ Copy - Copy the IPv4
    TOS or
    +                                   IPv6 Traffic Class byte from
    the inner/outer
    +                                   IP header to the outer/inner
    IP header -
    +                                   tunnel mode encap & decap */
    +       odp_bool_t copy_df;     /** Copy DF bit - copy the DF bit from
    +                                   the inner IP header to the
    +                                   outer IP header - tunnel mode
    encap */
    +       odp_bool_t nat_t;       /** NAT-T encapsulation enabled -
    tunnel mode */
    +       odp_bool_t udp_csum;    /** Update/verify UDP csum when
    NAT-T enabled */
    +
    +} odp_ipsec_params_t;
    +
    +/**
    + * @enum odp_ipsec_mode:ODP_IPSEC_MODE_TUNNEL
    + * IPSec tunnel mode
    + *
    + * @enum odp_ipsec_mode:ODP_IPSEC_MODE_TRANSPORT
    + * IPSec transport mode
    + *
    + * @enum odp_ipsec_proto
    + * IPSec protocol
    + */
    +
    +/**
    + * Configure crypto session for IPsec processing
    + *
    + * Configures a crypto session for IPSec protocol processing.
    + * Packets submitted to an IPSec enabled session will have
    + * relevant IPSec headers/trailers and tunnel headers
    + * added/removed by the crypto implementation.
    + * For example, the input packet for an IPSec ESP transport
    + * enabled session should be the clear text packet with
    + * no ESP headers/trailers prepared in advance for crypto operation.
    + * The output packet will have ESP header, IV, trailer and the
    ESP ICV
    + * added by crypto implementation.
    + * Depending on the particular capabilities of an implementation and
    + * the parameters enabled by application, the application may be
    + * partially or completely offloaded from IPSec protocol processing.
    + * For example, if an implementation does not support checksum
    + * update for IP header after adding ESP header the application
    + * should update after crypto IPSec operation.
    + *
    + * If an implementation does not support a particular set of
    + * arguments it should return error.
    + *
    + * @param session          Session handle
    + * @param ipsec_mode       IPSec protocol mode
    + * @param ipsec_proto      IPSec protocol
    + * @param ipsec_params     IPSec parameters. Parameters which are not
    + *                         relevant for selected protocol & mode
    are ignored -
    + *                         e.g. outer_hdr/size set for ESP
    transport mode.
    + * @retval 0 on success
    + * @retval <0 on failure
    + */
    +int odp_crypto_session_config_ipsec(odp_crypto_session_t session,
    +                                   enum odp_ipsec_mode ipsec_mode,
    +                                   enum odp_ipsec_proto ipsec_proto,
    +                                   odp_ipsec_params_t ipsec_params);
    +
    +/**
    + * @}
    + */
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif
    diff --git a/platform/linux-generic/include/odp/crypto.h
    b/platform/linux-generic/include/odp/crypto.h
    index 7684c1e..718ab7d 100644
    --- a/platform/linux-generic/include/odp/crypto.h
    +++ b/platform/linux-generic/include/odp/crypto.h
    @@ -20,6 +20,7 @@ extern "C" {
     #include <odp/std_types.h>
     #include <odp/plat/packet_types.h>
     #include <odp/plat/crypto_types.h>
    +#include <odp/plat/crypto_ipsec_types.h>
     #include <odp/plat/buffer_types.h>
     #include <odp/plat/pool_types.h>
     #include <odp/queue.h>
    @@ -33,6 +34,7 @@ extern "C" {
      */

     #include <odp/api/crypto.h>
    +#include <odp/api/crypto_ipsec.h>

     #ifdef __cplusplus
     }
    diff --git
    a/platform/linux-generic/include/odp/plat/crypto_ipsec_types.h
    b/platform/linux-generic/include/odp/plat/crypto_ipsec_types.h
    new file mode 100644
    index 0000000..74521da
    --- /dev/null
    +++ b/platform/linux-generic/include/odp/plat/crypto_ipsec_types.h
    @@ -0,0 +1,53 @@
    +/* Copyright (c) 2015, Linaro Limited
    + * All rights reserved.
    + *
    + * SPDX-License-Identifier:    BSD-3-Clause
    + */
    +
    +/**
    + * @file
    + *
    + * ODP crypto
    + */
    +
    +#ifndef ODP_CRYPTO_IPSEC_TYPES_H_
    +#define ODP_CRYPTO_IPSEC_TYPES_H_
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +/** @addtogroup odp_crypto
    + *  @{
    + */
    +
    +enum odp_ipsec_mode {
    +       ODP_IPSEC_MODE_TUNNEL,      /**< IPSec tunnel mode */
    +       ODP_IPSEC_MODE_TRANSPORT,   /**< IPSec transport mode */
    +};
    +
    +enum odp_ipsec_proto {
    +       ODP_IPSEC_ESP,             /**< ESP protocol */
    +};
    +
    +enum odp_ipsec_outhdr_type {
    +       ODP_IPSEC_OUTHDR_IPV4,    /**< Outer header is IPv4 */
    +       ODP_IPSEC_OUTHDR_IPV6,    /**< Outer header is IPv6 */
    +};
    +
    +enum odp_ipsec_ar_ws {
    +       ODP_IPSEC_AR_WS_NONE,      /**< Anti-replay is not enabled */
    +       ODP_IPSEC_AR_WS_32,        /**< Anti-replay window size 32 */
    +       ODP_IPSEC_AR_WS_64,        /**< Anti-replay window size 64 */
    +       ODP_IPSEC_AR_WS_128,       /**< Anti-replay window size 128 */
    +};
    +
    +/**
    + * @}
    + */
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif
    --
    1.7.3.4




_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to