get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 114297,
    "url": "https://patches.dpdk.org/api/patches/114297/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220727225431.600913-2-cristian.dumitrescu@intel.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": "<20220727225431.600913-2-cristian.dumitrescu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220727225431.600913-2-cristian.dumitrescu@intel.com",
    "date": "2022-07-27T22:54:16",
    "name": "[V4,02/17] pipeline: move specification data structures to internal header",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "52019c3989565096694eab9763f4f3373cce0495",
    "submitter": {
        "id": 19,
        "url": "https://patches.dpdk.org/api/people/19/?format=api",
        "name": "Cristian Dumitrescu",
        "email": "cristian.dumitrescu@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220727225431.600913-2-cristian.dumitrescu@intel.com/mbox/",
    "series": [
        {
            "id": 24107,
            "url": "https://patches.dpdk.org/api/series/24107/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=24107",
            "date": "2022-07-27T22:54:15",
            "name": "[V4,01/17] pipeline: add pipeline name",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/24107/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/114297/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/114297/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 B6C4BA00C4;\n\tThu, 28 Jul 2022 00:54:41 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7A93042B6D;\n\tThu, 28 Jul 2022 00:54:37 +0200 (CEST)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n by mails.dpdk.org (Postfix) with ESMTP id 06FB441156\n for <dev@dpdk.org>; Thu, 28 Jul 2022 00:54:34 +0200 (CEST)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Jul 2022 15:54:34 -0700",
            "from silpixa00400573.ir.intel.com (HELO\n silpixa00400573.ger.corp.intel.com.) ([10.237.223.157])\n by orsmga008.jf.intel.com with ESMTP; 27 Jul 2022 15:54:33 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1658962475; x=1690498475;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=QGOlaI25Cq/W2w3fmxfgarFtx5//9Ylju/pTtyV5fZc=;\n b=CBVvF9SOeUeSPs2gYnO1s67c8X8pV38QC/dm2vIc01AtF3ekX+cJb1qq\n qQmGZwS68GzBqSiRe4y4FAqhdxOy05t4KeZRkRLv65NdqtRLY+0ikA6eE\n eyENEgAY7iTQjIXneXS/ZgbEYEFplH7P31bli9/rD1alowahRiZqD/xgz\n ZixAeGTKBK3OFaygqSXt+UCoZ2Oa1u2BYGbRu65rULEglIp+PrKsI5nJS\n m2mnjcSXsz7PC0SulH3jOl0zs5MUuY/diq5PinIwHq/g18zZD8iHuBk6v\n Mk1wDlDc7P+mQnd1wALucY7HL5bIPa8uvCPSapfuM6w1tm2Pi+7XIyt+/ g==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6400,9594,10421\"; a=\"285912154\"",
            "E=Sophos;i=\"5.93,196,1654585200\"; d=\"scan'208\";a=\"285912154\"",
            "E=Sophos;i=\"5.93,196,1654585200\"; d=\"scan'208\";a=\"628572566\""
        ],
        "X-ExtLoop1": "1",
        "From": "Cristian Dumitrescu <cristian.dumitrescu@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "\"Kamalakannan R .\" <kamalakannan.r@intel.com>",
        "Subject": "[PATCH V4 02/17] pipeline: move specification data structures to\n internal header",
        "Date": "Wed, 27 Jul 2022 22:54:16 +0000",
        "Message-Id": "<20220727225431.600913-2-cristian.dumitrescu@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20220727225431.600913-1-cristian.dumitrescu@intel.com>",
        "References": "<20220727223639.598932-1-cristian.dumitrescu@intel.com>\n <20220727225431.600913-1-cristian.dumitrescu@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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"
    },
    "content": "Move all the pipeline object specification data structures to an\ninternal header file.\n\nSigned-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>\nSigned-off-by: Kamalakannan R. <kamalakannan.r@intel.com>\n---\n lib/pipeline/rte_swx_pipeline_spec.c | 126 +------------------\n lib/pipeline/rte_swx_pipeline_spec.h | 176 +++++++++++++++++++++++++++\n 2 files changed, 177 insertions(+), 125 deletions(-)\n create mode 100644 lib/pipeline/rte_swx_pipeline_spec.h",
    "diff": "diff --git a/lib/pipeline/rte_swx_pipeline_spec.c b/lib/pipeline/rte_swx_pipeline_spec.c\nindex 904b9eb471..5e07b4f794 100644\n--- a/lib/pipeline/rte_swx_pipeline_spec.c\n+++ b/lib/pipeline/rte_swx_pipeline_spec.c\n@@ -9,7 +9,7 @@\n \n #include <rte_common.h>\n \n-#include \"rte_swx_pipeline.h\"\n+#include \"rte_swx_pipeline_spec.h\"\n \n #ifndef MAX_LINE_LENGTH\n #define MAX_LINE_LENGTH 2048\n@@ -34,15 +34,7 @@\n \n /*\n  * extobj.\n- *\n- * extobj OBJ_NAME instanceof OBJ_TYPE [ pragma OBJ_CREATE_ARGS ]\n  */\n-struct extobj_spec {\n-\tchar *name;\n-\tchar *extern_type_name;\n-\tchar *pragma;\n-};\n-\n static void\n extobj_spec_free(struct extobj_spec *s)\n {\n@@ -104,18 +96,7 @@ extobj_statement_parse(struct extobj_spec *s,\n /*\n  * struct.\n  *\n- * struct STRUCT_TYPE_NAME {\n- *\tbit<SIZE> | varbit<SIZE> FIELD_NAME\n- *\t...\n- * }\n  */\n-struct struct_spec {\n-\tchar *name;\n-\tstruct rte_swx_field_params *fields;\n-\tuint32_t n_fields;\n-\tint varbit;\n-};\n-\n static void\n struct_spec_free(struct struct_spec *s)\n {\n@@ -293,13 +274,7 @@ struct_block_parse(struct struct_spec *s,\n /*\n  * header.\n  *\n- * header HEADER_NAME instanceof STRUCT_TYPE_NAME\n  */\n-struct header_spec {\n-\tchar *name;\n-\tchar *struct_type_name;\n-};\n-\n static void\n header_spec_free(struct header_spec *s)\n {\n@@ -351,12 +326,7 @@ header_statement_parse(struct header_spec *s,\n /*\n  * metadata.\n  *\n- * metadata instanceof STRUCT_TYPE_NAME\n  */\n-struct metadata_spec {\n-\tchar *struct_type_name;\n-};\n-\n static void\n metadata_spec_free(struct metadata_spec *s)\n {\n@@ -400,18 +370,7 @@ metadata_statement_parse(struct metadata_spec *s,\n /*\n  * action.\n  *\n- * action ACTION_NAME args none | instanceof STRUCT_TYPE_NAME {\n- *\tINSTRUCTION\n- *\t...\n- * }\n  */\n-struct action_spec {\n-\tchar *name;\n-\tchar *args_struct_type_name;\n-\tconst char **instructions;\n-\tuint32_t n_instructions;\n-};\n-\n static void\n action_spec_free(struct action_spec *s)\n {\n@@ -540,29 +499,7 @@ action_block_parse(struct action_spec *s,\n /*\n  * table.\n  *\n- * table TABLE_NAME {\n- *\tkey {\n- *\t\tMATCH_FIELD_NAME exact | wildcard | lpm\n- *\t\t...\n- *\t}\n- *\tactions {\n- *\t\tACTION_NAME [ @tableonly | @defaultonly ]\n- *\t\t...\n- *\t}\n- *\tdefault_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]\n- *\tinstanceof TABLE_TYPE_NAME\n- *\tpragma ARGS\n- *\tsize SIZE\n- * }\n  */\n-struct table_spec {\n-\tchar *name;\n-\tstruct rte_swx_pipeline_table_params params;\n-\tchar *recommended_table_type_name;\n-\tchar *args;\n-\tuint32_t size;\n-};\n-\n static void\n table_spec_free(struct table_spec *s)\n {\n@@ -1084,22 +1021,7 @@ table_block_parse(struct table_spec *s,\n /*\n  * selector.\n  *\n- * selector SELECTOR_NAME {\n- *\tgroup_id FIELD_NAME\n- *\tselector {\n- *\t\tFIELD_NAME\n- *\t\t...\n- *\t}\n- *\tmember_id FIELD_NAME\n- *\tn_groups N_GROUPS\n- *\tn_members_per_group N_MEMBERS_PER_GROUP\n- * }\n  */\n-struct selector_spec {\n-\tchar *name;\n-\tstruct rte_swx_pipeline_selector_params params;\n-};\n-\n static void\n selector_spec_free(struct selector_spec *s)\n {\n@@ -1385,31 +1307,7 @@ selector_block_parse(struct selector_spec *s,\n /*\n  * learner.\n  *\n- * learner LEARNER_NAME {\n- *\tkey {\n- *\t\tMATCH_FIELD_NAME\n- *\t\t...\n- *\t}\n- *\tactions {\n- *\t\tACTION_NAME [ @tableonly | @defaultonly]\n- *\t\t...\n- *\t}\n- *\tdefault_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]\n- *\tsize SIZE\n- *\ttimeout {\n- *\t\tTIMEOUT_IN_SECONDS\n- *\t\t...\n- *\t}\n- * }\n  */\n-struct learner_spec {\n-\tchar *name;\n-\tstruct rte_swx_pipeline_learner_params params;\n-\tuint32_t size;\n-\tuint32_t *timeout;\n-\tuint32_t n_timeouts;\n-};\n-\n static void\n learner_spec_free(struct learner_spec *s)\n {\n@@ -1958,14 +1856,7 @@ learner_block_parse(struct learner_spec *s,\n /*\n  * regarray.\n  *\n- * regarray NAME size SIZE initval INITVAL\n  */\n-struct regarray_spec {\n-\tchar *name;\n-\tuint64_t init_val;\n-\tuint32_t size;\n-};\n-\n static void\n regarray_spec_free(struct regarray_spec *s)\n {\n@@ -2033,13 +1924,7 @@ regarray_statement_parse(struct regarray_spec *s,\n /*\n  * metarray.\n  *\n- * metarray NAME size SIZE\n  */\n-struct metarray_spec {\n-\tchar *name;\n-\tuint32_t size;\n-};\n-\n static void\n metarray_spec_free(struct metarray_spec *s)\n {\n@@ -2095,16 +1980,7 @@ metarray_statement_parse(struct metarray_spec *s,\n /*\n  * apply.\n  *\n- * apply {\n- *\tINSTRUCTION\n- *\t...\n- * }\n  */\n-struct apply_spec {\n-\tconst char **instructions;\n-\tuint32_t n_instructions;\n-};\n-\n static void\n apply_spec_free(struct apply_spec *s)\n {\ndiff --git a/lib/pipeline/rte_swx_pipeline_spec.h b/lib/pipeline/rte_swx_pipeline_spec.h\nnew file mode 100644\nindex 0000000000..8458de878a\n--- /dev/null\n+++ b/lib/pipeline/rte_swx_pipeline_spec.h\n@@ -0,0 +1,176 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2022 Intel Corporation\n+ */\n+#include <stdint.h>\n+#include <stdio.h>\n+\n+#include <rte_common.h>\n+\n+#include <rte_swx_pipeline.h>\n+\n+/*\n+ * extobj.\n+ *\n+ * extobj OBJ_NAME instanceof OBJ_TYPE [ pragma OBJ_CREATE_ARGS ]\n+ */\n+struct extobj_spec {\n+\tchar *name;\n+\tchar *extern_type_name;\n+\tchar *pragma;\n+};\n+\n+/*\n+ * struct.\n+ *\n+ * struct STRUCT_TYPE_NAME {\n+ *\tbit<SIZE> | varbit<SIZE> FIELD_NAME\n+ *\t...\n+ * }\n+ */\n+struct struct_spec {\n+\tchar *name;\n+\tstruct rte_swx_field_params *fields;\n+\tuint32_t n_fields;\n+\tint varbit;\n+};\n+\n+/*\n+ * header.\n+ *\n+ * header HEADER_NAME instanceof STRUCT_TYPE_NAME\n+ */\n+struct header_spec {\n+\tchar *name;\n+\tchar *struct_type_name;\n+};\n+\n+/*\n+ * metadata.\n+ *\n+ * metadata instanceof STRUCT_TYPE_NAME\n+ */\n+struct metadata_spec {\n+\tchar *struct_type_name;\n+};\n+\n+/*\n+ * action.\n+ *\n+ * action ACTION_NAME args none | instanceof STRUCT_TYPE_NAME {\n+ *\tINSTRUCTION\n+ *\t...\n+ * }\n+ */\n+struct action_spec {\n+\tchar *name;\n+\tchar *args_struct_type_name;\n+\tconst char **instructions;\n+\tuint32_t n_instructions;\n+};\n+\n+/*\n+ * table.\n+ *\n+ * table TABLE_NAME {\n+ *\tkey {\n+ *\t\tMATCH_FIELD_NAME exact | wildcard | lpm\n+ *\t\t...\n+ *\t}\n+ *\tactions {\n+ *\t\tACTION_NAME [ @tableonly | @defaultonly ]\n+ *\t\t...\n+ *\t}\n+ *\tdefault_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]\n+ *\tinstanceof TABLE_TYPE_NAME\n+ *\tpragma ARGS\n+ *\tsize SIZE\n+ * }\n+ */\n+struct table_spec {\n+\tchar *name;\n+\tstruct rte_swx_pipeline_table_params params;\n+\tchar *recommended_table_type_name;\n+\tchar *args;\n+\tuint32_t size;\n+};\n+\n+/*\n+ * selector.\n+ *\n+ * selector SELECTOR_NAME {\n+ *\tgroup_id FIELD_NAME\n+ *\tselector {\n+ *\t\tFIELD_NAME\n+ *\t\t...\n+ *\t}\n+ *\tmember_id FIELD_NAME\n+ *\tn_groups N_GROUPS\n+ *\tn_members_per_group N_MEMBERS_PER_GROUP\n+ * }\n+ */\n+struct selector_spec {\n+\tchar *name;\n+\tstruct rte_swx_pipeline_selector_params params;\n+};\n+\n+/*\n+ * learner.\n+ *\n+ * learner LEARNER_NAME {\n+ *\tkey {\n+ *\t\tMATCH_FIELD_NAME\n+ *\t\t...\n+ *\t}\n+ *\tactions {\n+ *\t\tACTION_NAME [ @tableonly | @defaultonly]\n+ *\t\t...\n+ *\t}\n+ *\tdefault_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]\n+ *\tsize SIZE\n+ *\ttimeout {\n+ *\t\tTIMEOUT_IN_SECONDS\n+ *\t\t...\n+ *\t}\n+ * }\n+ */\n+struct learner_spec {\n+\tchar *name;\n+\tstruct rte_swx_pipeline_learner_params params;\n+\tuint32_t size;\n+\tuint32_t *timeout;\n+\tuint32_t n_timeouts;\n+};\n+\n+/*\n+ * regarray.\n+ *\n+ * regarray NAME size SIZE initval INITVAL\n+ */\n+struct regarray_spec {\n+\tchar *name;\n+\tuint64_t init_val;\n+\tuint32_t size;\n+};\n+\n+/*\n+ * metarray.\n+ *\n+ * metarray NAME size SIZE\n+ */\n+struct metarray_spec {\n+\tchar *name;\n+\tuint32_t size;\n+};\n+\n+/*\n+ * apply.\n+ *\n+ * apply {\n+ *\tINSTRUCTION\n+ *\t...\n+ * }\n+ */\n+struct apply_spec {\n+\tconst char **instructions;\n+\tuint32_t n_instructions;\n+};\n",
    "prefixes": [
        "V4",
        "02/17"
    ]
}