get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 27169,
    "url": "http://patches.dpdk.org/api/patches/27169/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20170725112153.29699-2-akhil.goyal@nxp.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20170725112153.29699-2-akhil.goyal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170725112153.29699-2-akhil.goyal@nxp.com",
    "date": "2017-07-25T11:21:53",
    "name": "[dpdk-dev,RFC,1/1] rte_security: proposal",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3f8585279db38ac020be26541d2b293494afa624",
    "submitter": {
        "id": 517,
        "url": "http://patches.dpdk.org/api/people/517/?format=api",
        "name": "Akhil Goyal",
        "email": "akhil.goyal@nxp.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20170725112153.29699-2-akhil.goyal@nxp.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/27169/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/27169/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 6313A37B7;\n\tTue, 25 Jul 2017 13:23:40 +0200 (CEST)",
            "from NAM01-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam01on0067.outbound.protection.outlook.com [104.47.34.67])\n\tby dpdk.org (Postfix) with ESMTP id 66AB93977\n\tfor <dev@dpdk.org>; Tue, 25 Jul 2017 13:23:36 +0200 (CEST)",
            "from BN6PR03CA0021.namprd03.prod.outlook.com (10.168.230.159) by\n\tCY1PR0301MB0905.namprd03.prod.outlook.com (10.160.165.16) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1282.10; Tue, 25 Jul 2017 11:23:34 +0000",
            "from BN1BFFO11FD048.protection.gbl (2a01:111:f400:7c10::1:141) by\n\tBN6PR03CA0021.outlook.office365.com (2603:10b6:404:23::31) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10\n\tvia Frontend Transport; Tue, 25 Jul 2017 11:23:34 +0000",
            "from az84smr01.freescale.net (192.88.158.2) by\n\tBN1BFFO11FD048.mail.protection.outlook.com (10.58.145.3) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9\n\tvia Frontend Transport; Tue, 25 Jul 2017 11:23:34 +0000",
            "from netperf2.ap.freescale.net ([10.232.133.164])\n\tby az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv6PBNOJK030534; Tue, 25 Jul 2017 04:23:29 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.158.2)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;",
        "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.158.2 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.158.2; helo=az84smr01.freescale.net;",
        "From": "Akhil Goyal <akhil.goyal@nxp.com>",
        "To": "<dev@dpdk.org>, <borisp@mellanox.com>, <declan.doherty@intel.com>",
        "CC": "<radu.nicolau@intel.com>, <aviadye@mellanox.com>, <sandeep.malik@nxp.com>,\n\t<hemant.agrawal@nxp.com>, <pablo.de.lara.guarch@intel.com>, Akhil Goyal\n\t<akhil.goyal@nxp.com>",
        "Date": "Tue, 25 Jul 2017 16:51:53 +0530",
        "Message-ID": "<20170725112153.29699-2-akhil.goyal@nxp.com>",
        "X-Mailer": "git-send-email 2.9.3",
        "In-Reply-To": "<20170725112153.29699-1-akhil.goyal@nxp.com>",
        "References": "<7834b3bd-0800-500c-1c89-3b89e2eb47fa@nxp.com>\n\t<20170725112153.29699-1-akhil.goyal@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131454554144741739;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()",
        "X-Forefront-Antispam-Report": "CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(39840400002)(39860400002)(39400400002)(39410400002)(39450400003)(39850400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(81166006)(48376002)(81156014)(1076002)(33646002)(68736007)(8676002)(8936002)(6666003)(5003940100001)(50226002)(5890100001)(77096006)(626005)(4326008)(2906002)(2950100002)(5660300001)(104016004)(498600001)(53936002)(54906002)(86362001)(38730400002)(36756003)(69596002)(8656003)(2201001)(105606002)(106466001)(305945005)(356003)(189998001)(97736004)(47776003)(50986999)(76176999)(85426001)(50466002)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0905;\n\tH:az84smr01.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "=?us-ascii?Q?1; BN1BFFO11FD048;\n\t1:LEFW42ua/XSNXA7eCQ6rjcxYzT6yYfTsBavZIsCCD?=\n\tkWiIysj7JkHDWDp5Amf0TaFWMaoksZLkxhGUjykk3nuk2xkjhwyUjBfByzbhkFJ++at5eQsdVzcYFNRIFlQPBTIs41K9m13x2mFFRcZI0WiE0GiSyqcHi/BeyqZBqoKmdKWcsv9gm9yf61F8B7m5LOBB7awM3eUokBTVBZQ1sfKRDbXxD5+6bh4OiwD+VT/g2NWXWA1j92miRo9nkiRMH5oPZApNWSWtjt/G88nn65iiLnLVWTU2tVNP5DSYNlATLRzBY3w8TcKENoAv5wqN+Y0VlM+o5fwY8djy0RcchQs6UQ1dkreJv/vxnrKpwuwBgg7doBArpffdp5nFtxhGhJPLHbH/iC7KJrPU7aAAPlV2GvUJL+Hqau8YKN3usCEUUBIUgdLmhSumv0KGu3y8az7N+ugei1SNOAn2sioBe5ib2600MOQHRGgG705F6MO6w4OCx6uSnHgWKC4lxbTvJNAF0w8syYhJb9FL1LPRFtwRr8nIooMMNIOUFT7wPjmo5zqcke3W+J1hgQXkfm0Nk7a7xOc4v+DaKBYuAlUmFxDjcNQ4c6/og31KAT8cm23RRv5HDKMgPv+LeVWRPZwu9D6NKkhmxVoH9Zvso6t4i/eyDknxotXwvvgZJy+w9Rzbuh8xEK+VTvRsyRnxKuLuaMJhT+ShljNDtZjQ1cnYw9pkFZ3YLeklTiByfPUuOaT2bLi0K6mG30i36xj85gLtpkbpf/9z6qG2dMWhuM18EP9rO7ZfR+fxdrybC3gGOtF1e/2P8eW87dsQahAW/QBOhtswXgY/44BgZIRYNVNRujP4Gqwd7Cegqe9rR1i2md935SAUl37mhJT1OLhkUpXYGLLDbQ91uuEQLXePn7chOGTNUe2n/3WkfL3JJQ11he0bwef9RWokgpStT2jMj6WHYV9Y/ZNWVNJuGFf2cmV8xlQMqvJs/JWClM+4fD+5YRz5tWyN+W/TEp5cmen9RK/Ic9SFvOR3PvRQNH2hWp/DKKhYxXpgmI8Yvn46c0veZfVi8x8ZhmfWd/oCCpJx8eN31Vh",
            "1; CY1PR0301MB0905;\n\t3:W9cW6m5LZzHas4cCg1jytltNm1rx1mB7uDCFiFsX599O90ykA3AeqNy7k5zDEQp5rx9JJRN1GAB8JM/qX/GXkjaoRhITA5z8PKcUbO8+Qpb3YvHgO4kGTvveCmT7fKyPhptMu0ELYtdBoGxTwM2uHFyeQ5mW8TVUz7Uaup+2rXvAhFsJ3mGuU2IHWrXepKPvpy37WH+ounrpMdTzN59VaNZbe3oFgEdAT0iK3TUsX8sVdtkWKx6sckOrR5ePBIt3/m0zfVa9fAE5ia61XQ0modgbn6YkrbnXRbjvgepFPpdEgU77/A/WzoatTIaRexzUUTICEgXbxdWcq8CO86+XNOudSezSiUHL9bnLe3o2DsYh+xYtTE4NPVKxTlKgmbvQpfCG8hYiYxTP89zYxpEr5R1DfI1PCTJF5p4txc6nUWfBzMmLAnlfm7qEsgxH+Ra5Tq6TSwK/oK/YDc2Q088gwJSUbhvLSjfEgl7ks2TxuSMCS26bvzATkoJ207lgDZExb/ZpFfVrqmu32/ba1y/2MjoRJ8wWeWQjjp2T381GG3CtDeV4YNLoHTKXjiNCSuIe+ms+mVn2MmbOyw3RwEwoE0gyCXSwUOfjphBOFQTABMCyzdEUtoki8SlYtP+/ZJrOvi9JiXvmtRs6IYTTOyjTG1Ynvw/zC6Mrnpx+xRC+T3AMRmqhEgZbQ7dvJxFmgOMdGwT1JYnZWNqzFWnIsdhzNTdr7nBb5CdJBTt4jw4E7OUV8k3Iqgg+6gmJHfLvkSOq64QMXa7Yl94X79Ee0PPRm4qrUS2/aUeLoVGj8t8eHjSs3fEecINH3pczznwY3c9BhMxtpvJnbEEKCwaNAr5J6FcDLsmFMtqQ5pxAKXijtle/1kKJR9nQwQBi11uj6QAv",
            "1; CY1PR0301MB0905;\n\t25:7zMfbwQToxN2E7spRHJzOTSFBPp0S0aI+gnK0RYfaKmTrj3fDJapDYEf1kFeoZoszWSfu6qCUKZZc4uAEWcxmZ0oiV6SehFpWwr/5iMGg75m4NQLUT8JN27TYsYMb27+HV0JY2EzKmpv2ORCUGnFkYGCda8tkHw4p+vHeWB07MEGYVrrFgPmq7tVxlOTsRaKXwlrFOkL8BMEqbcH2AmWscpVgnWUecNrf+mdGwmEIEeL7/kBGN7Cj5T3EPM+66o6XT3nc8wDLw+z9tzsHzsmcpGWdrBNxtgr1V4vVPU4XPLrIeervuWpRBb1CX31Z5Zcwbv0CoWqBk4jPucQIuGA145zVDSYoV+SCpLfLbEa7mnjKEIeFJdRMBJ5bHFfpDjtJF864GHqzhgJsE32KXScsKO+rCZehAWFR35/EsJ0nbv9KjIm1mxfk2kS7eWq02+1fDA/2noV2OWBI2ewvLFvrL0r4gV9GlT48Xjt0CxQ8/qFP0zDxum8cowgewPt/0C1exXp2uZSpxzr4c3o+CO0E8HeCfiHPa+HNrNVqUNw8JlktCRjpmJFk65H3dokzEgfWYyzMjQEoB4e6apG/jHrIOfKoafJchxPv+3byVnUFu3nQUBZEJ7XnRdHee5g2Rllsr9vAvSjTEZUg6PXTJ78w6VroSITUiaTHlYE7ejEislzY5MZfdxuEKJ7j4pImsz37DG4LZGe1St1yA6k5bIXLcVEaTw3dQT1UtMWsaarRkusMj7DTGWQCFCWuH+sPj5EtMjmau5rCt8tWq1qP4OrSjg67SbwoQ5N5KoUFEzv4VEZscyKNyf/uK2CC4Rdc71jJOQdA1lIgA4Fkox0uV8wyoai4K2H9AwMltAzxApMoFC+raorTVkQz5ipzZ6UX/DR1BysX9oXOezfhJ33JdpdBxZ00dw+OvOTMRyF9BrQmM4=",
            "1; CY1PR0301MB0905;\n\t31:ZyKgwFfBq19OB3hIjHMIzu8LxUad1WNMupaG9HHpzV4kzon3Dfi/XYFn8m4Re14UcMFdAmwZuWdguEQuIx377A+sbhXgSPJWDQvCsYo1/r7RRWrGypWTthGzg9chSYeKPu/b5FeFc1l78Kx7VXaJbadzE9xwPyCwMXP1qXNEZAU89mVBwhbUcQDRPE2ao1wZbwLbQGDElyGxKZ7AStjhJJdrB/Hd+1RCnSzzGnfmwqO3ShJ12y0sOeqFKhxR4837DD33yvvwNk6zMMX92N7us5iUz1k31i9MYmL+ee5pVjwpOscKPZBTMoWc3bahqU0BTGdCsRKyKWayQFaK19BZet3wo4dKMERXsKA7BqXQs6fNl8KcVng2ZGpWw0jrkj2s/m5gaL4bh/VfAg3tATNAr7txVWVAlpA1pyrF6A4+FAsVs1TR3L8RZ9iyY4QLSuuFHM3eRcZvKVhixZKqf+rItcuhltvw8coSo3dYS+mrjLirgFviqZSRa9FEJtUXg+2YsXc3sxukdgLnf+BlEi/BwUIltbSodOMCZqlPXnDZ+t3+5DbIkA8xJAmaHEuLdq4Ac+XkXWQ9HGk6Q8IrjEsHsHBpSuYjDL4K/evzMCnQRH5GJlh3p+YAqKs+Lv6AQw2ESYkK2rCRUWpwDD0aJlhoT9bWKkPMz3X8j7IBUAsrKWpWT3oILZekXUuhGc3ax+VWvRlBzLYpvnaD6Gk31cA22g==",
            "=?us-ascii?Q?1; CY1PR0301MB0905;\n\t4:tLgIMRP5OsWngbkELuvBwAUkyU5Hie9OjTdhLT1G?=\n\twegUnbjyTRpLBNJx/JumqiK9S+YuNqnDuZJomFtlvuHkTqr+7QF3u3lRMK9tRXkk1/nq3rvAJFWUjy/0GB2qaUONEgiyzDYK6lDzTPqJKoPnGGTwgwvEKSJpyfZ5lH8s8VW2aFdn1DhgvpPPe1CUqihCnRJ/u3Ob+Djrr04YAx6v1gdnDCZEh1AtXBaB8VFtJW8AO89gab7wEGFreK+oK/jq6HhfsUpcQX10MVa5b861ynqNve7lC4tjlKeil4dTzm8H1wp+1Am5wWUiLWVWaCUr2bg70NTD3bTsgfqaEFKqJAbIdwnd5MpAVMZsLt3thmyIIjrtIYQIIXNtF6kBggZo1P6ATTAZ49naWP6z52LNpdLHVwLj2LmfErm2Yzj5HYRm721P0q0lEYVtgFdvAKiuln5O1Ryvwuc49MtqExW23uPv9CfQdBTu/f6nscyoV7FLjqSpZwdpgxgRLZAHQrQQQa1Vv0Nk7PZbXMT0k4A9qmQiBny2nbOe0A9SKaDNZaccuT4bZjnidH0T5LSOiaytLjRYPub3iWoenZ8foZdhEE6S9EVQ7PF3pI8y8rnQzcPip+KmuiUBYUZ7wmA5Lksm88MDIogI5EEJQGsNkdx6z6NRv2QCpU40yUsd+BOYdywrX/ih83zNnm/Op6YRpKHzlEr9z20LaAk/89af71zy2WQdmE83Y0FNizlut70gtgwYiDhCKaU/CuVQyJajBiza0AdLEBKMpBKsKjbIWZ0ubwNz8BdmI26OnHUYfKJAOtyiXlhUmXXCLS/sW0fqxJvbXkYyngEJVpFvQm2uLy4B2dbmcI/tQt11NRyoXOAMrqV3bBDf7VYp2qp8QJc8zGnGPzceaXVIpLujErSyI+LpDBR9cpkfXWO4FoNtILowGFUrfsWx9QmYZu7YnoyMFn1i9S2E2Zs9wyn5Pwyz8m8pTD95d5SqfpPC6pmBJskI275+gJOdqwhYJT9B58JWu3VKmIOaPCWsdB1HsToT15yftKftD/Oob8LAj1oYf1G1iWlf8zPX4W0j2fGVgAK7UQfiKMkB2IuQoRmd7rPsLWIVh50e/DS4a+sYLIXEvV+VQARwKql/H9XpUdP1O0Wvp2gbuozFIX9lWRIQbY7ACJK1r2gZ+f5wsgY/4Lgc0M4P4/86zB+Kby+mgtXI1ssZnmTWxE6bW4apyakTPzj+m1eC1FiWORMcCsZFR4cBA8UsmboMksxsFMslULCZA8OAhtMFIXnPjU9mWXN80si2QNLWGg==",
            "=?us-ascii?Q?1; CY1PR0301MB0905;\n\t23:POBUrQMiscbHxAR3B4zaXijQCRx7v/x9262b+Qc?=\n\tm/9MmMRghs/BfpwGCU3nRcv5DrZeLFlAjrOKfvxJmNcBcQxsGDkHZAndnzGeliMKBHtb5BuA4d5/6zlS8LFbgHAPwuUYNUgwIRGraPu6o3rVrTb7vFmfQb91RzIscFpCwKKG1aGtNeSGReZwSNYtIF456CQz0MCj1TJH+XAKP3ffetPhGcpZd4Vurksi6qmH8WtPt92C+558CHQXHOij4tOyQaQbqard0o5IrD8wyX2C5pttzgE3gquCDLnXUlulUxLZ98XHwNsLDSd1FzvDIgOru1VwWrgVcQAYHGHo/VlL+kkHmQMNMGcX1Tmu7ViNzDPc1b+uQqZxxHzv1M9H/chK4eTXGqbEQ1nJJTQIzbLRew5uU2gDY23gpxuVwKAFLGw0LBdj4OsN6Ej+o8PsoFu+omMk3SxsjhfQwyH4wtVrrto79mkUNzywSdH7Iad7JaGNzQS9h+S7RIAeXFsLylhBir4z5sacJT/gVFlscmfeAl0V7Sk+2cGvQUewYmeqdTjqrYXVegVUmvHC3RHsQSTmidfivtAXGtAWuUdtlS/Ir8TS/9cVTK/U9SXpevzFgl4Lkxe5iC/rSLymVrVmDdE+50UP8XHK+loS70zgXdtt67bbrZAV83UWJs+QaTtD65lOUC4pLbxYrAM5fi8+Uuu+8DMJUyG4dPtXm++N5Iw9pF7hJXaI/PsyYvtnpCmnkFfhxOTN0tAqW8phgnpGhVRdJqPrt7A2hdphpw1/XqURbuwv+qcVhOaRWL/8W7NJxw1OLykACmCswuZeW67Kks6L/x7EwYKl0wg6/a71Qcv8d5keU2lW2mSr8VQ1dMjAormUP6HRWLVOj1AP4KfhQ+bCYoukOJz2ZAKRxPvy/P9Hv6iguFcqOb+QT2fjNtOwLivua9msciyZreErNLhDpQheE5WuXU8dbKvyEOuzah+luE1D5eLduyZQd1+VrIw79UEaYvyLMcRMYRfznAUK8Ye+ZXvXVHC0E+iqeh2mSB8iwes9P8lDJWiqgH4+PmRZXPSpJBJ9VwrsrcxcHsBIvxGzsDtpzxX8HlOBtz7XubRQpbuqCeKN2t9nRlEy345jWsSNfwr30Es5q2A8dNrLi+xa3ieY1NfInZ427LdA+i1ltqPRExskt29KZIoUdXPPPLJTX/4kQLr6tmKNS4v/L0sY+TDyWWkc5DbTVbal+dA4Hy/lW47G5tPrCmnSS04gwDgRJK0MCJPhOxnJSG2U/PNVMW8JhFFdssKv+0ddZWmctaUnqap9mS+wm8o55YYfI+KhtBYBB6/UKArNfgadTZ8HS",
            "=?us-ascii?Q?1; CY1PR0301MB0905;\n\t6:c1wPf6Ev6aiPhxEjpYj24mwyh3ibDiGgT3B/x8sj?=\n\tvhLK+h7A7b3a4GfECWDteGnZii8vED0TqeLhuGafFMarb7k0/x5AByQHagnzyVITkl6n2tjAUtZjiVCck6HAuHBnF42GK8W85vGO2l1Ee2TWhYeXMzoOcEqWibhwe9Su3yCuHmsLxiBcCtR7RX8iB37Ap6Tqa/2/gqbIL7iHCJtGjHJPBLZCNFD4wMlM1M7/meCCrTmqti1kFU2D5QtvEOk3zSTFbChwDpNHAof/JP+MrCGcb71wPeG+rTKPIDDD4tXSaaH8/ruF+KfpBcUFoc/c6lHPgb5hi6+dF50fmT42JEB0XYUTBSWDf5L45zQjIodlEIh5TxkynGoqzlhNiR6zCBH2e7W5e8YLX9oGOkNLgkL35XXot9/anhqEu5tVRy8f27QySRtg7+7OsjlYuPWeIg5R/Lkn2+mPQwFQCnCCFNIQYDcpHzrzesU5yqQf1u/+I44kCbIPvPvK4djmUdGqDjcmVYL/txaSdtPgY1tidXHHYRa0UY/Bb9mQMUIDggGX7uV2BAEMJDvY/p7Mi04xA3Nl8pcZH5c/PPvbOekXViaQWrCg/YABFcPnRFJJ/CH7V1Gntx19EUSG49gUfNz9OGZ8pvSEZvLa+r8J1Bs2B09wmxH84R7VyN7PLmuIVSp4iZFrdogIYJK5vcIpD9Q2xPSgCNZku4z3+q1HqSSHTcj+etogbkqPjbR52/0Vh3e1bWNiOhR1MeHiI/iPek0mUKvxRZ6iYhRzTOjXQkNjHHwaCVNXrW/u3LP5rmxZCiBzXWM2PkChKob3lcRWFgTkpkfz6tIF9vsF15ICP07F/+tRFnpxaswvPu2L+BhXeah8OZM6vtECeHbyvXXRK7d37WbS+aFeKTmE2r7JO3a5WLgPJxRBgaSohkS1YlWHcD+JPn70zqdBq4vNkzO2CZzuxeuQU7DM/s2aR0JNmpKYnQ==",
            "1; CY1PR0301MB0905;\n\t5:NjAIz1h6mWeaOFFw5nIm6HWVlN+Rm5LDx6TKjOW/Lv17NC0m2wlx4FI0i0aqMq5+RQ3OL8l2sUqUNkVXBGUCyhOEE0wgemm9u1lrsgPb5zT3W5GtsvyHpZu7aWi62p9f1+0SlnfXDhTxgGJ8Z2DFBu5C4Lzxxe3enicQ/CwbZOvmZaqnw0G+39XG5rK6QSCTQpz0Z1NN4hrt64odq7blrBO8Xe4ag+I85b+Y8fsRhHHSIfhJPYnFzdDSHCZJtPDvCACfhx6xI6KpN575/lCsLl7lwQkKu0qrrH8cqGVxLJfTImqRr3/XE3YI+r5d1QGmg77sTHCcPLkp6DVaFkiLewLbj5aVbfMfg2esnYJUlqVufMcpguY09LF4QYjxa//AhGhR4IlCvhyUwTOq59eiojhQHJC/dg5FhQ6D48SLh61eXEkX/aOplf8CYmL7Y58a8Thv42vUXsrDZZ64g0d6OePNMSc7xvf5/jsahFEics7qI18V6kCG6o6I4BBHe1zpfkT27g6iFT0gPJeOq7ju5Q==;\n\t24:dtN8ggkj/h9vD7kS2HYOn6Zl02q/TF9YZIm5vYF/7huitAzAI5bKNIedRqfEJQSK4+K9P0+Z4VesREMqpj0umI21Hyz1a28AQ+sVeuyWtcI=",
            "1; CY1PR0301MB0905;\n\t7:tCcu/KRV1+LOVGLNZbRpq0YX49BK6AIxCcNt+a/8Q8Bi8d7rcx93MazTOjTm4wp3lx/Up5u5AliXBiofK+4nFBIJMCZrNrBKOx3CPGCvvpXD654Uq37MW0zsw9CX2u6HZ/oW3rU0mqSOvI1B39T9J/GMSw+bVDjKLmyLg81a0Ll1a5mv5PDOLFRZcDaGZq18gB0MwtCwa8t//choVamRdc3y9UmzoaFBv8NX680dtO4ZbMo3ROd6S1kk1q3rNeQWzTMQ3+iPntf0xlP4i3VFi5lOi4Oue5mmubyzA3Yga1DpD80HqZfLStRftSw2JqDsGm/OVhmWK1hqeIeRFi1TJFBqw1QxZdWTY/qwGMkvGB3kI1m3eeTqjWxQyGPu8ejlJw/SkGQ2HJatm8SUabkJ3pTVbTpCbbj1cZRfmFnqQKkYGGgq2zl3PRPb1xZJieMrzQO0d97jm3BSU/IqGfgxbRfkBXnyvdYT0M0dM3Y0YReKtJHjaaZ9kz04qlTMD3ANlcZuPeu652lQndd+M2ve/buPBKYdnZkYfaFj/5hBIJSo+Pg/IPMsPxv3VtKGFc2w6QLl6N/YBqUjuVlpml7RmLpw4u9ubys0bhX/j4NUIigBxheaUYVPM/AYUd3Uoc1PYS3sYHxZgPwnngscMaaWcj7fB3POZ8xxtYYd1sg+rFaOTJe3i54iOx4EtIKgTZfNv5T/YSPKkpvDSqLznLdGqkEWHFG6F6Z2rURZtHWnil+B0N6y+fL4J64OVkgYDTQOl9+bnMDfFWvV11WS2NQRpndIls35brx1mn04KBUgajg="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "c39ef542-06a9-44b2-8e73-08d4d34f964b",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:CY1PR0301MB0905; ",
        "X-MS-TrafficTypeDiagnostic": "CY1PR0301MB0905:",
        "X-Exchange-Antispam-Report-Test": "UriScan:(192374486261705)(185117386973197); ",
        "X-Microsoft-Antispam-PRVS": "<CY1PR0301MB0905BFFD9223CD141458790DE6B80@CY1PR0301MB0905.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(8121501046)(13016025)(5005006)(13018025)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123565025)(20161123556025)(20161123561025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CY1PR0301MB0905; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CY1PR0301MB0905; ",
        "X-Forefront-PRVS": "03793408BA",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Jul 2017 11:23:34.0997\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.158.2]; \n\tHelo=[az84smr01.freescale.net]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY1PR0301MB0905",
        "Subject": "[dpdk-dev] [RFC PATCH 1/1] rte_security: proposal",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Detailed description is added in the coverletter\n\nSigned-off-by: Akhil Goyal <akhil.goyal@nxp.com>\n---\n lib/librte_security/rte_security.h | 405 +++++++++++++++++++++++++++++++++++++\n 1 file changed, 405 insertions(+)\n create mode 100644 lib/librte_security/rte_security.h",
    "diff": "diff --git a/lib/librte_security/rte_security.h b/lib/librte_security/rte_security.h\nnew file mode 100644\nindex 0000000..b46e096\n--- /dev/null\n+++ b/lib/librte_security/rte_security.h\n@@ -0,0 +1,405 @@\n+#ifndef _RTE_SECURITY_H_\n+#define _RTE_SECURITY_H_\n+\n+/**\n+ * @file rte_security.h\n+ *\n+ * RTE Security Common Definitions\n+ *\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+\n+#include <rte_mbuf.h>\n+#include <rte_memory.h>\n+#include <rte_mempool.h>\n+#include <rte_common.h>\n+\n+#include <rte_crypto.h>\n+#include <rte_cryptodev.h>\n+\n+/** Security Assosiation direction for IPSec */\n+enum rte_security_conf_ipsec_sa_dir {\n+\tRTE_SECURITY_IPSEC_SA_DIR_INGRESS,\n+\t/**< Ingress path */\n+\tRTE_SECURITY_IPSEC_SA_DIR_EGRESS\n+\t/**< Egress path */\n+};\n+\n+/** IPSec protocol mode */\n+enum rte_security_conf_ipsec_sa_mode {\n+\tRTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,\n+\t/**< IPSec Transport mode */\n+\tRTE_SECURITY_IPSEC_SA_MODE_TUNNEL\n+\t/**< IPSec Tunnel mode */\n+};\n+\n+/** IPSec Protocol */\n+enum rte_security_conf_ipsec_sa_protocol {\n+\tRTE_SECURITY_IPSEC_SA_PROTO_AH,\n+\t/**< AH protocol */\n+\tRTE_SECURITY_IPSEC_SA_PROTO_ESP\n+\t/**< ESP protocol */\n+};\n+\n+/** IPSEC tunnel type */\n+enum rte_security_ipsec_tunnel_type {\n+\tRTE_SECURITY_IPSEC_TUNNEL_IPV4 = 0,\n+\t/**< Outer header is IPv4 */\n+\tRTE_SECURITY_IPSEC_TUNNEL_IPV6\n+\t/**< Outer header is IPv6 */\n+};\n+\n+/**\n+ * IPSEC tunnel parameters\n+ *\n+ * These parameters are used to build outbound tunnel headers.\n+ */\n+struct rte_security_ipsec_tunnel_param {\n+\tstruct rte_security_ipsec_tunnel_type type;\n+\t/**< Tunnel type: IPv4 or IPv6 */\n+\n+\tunion {\n+\t\tstruct {\n+\t\t\tstruct ipaddr src_ip;\n+\t\t\t/**< IPv4 source address */\n+\t\t\tstruct ipaddr dst_ip;\n+\t\t\t/**< IPv4 destination address */\n+\t\t\tuint8_t dscp;\n+\t\t\t/**< IPv4 Differentiated Services Code Point */\n+\t\t\tuint8_t df;\n+\t\t\t/**< IPv4 Don't Fragment bit */\n+\t\t\tuint8_t ttl;\n+\t\t\t/**< IPv4 Time To Live */\n+\t\t} ipv4; /**< IPv4 header parameters */\n+\n+\t\tstruct {\n+\t\t\tstruct ip6addr *src_addr;\n+\t\t\t/**< IPv6 source address */\n+\t\t\tstruct ip6addr *dst_addr;\n+\t\t\t/**< IPv6 destination address */\n+\t\t\tuint8_t dscp;\n+\t\t\t/**< IPv6 Differentiated Services Code Point */\n+\t\t\tuint32_t flabel;\n+\t\t\t/**< IPv6 flow label */\n+\t\t\tuint8_t hlimit;\n+\t\t\t/**< IPv6 hop limit */\n+\t\t} ipv6; /**< IPv6 header parameters */\n+\t}; /**< Various tunnel parameters */\n+};\n+\n+/**\n+ * IPSEC SA option flags\n+ */\n+struct rte_security_ipsec_sa_options {\n+\t/** Extended Sequence Numbers (ESN)\n+\t  *\n+\t  * * 1: Use extended (64 bit) sequence numbers\n+\t  * * 0: Use normal sequence numbers\n+\t  */\n+\tuint32_t esn : 1;\n+\n+\t/** UDP encapsulation\n+\t  *\n+\t  * * 1: Do UDP encapsulation/decapsulation so that IPSEC packets can\n+\t  *      traverse through NAT boxes.\n+\t  * * 0: No UDP encapsulation\n+\t  */\n+\tuint32_t udp_encap : 1;\n+\n+\t/** Copy DSCP bits\n+\t  *\n+\t  * * 1: Copy IPv4 or IPv6 DSCP bits from inner IP header to\n+\t  *      the outer IP header in encapsulation, and vice versa in\n+\t  *      decapsulation.\n+\t  * * 0: Use values from odp_ipsec_tunnel_param_t in encapsulation and\n+\t  *      do not change DSCP field in decapsulation.\n+\t  */\n+\tuint32_t copy_dscp : 1;\n+\n+\t/** Copy IPv6 Flow Label\n+\t  *\n+\t  * * 1: Copy IPv6 flow label from inner IPv6 header to the\n+\t  *      outer IPv6 header.\n+\t  * * 0: Use value from odp_ipsec_tunnel_param_t\n+\t  */\n+\tuint32_t copy_flabel : 1;\n+\n+\t/** Copy IPv4 Don't Fragment bit\n+\t  *\n+\t  * * 1: Copy the DF bit from the inner IPv4 header to the outer\n+\t  *      IPv4 header.\n+\t  * * 0: Use value from odp_ipsec_tunnel_param_t\n+\t  */\n+\tuint32_t copy_df : 1;\n+\n+\t/** Decrement inner packet Time To Live (TTL) field\n+\t  *\n+\t  * * 1: In tunnel mode, decrement inner packet IPv4 TTL or\n+\t  *      IPv6 Hop Limit after tunnel decapsulation, or before tunnel\n+\t  *      encapsulation.\n+\t  * * 0: Inner packet is not modified.\n+\t  */\n+\tuint32_t dec_ttl : 1;\n+\n+};\n+\n+/** IPSec Operations */\n+enum rte_security_ipsec_operation {\n+\tRTE_SECURITY_IPSEC_OP_ENCAP,\n+\t/**< Encrypt and generate digest */\n+\tRTE_SECURITY_IPSEC_OP_DECAP\n+\t/**< Verify digest and decrypt */\n+};\n+\n+/**\n+ * IPSec Setup Data.\n+ *\n+ * This structure contains data relating to IPSec\n+ * used to create a session.\n+ */\n+struct rte_security_ipsec_xform {\n+\tenum rte_security_ipsec_operation op;\n+\t/**< IPSec operation - Encap or Decap */\n+\tenum rte_crypto_cipher_algorithm cipher_alg;\n+\t/**< Cipher Algorithm */\n+\tstruct {\n+\t\tuint8_t *data;  /**< pointer to key data */\n+\t\tsize_t length;   /**< key length in bytes */\n+\t} cipher_key;\n+\tenum rte_crypto_auth_algorithm auth_alg;\n+\t/**< Authentication Algorithm */\n+\tstruct {\n+\t\tuint8_t *data;  /**< pointer to key data */\n+\t\tsize_t length;   /**< key length in bytes */\n+\t} auth_key;\n+\tuint32_t salt;\t/**< salt for this SA */\n+};\n+\n+/** IPsec Security Session Configuration */\n+struct rte_security_conf_ipsec_sa {\n+\tunsigned int spi;\n+\t/**< SA security parameter index */\n+\n+\tenum rte_security_conf_ipsec_sa_dir sa_dir;\n+\t/**< IPsec SA direction - ingress / egress */\n+\n+\tenum rte_security_conf_ipsec_sa_mode mode;\n+\t/**< IPsec SA Mode - transport/tunnel */\n+\n+\tenum rte_security_conf_ipsec_sa_protocol proto;\n+\t/**< IPsec SA Protocol - AH/ESP */\n+\n+\tstruct rte_security_ipsec_xform *ipsec_xform;\n+\t/**< IPsec Transform */\n+\n+\tstruct rte_security_ipsec_tunnel_param *tunnel;\n+\t/**< Tunnel parameters, NULL for transport mode */\n+\n+\tstruct rte_security_ipsec_sa_options *options;\n+\t/**< various SA options */\n+};\n+\n+/** IPsec Security Session Configuration */\n+struct rte_security_conf_dtls {\n+\t/** To be Filled */\n+};\n+\n+/** IPsec Security Session Configuration */\n+struct rte_security_conf_macsec {\n+\t/** To be Filled */\n+};\n+\n+/**< Security Session action type */\n+enum rte_security_session_action_type {\n+\tRTE_SECURITY_SESS_ETH_INLINE_CRYPTO,\n+\t/**< Crypto operations are performed by Network interface */\n+\tRTE_SECURITY_SESS_ETH_PROTO_OFFLOAD,\n+\t/**< Crypto operations with protocol support are performed\n+\t * by Network/ethernet device.\n+\t */\n+\tRTE_SECURITY_SESS_CRYPTO_PROTO_OFFLOAD,\n+\t/**< Crypto operations with protocol support are performed\n+\t * by Crypto device.\n+\t */\n+\tRTE_SECURITY_SESS_NONE\n+\t/**< Non protocol offload. Application need to manage everything */\n+};\n+\n+/** Security Session Protocols */\n+enum rte_security_sess_protocol {\n+\tRTE_SEC_CONF_DTLS,\n+\t/**< DTLS Protocol */\n+\tRTE_SEC_CONF_IPSEC,\n+\t/**< IPSec Protocol */\n+\tRTE_SEC_CONF_MACSEC\n+\t/**< MACSec Protocol */\n+};\n+/**\n+ * Security Session Configuration\n+ */\n+struct rte_security_sess_conf {\n+\tenum rte_security_session_action_type action_type;\n+\t/**< Type of action to be performed on the session */\n+\tenum rte_security_sess_protocol protocol;\n+\t/**< Security protocol to be configured */\n+\n+\tunion {\n+\t\tstruct rte_security_conf_ipsec_sa ipsec_sa;\n+\t\tstruct rte_security_conf_dtls dtls;\n+\t\tstruct rte_security_conf_macsec macsec;\n+\t};\n+\t/**< Configuration parameters for security session */\n+};\n+\n+struct rte_security_session {\n+\t__extension__ void *sess_private_data[0];\n+\t/**< Private session material */\n+};\n+\n+/**\n+ * Configure device(crypto/ethernet) to enable Security operations\n+ *\n+ * @param   dev_id    Device id on which Security operations need to be enabled\n+ * @param   dev_name  Device name - crypto or ethernet device\n+ * @return\n+ *  - On success, zero\n+ *  - On failure, a negative value.\n+ */\n+int\n+rte_security_configure(uint16_t dev_id, char *dev_name);\n+\n+/**\n+ * Create Security session header (generic with no private data)\n+ *\n+ * @param   mempool    Session mempool to allocate session objects from\n+ * @return\n+ *  - On success, pointer to session\n+ *  - On failure, NULL\n+ */\n+struct rte_security_session *\n+rte_security_session_create(struct rte_mempool *mempool);\n+\n+/**\n+ * Fill out private data for the device, based on its device id and name.\n+ *\n+ * @param   dev_id   Device id that we want the session to be used on\n+ * @param   dev_name Device name for which session is to be used\n+ * @param   sess     Session where the private data will be attached to\n+ * @param   conf     Security config to apply on flow\n+ *                   processed with this session\n+ * @param   mempool  Mempool where the private data is allocated.\n+ *\n+ * @return\n+ *  - On success, zero.\n+ *  - On failure, a negative value.\n+ */\n+int\n+rte_security_session_init(uint16_t dev_id, char *dev_name,\n+\t\t\t  struct rte_security_session *sess,\n+\t\t\t  struct rte_security_sess_conf *conf,\n+\t\t\t  struct rte_mempool *mempool);\n+\n+/**\n+ * Frees Security session header, after checking that all\n+ * the device private data has been freed, returning it\n+ * to its original mempool.\n+ *\n+ * @param   sess     Session header to be freed.\n+ *\n+ * @return\n+ *  - 0 if successful.\n+ *  - -EINVAL if session is NULL.\n+ *  - -EBUSY if not all device private data has been freed.\n+ */\n+int\n+rte_security_session_free(struct rte_security_session *sess);\n+\n+/**\n+ * Frees private data for the device id, based on its device name,\n+ * returning it to its mempool.\n+ *\n+ * @param   dev_id   ID of device that uses the session.\n+ * @param   dev_name Name of device that uses the session.\n+ * @param   sess     Session containing the reference to the private data\n+ *\n+ * @return\n+ *  - 0 if successful.\n+ *  - -EINVAL if device is invalid or session is NULL.\n+ */\n+int\n+rte_security_session_clear(uint8_t dev_id, char *dev_name,\n+\t\t\t   struct rte_security_session *sess);\n+\n+\n+/**\n+ * Attach a session to a crypto operation.\n+ * This API is needed only in case of RTE_SECURITY_SESS_CRYPTO_PROTO_OFFLOAD\n+ * For other rte_security_session_action_type, ol_flags in rte_mbuf may be\n+ * defined to perform security operations.\n+ *\n+ * @param\top\tcrypto operation\n+ * @param\tsess\tsecurity session\n+ */\n+static inline int\n+rte_security_attach_session(struct rte_crypto_op *op,\n+\t\t\t    struct rte_security_session *sess);\n+\n+/**\n+ * Security Capability\n+ */\n+struct rte_security_capability {\n+\tenum rte_security_sess_protocol protocol;\n+\tRTE_STD_C11\n+\tunion {\n+\t\tstruct {\n+\t\t\tenum rte_crypto_auth_algorithm algo;\n+\t\t\t/**< authentication algorithm */\n+\t\t\tenum rte_crypto_cipher_algorithm algo;\n+\t\t\t/**< cipher algorithm */\n+\t\t\tuint16_t block_size;\n+\t\t\t/**< algorithm block size */\n+\t\t\tstruct rte_crypto_param_range c_key_size;\n+\t\t\t/**< cipher key size range */\n+\t\t\tstruct rte_crypto_param_range a_key_size;\n+\t\t\t/**< auth key size range */\n+\t\t\tstruct rte_crypto_param_range digest_size;\n+\t\t\t/**< digest size range */\n+\t\t\tstruct rte_crypto_param_range iv_size;\n+\t\t\t/**< Initialisation vector data size range */\n+\t\t} ipsec;\n+\t\t/**< IPSEC transform capabilities */\n+\t\tstruct {\n+\t\t\t/* To be Filled */\n+\t\t} dtls;\n+\t\t/**< DTLS transform capabilities */\n+\t\tstruct {\n+\t\t\t/* To be Filled */\n+\t\t} macsec;\n+\t\t/**< MACSEC transform capabilities */\n+\t};\n+};\n+\n+/**\n+ *  Provide capabilities available for defined device and algorithm\n+ *\n+ * @param\tdev_id\t\tThe identifier of the device.\n+ * @param\tdev_name\tDevice name for which capability is needed\n+ * @param\tprotocol\tProtocol for which capability is required\n+ *\n+ * @return\n+ *   - Return description of the security capability if exist.\n+ *   - Return NULL if the capability not exist.\n+ */\n+const struct rte_security_capability *\n+rte_security_capability_get(uint8_t dev_id, char *dev_name,\n+\t\tenum rte_security_sess_protocol protocol);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _RTE_SECURITY_H_ */\n",
    "prefixes": [
        "dpdk-dev",
        "RFC",
        "1/1"
    ]
}