get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 82769,
    "url": "http://patches.dpdk.org/api/patches/82769/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201029125339.30916-2-ibtisam.tariq@emumba.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": "<20201029125339.30916-2-ibtisam.tariq@emumba.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201029125339.30916-2-ibtisam.tariq@emumba.com",
    "date": "2020-10-29T12:53:33",
    "name": "[2/8] examples/l3fwd-acl: enhance getopt_long usage",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "6b852bfa80e0bb23bdc098e7a4daabf20df5da94",
    "submitter": {
        "id": 1680,
        "url": "http://patches.dpdk.org/api/people/1680/?format=api",
        "name": "Ibtisam Tariq",
        "email": "ibtisam.tariq@emumba.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20201029125339.30916-2-ibtisam.tariq@emumba.com/mbox/",
    "series": [
        {
            "id": 13463,
            "url": "http://patches.dpdk.org/api/series/13463/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13463",
            "date": "2020-10-29T12:53:32",
            "name": "[1/8] examples/fips_validation: enhance getopt_long usage",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/13463/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/82769/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/82769/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id B5C42A04B5;\n\tThu, 29 Oct 2020 13:55:55 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7C4B4CB96;\n\tThu, 29 Oct 2020 13:53:59 +0100 (CET)",
            "from mail-ed1-f68.google.com (mail-ed1-f68.google.com\n [209.85.208.68]) by dpdk.org (Postfix) with ESMTP id 33E46CB56\n for <dev@dpdk.org>; Thu, 29 Oct 2020 13:53:58 +0100 (CET)",
            "by mail-ed1-f68.google.com with SMTP id dg9so2864904edb.12\n for <dev@dpdk.org>; Thu, 29 Oct 2020 05:53:58 -0700 (PDT)",
            "from localhost.localdomain ([39.33.228.207])\n by smtp.gmail.com with ESMTPSA id q19sm1487951ejz.90.2020.10.29.05.53.52\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 29 Oct 2020 05:53:55 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=emumba-com.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references;\n bh=1uDQqEDj12FGjfFLhWqY7mUHJCOn+q/keM9wT3A+eqU=;\n b=vbQ1I8fTJ4WOIK7fyccyb//UF4aIJDZGcy0i/1bmlEK33ysI+SsBtyjFxA4r7epATk\n BviwpCAU8A4cctT31+C5+D3vzTgsEan2Ozk+uUY2GEbUuow/Vo0rUquYf+PgYLV7gqmB\n SE3xaNlBiZiAfsxnxvkfGsUFJmWPt5D36d+wWG74sqY5q7SK9pBvzau7f6eE8ow9GiMW\n 5Y5uQbnTTptRXyjqnBrfDYcA+syfvSK1Tw7hx0ZVHxFohKKtuFOe3arLncEQL1TlA2X+\n /0dj8ZWERcGX1HRrsRD+ab+I8hJ1T3XIq8ibPL6EJ0SO2KZOm/DNXHTH9WrKeu6y08Ty\n C/yw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references;\n bh=1uDQqEDj12FGjfFLhWqY7mUHJCOn+q/keM9wT3A+eqU=;\n b=cpQ1fnjV5U9nEGGzKeRlytPsInH/06OFAX9kkGv6QilITfCa20XYwvc+Ph9xUlCfDL\n hl+TjeK1M4Ktw3xckK3TGGgOu4WwzmpjDPZzzcil8wlktl3TWceVarHaVpZU8n5k2BvI\n nZwiC0DxGbpzgvdARA7nXHAnBUOqybsN8H3g9X6dq1pCNdbFTHpGiJuDIFJoNGCwCnxv\n tCtoJDCaYiwTva+GqSa4F5Z2GDomwdQbIxx2Rlnbo2mHHiT7o9bWtsfY61L8h2Q9nW7k\n RURXh2vxbXZcd4y4j+24iJXM9gnuunP/JdJPqe6beVrYRVTz9ygjjlbYQs24rHKUko/U\n 1UCQ==",
        "X-Gm-Message-State": "AOAM533yTqDqdDb10ut2IDdrIFW3UuMNCVzTevBFhoRMPhjUSTUK944d\n jbKGwlqAOkUUcp5pdltvVozOOTQUdLq22uJN",
        "X-Google-Smtp-Source": "\n ABdhPJxXRIJwAUwlA84RrfsnRC39r5nq+D3SPvop0oYvBsaJi88ihWyF/mdD/asFlIn+3WohVeOBpA==",
        "X-Received": "by 2002:a50:a683:: with SMTP id e3mr3802727edc.33.1603976035841;\n Thu, 29 Oct 2020 05:53:55 -0700 (PDT)",
        "From": "Ibtisam Tariq <ibtisam.tariq@emumba.com>",
        "To": "marko.kovacevic@intel.com, konstantin.ananyev@intel.com,\n reshma.pattan@intel.com, john.mcnamara@intel.com,\n cristian.dumitrescu@intel.com, jasvinder.singh@intel.com,\n chenbo.xia@intel.com, maxime.coquelin@redhat.com, xiaoyun.li@intel.com",
        "Cc": "dev@dpdk.org,\n\tIbtisam Tariq <ibtisam.tariq@emumba.com>",
        "Date": "Thu, 29 Oct 2020 12:53:33 +0000",
        "Message-Id": "<20201029125339.30916-2-ibtisam.tariq@emumba.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201029125339.30916-1-ibtisam.tariq@emumba.com>",
        "References": "<20201029125339.30916-1-ibtisam.tariq@emumba.com>",
        "Subject": "[dpdk-dev] [PATCH 2/8] examples/l3fwd-acl: enhance getopt_long usage",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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": "Instead of using getopt_long return value, strcmp was used to\ncompare the input parameters with the struct option array. This\npatch get rid of all those strcmp by directly binding each longopt\nwith an int enum.\n\nBugzilla ID: 238\nFixes: 361b2e9559 (\"acl: new sample l3fwd-acl\")\nCc: konstantin.ananyev@intel.com\n\nReported-by: David Marchand <david.marchand@redhat.com>\nSigned-off-by: Ibtisam Tariq <ibtisam.tariq@emumba.com>\n---\n examples/l3fwd-acl/main.c | 189 +++++++++++++++++++-------------------\n 1 file changed, 97 insertions(+), 92 deletions(-)",
    "diff": "diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c\nindex 961594f5f..5c8de1fc0 100644\n--- a/examples/l3fwd-acl/main.c\n+++ b/examples/l3fwd-acl/main.c\n@@ -195,13 +195,24 @@ send_single_packet(struct rte_mbuf *m, uint16_t port);\n #define ACL_LEAD_CHAR\t\t('@')\n #define ROUTE_LEAD_CHAR\t\t('R')\n #define COMMENT_LEAD_CHAR\t('#')\n+\n+enum{\n #define OPTION_CONFIG\t\t\"config\"\n+\tOPTION_CONFIG_NUM = 256,\n #define OPTION_NONUMA\t\t\"no-numa\"\n+\tOPTION_NONUMA_NUM,\n #define OPTION_ENBJMO\t\t\"enable-jumbo\"\n+\tOPTION_ENBJMO_NUM,\n #define OPTION_RULE_IPV4\t\"rule_ipv4\"\n+\tOPTION_RULE_IPV4_NUM,\n #define OPTION_RULE_IPV6\t\"rule_ipv6\"\n+\tOPTION_RULE_IPV6_NUM,\n #define OPTION_ALG\t\t\"alg\"\n+\tOPTION_ALG_NUM,\n #define OPTION_ETH_DEST\t\t\"eth-dest\"\n+\tOPTION_ETH_DEST_NUM,\n+};\n+\n #define ACL_DENY_SIGNATURE\t0xf0000000\n #define RTE_LOGTYPE_L3FWDACL\tRTE_LOGTYPE_USER3\n #define acl_log(format, ...)\tRTE_LOG(ERR, L3FWDACL, format, ##__VA_ARGS__)\n@@ -1747,13 +1758,13 @@ parse_args(int argc, char **argv)\n \tint option_index;\n \tchar *prgname = argv[0];\n \tstatic struct option lgopts[] = {\n-\t\t{OPTION_CONFIG, 1, 0, 0},\n-\t\t{OPTION_NONUMA, 0, 0, 0},\n-\t\t{OPTION_ENBJMO, 0, 0, 0},\n-\t\t{OPTION_RULE_IPV4, 1, 0, 0},\n-\t\t{OPTION_RULE_IPV6, 1, 0, 0},\n-\t\t{OPTION_ALG, 1, 0, 0},\n-\t\t{OPTION_ETH_DEST, 1, 0, 0},\n+\t\t{OPTION_CONFIG, 1, NULL, OPTION_CONFIG_NUM},\n+\t\t{OPTION_NONUMA, 0, NULL, OPTION_NONUMA_NUM},\n+\t\t{OPTION_ENBJMO, 0, NULL, OPTION_ENBJMO_NUM},\n+\t\t{OPTION_RULE_IPV4, 1, NULL, OPTION_RULE_IPV4_NUM},\n+\t\t{OPTION_RULE_IPV6, 1, NULL, OPTION_RULE_IPV6_NUM},\n+\t\t{OPTION_ALG, 1, NULL, OPTION_ALG_NUM},\n+\t\t{OPTION_ETH_DEST, 1, NULL, OPTION_ETH_DEST_NUM},\n \t\t{NULL, 0, 0, 0}\n \t};\n \n@@ -1778,98 +1789,92 @@ parse_args(int argc, char **argv)\n \t\t\tbreak;\n \n \t\t/* long options */\n-\t\tcase 0:\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_CONFIG,\n-\t\t\t\t\tsizeof(OPTION_CONFIG))) {\n-\t\t\t\tret = parse_config(optarg);\n-\t\t\t\tif (ret) {\n-\t\t\t\t\tprintf(\"invalid config\\n\");\n-\t\t\t\t\tprint_usage(prgname);\n-\t\t\t\t\treturn -1;\n-\t\t\t\t}\n-\t\t\t}\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_NONUMA,\n-\t\t\t\t\tsizeof(OPTION_NONUMA))) {\n-\t\t\t\tprintf(\"numa is disabled\\n\");\n-\t\t\t\tnuma_on = 0;\n-\t\t\t}\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_ENBJMO, sizeof(OPTION_ENBJMO))) {\n-\t\t\t\tstruct option lenopts = {\n-\t\t\t\t\t\"max-pkt-len\",\n-\t\t\t\t\trequired_argument,\n-\t\t\t\t\t0,\n-\t\t\t\t\t0\n-\t\t\t\t};\n-\n-\t\t\t\tprintf(\"jumbo frame is enabled\\n\");\n-\t\t\t\tport_conf.rxmode.offloads |=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\t\t\t\tport_conf.txmode.offloads |=\n-\t\t\t\t\t\tDEV_TX_OFFLOAD_MULTI_SEGS;\n-\n-\t\t\t\t/*\n-\t\t\t\t * if no max-pkt-len set, then use the\n-\t\t\t\t * default value RTE_ETHER_MAX_LEN\n-\t\t\t\t */\n-\t\t\t\tif (0 == getopt_long(argc, argvopt, \"\",\n-\t\t\t\t\t\t&lenopts, &option_index)) {\n-\t\t\t\t\tret = parse_max_pkt_len(optarg);\n-\t\t\t\t\tif ((ret < 64) ||\n-\t\t\t\t\t\t(ret > MAX_JUMBO_PKT_LEN)) {\n-\t\t\t\t\t\tprintf(\"invalid packet \"\n-\t\t\t\t\t\t\t\"length\\n\");\n-\t\t\t\t\t\tprint_usage(prgname);\n-\t\t\t\t\t\treturn -1;\n-\t\t\t\t\t}\n-\t\t\t\t\tport_conf.rxmode.max_rx_pkt_len = ret;\n-\t\t\t\t}\n-\t\t\t\tprintf(\"set jumbo frame max packet length \"\n-\t\t\t\t\t\"to %u\\n\",\n-\t\t\t\t\t(unsigned int)\n-\t\t\t\t\tport_conf.rxmode.max_rx_pkt_len);\n-\t\t\t}\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_RULE_IPV4,\n-\t\t\t\t\tsizeof(OPTION_RULE_IPV4)))\n-\t\t\t\tparm_config.rule_ipv4_name = optarg;\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_RULE_IPV6,\n-\t\t\t\t\tsizeof(OPTION_RULE_IPV6))) {\n-\t\t\t\tparm_config.rule_ipv6_name = optarg;\n+\t\tcase OPTION_CONFIG_NUM:\n+\t\t{\n+\t\t\tret = parse_config(optarg);\n+\t\t\tif (ret) {\n+\t\t\t\tprintf(\"invalid config\\n\");\n+\t\t\t\tprint_usage(prgname);\n+\t\t\t\treturn -1;\n \t\t\t}\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name,\n-\t\t\t\t\tOPTION_ALG, sizeof(OPTION_ALG))) {\n-\t\t\t\tparm_config.alg = parse_acl_alg(optarg);\n-\t\t\t\tif (parm_config.alg ==\n-\t\t\t\t\t\tRTE_ACL_CLASSIFY_DEFAULT) {\n-\t\t\t\t\tprintf(\"unknown %s value:\\\"%s\\\"\\n\",\n-\t\t\t\t\t\tOPTION_ALG, optarg);\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase OPTION_NONUMA_NUM:\n+\t\t{\n+\t\t\tprintf(\"numa is disabled\\n\");\n+\t\t\tnuma_on = 0;\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase OPTION_ENBJMO_NUM:\n+\t\t{\n+\t\t\tstruct option lenopts = {\n+\t\t\t\t\"max-pkt-len\",\n+\t\t\t\trequired_argument,\n+\t\t\t\t0,\n+\t\t\t\t0\n+\t\t\t};\n+\n+\t\t\tprintf(\"jumbo frame is enabled\\n\");\n+\t\t\tport_conf.rxmode.offloads |=\n+\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n+\t\t\tport_conf.txmode.offloads |=\n+\t\t\t\t\tDEV_TX_OFFLOAD_MULTI_SEGS;\n+\n+\t\t\t/*\n+\t\t\t * if no max-pkt-len set, then use the\n+\t\t\t * default value RTE_ETHER_MAX_LEN\n+\t\t\t */\n+\t\t\tif (0 == getopt_long(argc, argvopt, \"\",\n+\t\t\t\t\t&lenopts, &option_index)) {\n+\t\t\t\tret = parse_max_pkt_len(optarg);\n+\t\t\t\tif ((ret < 64) ||\n+\t\t\t\t\t(ret > MAX_JUMBO_PKT_LEN)) {\n+\t\t\t\t\tprintf(\"invalid packet \"\n+\t\t\t\t\t\t\"length\\n\");\n \t\t\t\t\tprint_usage(prgname);\n \t\t\t\t\treturn -1;\n \t\t\t\t}\n+\t\t\t\tport_conf.rxmode.max_rx_pkt_len = ret;\n \t\t\t}\n-\n-\t\t\tif (!strncmp(lgopts[option_index].name, OPTION_ETH_DEST,\n-\t\t\t\t\tsizeof(OPTION_ETH_DEST))) {\n-\t\t\t\tconst char *serr = parse_eth_dest(optarg);\n-\t\t\t\tif (serr != NULL) {\n-\t\t\t\t\tprintf(\"invalid %s value:\\\"%s\\\": %s\\n\",\n-\t\t\t\t\t\tOPTION_ETH_DEST, optarg, serr);\n-\t\t\t\t\tprint_usage(prgname);\n-\t\t\t\t\treturn -1;\n-\t\t\t\t}\n+\t\t\tprintf(\"set jumbo frame max packet length \"\n+\t\t\t\t\"to %u\\n\",\n+\t\t\t\t(unsigned int)\n+\t\t\t\tport_conf.rxmode.max_rx_pkt_len);\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase OPTION_RULE_IPV4_NUM:\n+\t\t{\n+\t\t\tparm_config.rule_ipv4_name = optarg;\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase OPTION_RULE_IPV6_NUM:\n+\t\t{\n+\t\t\tparm_config.rule_ipv6_name = optarg;\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase OPTION_ALG_NUM:\n+\t\t{\n+\t\t\tparm_config.alg = parse_acl_alg(optarg);\n+\t\t\tif (parm_config.alg ==\n+\t\t\t\t\tRTE_ACL_CLASSIFY_DEFAULT) {\n+\t\t\t\tprintf(\"unknown %s value:\\\"%s\\\"\\n\",\n+\t\t\t\t\tOPTION_ALG, optarg);\n+\t\t\t\tprint_usage(prgname);\n+\t\t\t\treturn -1;\n \t\t\t}\n-\n \t\t\tbreak;\n-\n+\t\t}\n+\t\tcase OPTION_ETH_DEST_NUM:\n+\t\t{\n+\t\t\tconst char *serr = parse_eth_dest(optarg);\n+\t\t\tif (serr != NULL) {\n+\t\t\t\tprintf(\"invalid %s value:\\\"%s\\\": %s\\n\",\n+\t\t\t\t\tOPTION_ETH_DEST, optarg, serr);\n+\t\t\t\tprint_usage(prgname);\n+\t\t\t\treturn -1;\n+\t\t\t}\n+\t\t\tbreak;\n+\t\t}\n \t\tdefault:\n \t\t\tprint_usage(prgname);\n \t\t\treturn -1;\n",
    "prefixes": [
        "2/8"
    ]
}