get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/99656/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 99656,
    "url": "https://patches.dpdk.org/api/patches/99656/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1632584132-289-3-git-send-email-anoobj@marvell.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1632584132-289-3-git-send-email-anoobj@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1632584132-289-3-git-send-email-anoobj@marvell.com",
    "date": "2021-09-25T15:35:29",
    "name": "[v5,2/5] test/crypto: add combined mode IPsec cases",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "c0ca711c59650313baadfa65f87bce2296c2adac",
    "submitter": {
        "id": 1205,
        "url": "https://patches.dpdk.org/api/people/1205/?format=api",
        "name": "Anoob Joseph",
        "email": "anoobj@marvell.com"
    },
    "delegate": {
        "id": 6690,
        "url": "https://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1632584132-289-3-git-send-email-anoobj@marvell.com/mbox/",
    "series": [
        {
            "id": 19157,
            "url": "https://patches.dpdk.org/api/series/19157/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=19157",
            "date": "2021-09-25T15:35:27",
            "name": "Add lookaside IPsec tests",
            "version": 5,
            "mbox": "https://patches.dpdk.org/series/19157/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/99656/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/99656/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 212B8A0C47;\n\tSat, 25 Sep 2021 17:36:23 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8129640E32;\n\tSat, 25 Sep 2021 17:36:18 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174])\n by mails.dpdk.org (Postfix) with ESMTP id 2667B40E32\n for <dev@dpdk.org>; Sat, 25 Sep 2021 17:36:17 +0200 (CEST)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id\n 18PFLuct022192;\n Sat, 25 Sep 2021 08:36:16 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0a-0016f401.pphosted.com with ESMTP id 3ba14prp4k-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Sat, 25 Sep 2021 08:36:16 -0700",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18;\n Sat, 25 Sep 2021 08:36:14 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend\n Transport; Sat, 25 Sep 2021 08:36:14 -0700",
            "from HY-LT1002.marvell.com (HY-LT1002.marvell.com [10.28.176.218])\n by maili.marvell.com (Postfix) with ESMTP id E99E33F7073;\n Sat, 25 Sep 2021 08:36:10 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=AodK1wuMchPmxN7u8e5LepCj+XCek2DGXNq7T6MiSrQ=;\n b=LsOd5KicWHxPO4hKDoRhKnso6YIujVJjX/bNyh4S8dYnvb1IgBl5853eVEQ5poKylFrx\n CIIpONv1NwKM3O6HyIuaxYbADFxePmT20Hayn8Sw6Xw4LAh5hAE2nwxeggbNC06X2PcS\n FQkoLT26cC3sE2VV4WtyVEz9zIW4mrTuiVuaD28stnfcevgkf5Y/s4B0K2dfC351XhV9\n raVs2HlVC3tcoSeZR2mGMw/mrfmxJ6gUP9vKMZwtnqo60dCDv/PGGqCnDajinC3607nz\n ZT4Ft0sGzpS5x/D+m0LWrYuJcbj8+oXpJVMEbC0tamIO+d/8QPxEk0xdBC1FNU0FBVk2 RQ==",
        "From": "Anoob Joseph <anoobj@marvell.com>",
        "To": "Akhil Goyal <gakhil@marvell.com>, Declan Doherty\n <declan.doherty@intel.com>, Fan Zhang <roy.fan.zhang@intel.com>,\n \"Konstantin Ananyev\" <konstantin.ananyev@intel.com>",
        "CC": "Anoob Joseph <anoobj@marvell.com>, Jerin Jacob <jerinj@marvell.com>,\n Archana Muniganti <marchana@marvell.com>, Tejasree Kondoj\n <ktejasree@marvell.com>, Hemant Agrawal <hemant.agrawal@nxp.com>, \"Radu\n Nicolau\" <radu.nicolau@intel.com>,\n Ciara Power <ciara.power@intel.com>, Gagandeep Singh <g.singh@nxp.com>,\n <dev@dpdk.org>",
        "Date": "Sat, 25 Sep 2021 21:05:29 +0530",
        "Message-ID": "<1632584132-289-3-git-send-email-anoobj@marvell.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1632584132-289-1-git-send-email-anoobj@marvell.com>",
        "References": "<1631884523-836-1-git-send-email-anoobj@marvell.com>\n <1632584132-289-1-git-send-email-anoobj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "tqgwUKWCecFu6z2IgdAKzZBByo5hT13e",
        "X-Proofpoint-ORIG-GUID": "tqgwUKWCecFu6z2IgdAKzZBByo5hT13e",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475\n definitions=2021-09-25_05,2021-09-24_02,2020-04-07_01",
        "Subject": "[dpdk-dev] [PATCH v5 2/5] test/crypto: add combined mode IPsec cases",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add framework to test IPsec features with all supported\ncombinations of ciphers.\n\nCombined mode tests are used to test all IPsec features against all\nciphers supported by the PMD. The framework is introduced to avoid\ntesting with any specific algo, thereby making it mandatory to be\nsupported. Also, testing with all supported combinations will help with\nincreasing coverage as well.\n\nThe tests would first do IPsec encapsulation and do sanity checks. Based\non flags, packet would be updated or additional checks are done,\nfollowed by IPsec decapsulation. Since the encrypted packet is generated\nby the test, known vectors are not required.\n\nSigned-off-by: Anoob Joseph <anoobj@marvell.com>\nSigned-off-by: Tejasree Kondoj <ktejasree@marvell.com>\nAcked-by: Akhil Goyal <gakhil@marvell.com>\nAcked-by: Ciara Power <ciara.power@intel.com>\n\n---\n app/test/test_cryptodev.c                |  73 +++++++++++++++++++--\n app/test/test_cryptodev_security_ipsec.c | 107 +++++++++++++++++++++++++++++--\n app/test/test_cryptodev_security_ipsec.h |  52 ++++++++++++++-\n 3 files changed, 223 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex f7d429b..3eacc66 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -8908,7 +8908,8 @@ static int\n test_ipsec_proto_process(const struct ipsec_test_data td[],\n \t\t\t struct ipsec_test_data res_d[],\n \t\t\t int nb_td,\n-\t\t\t bool silent)\n+\t\t\t bool silent,\n+\t\t\t const struct ipsec_test_flags *flags)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -9025,7 +9026,7 @@ test_ipsec_proto_process(const struct ipsec_test_data td[],\n \t\t/* Process crypto operation */\n \t\tprocess_crypto_request(dev_id, ut_params->op);\n \n-\t\tret = test_ipsec_status_check(ut_params->op, dir);\n+\t\tret = test_ipsec_status_check(ut_params->op, flags, dir);\n \t\tif (ret != TEST_SUCCESS)\n \t\t\tgoto crypto_op_free;\n \n@@ -9033,7 +9034,7 @@ test_ipsec_proto_process(const struct ipsec_test_data td[],\n \t\t\tres_d_tmp = &res_d[i];\n \n \t\tret = test_ipsec_post_process(ut_params->ibuf, &td[i],\n-\t\t\t\t\t      res_d_tmp, silent);\n+\t\t\t\t\t      res_d_tmp, silent, flags);\n \t\tif (ret != TEST_SUCCESS)\n \t\t\tgoto crypto_op_free;\n \n@@ -9061,11 +9062,71 @@ test_ipsec_proto_process(const struct ipsec_test_data td[],\n static int\n test_ipsec_proto_known_vec_inb(const void *td_outb)\n {\n+\tstruct ipsec_test_flags flags;\n \tstruct ipsec_test_data td_inb;\n \n+\tmemset(&flags, 0, sizeof(flags));\n+\n \ttest_ipsec_td_in_from_out(td_outb, &td_inb);\n \n-\treturn test_ipsec_proto_process(&td_inb, NULL, 1, false);\n+\treturn test_ipsec_proto_process(&td_inb, NULL, 1, false, &flags);\n+}\n+\n+static int\n+test_ipsec_proto_all(const struct ipsec_test_flags *flags)\n+{\n+\tstruct ipsec_test_data td_outb[IPSEC_TEST_PACKETS_MAX];\n+\tstruct ipsec_test_data td_inb[IPSEC_TEST_PACKETS_MAX];\n+\tunsigned int i, nb_pkts = 1, pass_cnt = 0;\n+\tint ret;\n+\n+\tfor (i = 0; i < RTE_DIM(aead_list); i++) {\n+\t\ttest_ipsec_td_prepare(&aead_list[i],\n+\t\t\t\t      NULL,\n+\t\t\t\t      flags,\n+\t\t\t\t      td_outb,\n+\t\t\t\t      nb_pkts);\n+\n+\t\tret = test_ipsec_proto_process(td_outb, td_inb, nb_pkts, true,\n+\t\t\t\t\t       flags);\n+\t\tif (ret == TEST_SKIPPED)\n+\t\t\tcontinue;\n+\n+\t\tif (ret == TEST_FAILED)\n+\t\t\treturn TEST_FAILED;\n+\n+\t\ttest_ipsec_td_update(td_inb, td_outb, nb_pkts, flags);\n+\n+\t\tret = test_ipsec_proto_process(td_inb, NULL, nb_pkts, true,\n+\t\t\t\t\t       flags);\n+\t\tif (ret == TEST_SKIPPED)\n+\t\t\tcontinue;\n+\n+\t\tif (ret == TEST_FAILED)\n+\t\t\treturn TEST_FAILED;\n+\n+\t\tif (flags->display_alg)\n+\t\t\ttest_ipsec_display_alg(&aead_list[i], NULL);\n+\n+\t\tpass_cnt++;\n+\t}\n+\n+\tif (pass_cnt > 0)\n+\t\treturn TEST_SUCCESS;\n+\telse\n+\t\treturn TEST_SKIPPED;\n+}\n+\n+static int\n+test_ipsec_proto_display_list(const void *data __rte_unused)\n+{\n+\tstruct ipsec_test_flags flags;\n+\n+\tmemset(&flags, 0, sizeof(flags));\n+\n+\tflags.display_alg = true;\n+\n+\treturn test_ipsec_proto_all(&flags);\n }\n \n static int\n@@ -13976,6 +14037,10 @@ static struct unit_test_suite ipsec_proto_testsuite  = {\n \t\t\t\"Inbound known vector (ESP tunnel mode IPv4 AES-GCM 256)\",\n \t\t\tut_setup_security, ut_teardown,\n \t\t\ttest_ipsec_proto_known_vec_inb, &pkt_aes_256_gcm),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"Combined test alg list\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_ipsec_proto_display_list),\n \t\tTEST_CASES_END() /**< NULL terminate unit test array */\n \t}\n };\ndiff --git a/app/test/test_cryptodev_security_ipsec.c b/app/test/test_cryptodev_security_ipsec.c\nindex 2431fcb..d08e093 100644\n--- a/app/test/test_cryptodev_security_ipsec.c\n+++ b/app/test/test_cryptodev_security_ipsec.c\n@@ -10,6 +10,8 @@\n #include \"test.h\"\n #include \"test_cryptodev_security_ipsec.h\"\n \n+extern struct ipsec_test_data pkt_aes_256_gcm;\n+\n int\n test_ipsec_sec_caps_verify(struct rte_security_ipsec_xform *ipsec_xform,\n \t\t\t   const struct rte_security_capability *sec_cap,\n@@ -128,6 +130,68 @@ test_ipsec_td_in_from_out(const struct ipsec_test_data *td_out,\n \t}\n }\n \n+void\n+test_ipsec_td_prepare(const struct crypto_param *param1,\n+\t\t      const struct crypto_param *param2,\n+\t\t      const struct ipsec_test_flags *flags,\n+\t\t      struct ipsec_test_data *td_array,\n+\t\t      int nb_td)\n+\n+{\n+\tstruct ipsec_test_data *td;\n+\tint i;\n+\n+\tmemset(td_array, 0, nb_td * sizeof(*td));\n+\n+\tfor (i = 0; i < nb_td; i++) {\n+\t\ttd = &td_array[i];\n+\t\t/* Copy template for packet & key fields */\n+\t\tmemcpy(td, &pkt_aes_256_gcm, sizeof(*td));\n+\n+\t\t/* Override fields based on param */\n+\n+\t\tif (param1->type == RTE_CRYPTO_SYM_XFORM_AEAD)\n+\t\t\ttd->aead = true;\n+\t\telse\n+\t\t\ttd->aead = false;\n+\n+\t\ttd->xform.aead.aead.algo = param1->alg.aead;\n+\t\ttd->xform.aead.aead.key.length = param1->key_length;\n+\t}\n+\n+\tRTE_SET_USED(flags);\n+\tRTE_SET_USED(param2);\n+}\n+\n+void\n+test_ipsec_td_update(struct ipsec_test_data td_inb[],\n+\t\t     const struct ipsec_test_data td_outb[],\n+\t\t     int nb_td,\n+\t\t     const struct ipsec_test_flags *flags)\n+{\n+\tint i;\n+\n+\tfor (i = 0; i < nb_td; i++) {\n+\t\tmemcpy(td_inb[i].output_text.data, td_outb[i].input_text.data,\n+\t\t       td_outb[i].input_text.len);\n+\t\ttd_inb[i].output_text.len = td_outb->input_text.len;\n+\t}\n+\n+\tRTE_SET_USED(flags);\n+}\n+\n+void\n+test_ipsec_display_alg(const struct crypto_param *param1,\n+\t\t       const struct crypto_param *param2)\n+{\n+\tif (param1->type == RTE_CRYPTO_SYM_XFORM_AEAD)\n+\t\tprintf(\"\\t%s [%d]\\n\",\n+\t\t       rte_crypto_aead_algorithm_strings[param1->alg.aead],\n+\t\t       param1->key_length);\n+\n+\tRTE_SET_USED(param2);\n+}\n+\n static int\n test_ipsec_tunnel_hdr_len_get(const struct ipsec_test_data *td)\n {\n@@ -148,7 +212,7 @@ test_ipsec_tunnel_hdr_len_get(const struct ipsec_test_data *td)\n \n static int\n test_ipsec_td_verify(struct rte_mbuf *m, const struct ipsec_test_data *td,\n-\t\t     bool silent)\n+\t\t     bool silent, const struct ipsec_test_flags *flags)\n {\n \tuint8_t *output_text = rte_pktmbuf_mtod(m, uint8_t *);\n \tuint32_t skip, len = rte_pktmbuf_pkt_len(m);\n@@ -177,12 +241,37 @@ test_ipsec_td_verify(struct rte_mbuf *m, const struct ipsec_test_data *td,\n \t\treturn TEST_FAILED;\n \t}\n \n+\tRTE_SET_USED(flags);\n+\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_ipsec_res_d_prepare(struct rte_mbuf *m, const struct ipsec_test_data *td,\n+\t\t   struct ipsec_test_data *res_d)\n+{\n+\tuint8_t *output_text = rte_pktmbuf_mtod(m, uint8_t *);\n+\tuint32_t len = rte_pktmbuf_pkt_len(m);\n+\n+\tmemcpy(res_d, td, sizeof(*res_d));\n+\tmemcpy(res_d->input_text.data, output_text, len);\n+\tres_d->input_text.len = len;\n+\n+\tres_d->ipsec_xform.direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS;\n+\tif (res_d->aead) {\n+\t\tres_d->xform.aead.aead.op = RTE_CRYPTO_AEAD_OP_DECRYPT;\n+\t} else {\n+\t\tprintf(\"Only AEAD supported\\n\");\n+\t\treturn TEST_SKIPPED;\n+\t}\n+\n \treturn TEST_SUCCESS;\n }\n \n int\n test_ipsec_post_process(struct rte_mbuf *m, const struct ipsec_test_data *td,\n-\t\t\tstruct ipsec_test_data *res_d, bool silent)\n+\t\t\tstruct ipsec_test_data *res_d, bool silent,\n+\t\t\tconst struct ipsec_test_flags *flags)\n {\n \t/*\n \t * In case of known vector tests & all inbound tests, res_d provided\n@@ -190,13 +279,22 @@ test_ipsec_post_process(struct rte_mbuf *m, const struct ipsec_test_data *td,\n \t * For inbound, output_text would be plain packet and for outbound\n \t * output_text would IPsec packet. Validate by comparing against\n \t * known vectors.\n+\t *\n+\t * In case of combined mode tests, the output_text from outbound\n+\t * operation (ie, IPsec packet) would need to be inbound processed to\n+\t * obtain the plain text. Copy output_text to result data, 'res_d', so\n+\t * that inbound processing can be done.\n \t */\n-\tRTE_SET_USED(res_d);\n-\treturn test_ipsec_td_verify(m, td, silent);\n+\n+\tif (res_d == NULL)\n+\t\treturn test_ipsec_td_verify(m, td, silent, flags);\n+\telse\n+\t\treturn test_ipsec_res_d_prepare(m, td, res_d);\n }\n \n int\n test_ipsec_status_check(struct rte_crypto_op *op,\n+\t\t\tconst struct ipsec_test_flags *flags,\n \t\t\tenum rte_security_ipsec_sa_direction dir)\n {\n \tint ret = TEST_SUCCESS;\n@@ -206,6 +304,7 @@ test_ipsec_status_check(struct rte_crypto_op *op,\n \t\tret = TEST_FAILED;\n \t}\n \n+\tRTE_SET_USED(flags);\n \tRTE_SET_USED(dir);\n \n \treturn ret;\ndiff --git a/app/test/test_cryptodev_security_ipsec.h b/app/test/test_cryptodev_security_ipsec.h\nindex 5f1b46d..cbb3ee4 100644\n--- a/app/test/test_cryptodev_security_ipsec.h\n+++ b/app/test/test_cryptodev_security_ipsec.h\n@@ -8,6 +8,8 @@\n #include <rte_cryptodev.h>\n #include <rte_security.h>\n \n+#define IPSEC_TEST_PACKETS_MAX 32\n+\n struct ipsec_test_data {\n \tstruct {\n \t\tuint8_t data[32];\n@@ -45,6 +47,38 @@ struct ipsec_test_data {\n \t} xform;\n };\n \n+struct ipsec_test_flags {\n+\tbool display_alg;\n+};\n+\n+struct crypto_param {\n+\tenum rte_crypto_sym_xform_type type;\n+\tunion {\n+\t\tenum rte_crypto_cipher_algorithm cipher;\n+\t\tenum rte_crypto_auth_algorithm auth;\n+\t\tenum rte_crypto_aead_algorithm aead;\n+\t} alg;\n+\tuint16_t key_length;\n+};\n+\n+static const struct crypto_param aead_list[] = {\n+\t{\n+\t\t.type = RTE_CRYPTO_SYM_XFORM_AEAD,\n+\t\t.alg.aead =  RTE_CRYPTO_AEAD_AES_GCM,\n+\t\t.key_length = 16,\n+\t},\n+\t{\n+\t\t.type = RTE_CRYPTO_SYM_XFORM_AEAD,\n+\t\t.alg.aead = RTE_CRYPTO_AEAD_AES_GCM,\n+\t\t.key_length = 24,\n+\t},\n+\t{\n+\t\t.type = RTE_CRYPTO_SYM_XFORM_AEAD,\n+\t\t.alg.aead = RTE_CRYPTO_AEAD_AES_GCM,\n+\t\t.key_length = 32\n+\t},\n+};\n+\n int test_ipsec_sec_caps_verify(struct rte_security_ipsec_xform *ipsec_xform,\n \t\t\t       const struct rte_security_capability *sec_cap,\n \t\t\t       bool silent);\n@@ -56,11 +90,27 @@ int test_ipsec_crypto_caps_aead_verify(\n void test_ipsec_td_in_from_out(const struct ipsec_test_data *td_out,\n \t\t\t       struct ipsec_test_data *td_in);\n \n+void test_ipsec_td_prepare(const struct crypto_param *param1,\n+\t\t\t   const struct crypto_param *param2,\n+\t\t\t   const struct ipsec_test_flags *flags,\n+\t\t\t   struct ipsec_test_data *td_array,\n+\t\t\t   int nb_td);\n+\n+void test_ipsec_td_update(struct ipsec_test_data td_inb[],\n+\t\t\t  const struct ipsec_test_data td_outb[],\n+\t\t\t  int nb_td,\n+\t\t\t  const struct ipsec_test_flags *flags);\n+\n+void test_ipsec_display_alg(const struct crypto_param *param1,\n+\t\t\t    const struct crypto_param *param2);\n+\n int test_ipsec_post_process(struct rte_mbuf *m,\n \t\t\t    const struct ipsec_test_data *td,\n-\t\t\t    struct ipsec_test_data *res_d, bool silent);\n+\t\t\t    struct ipsec_test_data *res_d, bool silent,\n+\t\t\t    const struct ipsec_test_flags *flags);\n \n int test_ipsec_status_check(struct rte_crypto_op *op,\n+\t\t\t    const struct ipsec_test_flags *flags,\n \t\t\t    enum rte_security_ipsec_sa_direction dir);\n \n #endif\n",
    "prefixes": [
        "v5",
        "2/5"
    ]
}