get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 5335,
    "url": "http://patchwork.dpdk.org/api/1.0/patches/5335/?format=api",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/1.0/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"
    },
    "msgid": "<1433917473-21508-3-git-send-email-jingjing.wu@intel.com>",
    "date": "2015-06-10T06:24:31",
    "name": "[dpdk-dev,v4,2/4] ethdev: rename and extend the mirror type",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "adc184a32157a99e32f4b64400e2b396f361371f",
    "submitter": {
        "id": 47,
        "url": "http://patchwork.dpdk.org/api/1.0/people/47/?format=api",
        "name": "Jingjing Wu",
        "email": "jingjing.wu@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1433917473-21508-3-git-send-email-jingjing.wu@intel.com/mbox/",
    "series": [],
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/5335/checks/",
    "tags": {},
    "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 7238A5A9B;\n\tWed, 10 Jun 2015 08:25:10 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 81A945A87\n\tfor <dev@dpdk.org>; Wed, 10 Jun 2015 08:25:07 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby orsmga101.jf.intel.com with ESMTP; 09 Jun 2015 23:25:07 -0700",
            "from shvmail01.sh.intel.com ([10.239.29.42])\n\tby FMSMGA003.fm.intel.com with ESMTP; 09 Jun 2015 23:25:06 -0700",
            "from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com\n\t[10.239.29.89])\n\tby shvmail01.sh.intel.com with ESMTP id t5A6P3I3003875;\n\tWed, 10 Jun 2015 14:25:03 +0800",
            "from shecgisg004.sh.intel.com (localhost [127.0.0.1])\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP\n\tid t5A6P0IL021559; Wed, 10 Jun 2015 14:25:02 +0800",
            "(from wujingji@localhost)\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id t5A6P0u8021555; \n\tWed, 10 Jun 2015 14:25:00 +0800"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.13,586,1427785200\"; d=\"scan'208\";a=\"505944560\"",
        "From": "Jingjing Wu <jingjing.wu@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Wed, 10 Jun 2015 14:24:31 +0800",
        "Message-Id": "<1433917473-21508-3-git-send-email-jingjing.wu@intel.com>",
        "X-Mailer": "git-send-email 1.7.4.1",
        "In-Reply-To": "<1433917473-21508-1-git-send-email-jingjing.wu@intel.com>",
        "References": "<1433492166-30758-1-git-send-email-jingjing.wu@intel.com>\n\t<1433917473-21508-1-git-send-email-jingjing.wu@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v4 2/4] ethdev: rename and extend the mirror type",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <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": "This path renames the mirror type in rte_eth_mirror_conf and macros,\nand rework the mirror set in ixgbe dirvers by using new definition.\nIt also fixes some coding style.\n\nSigned-off-by: Jingjing Wu <jingjing.wu@intel.com>\n---\n app/test-pmd/cmdline.c           | 42 ++++++++++++++++++---------------\n drivers/net/ixgbe/ixgbe_ethdev.c | 51 ++++++++++++++++++++++++++--------------\n lib/librte_ether/rte_ethdev.c    | 14 ++++++++---\n lib/librte_ether/rte_ethdev.h    | 11 +++++----\n 4 files changed, 73 insertions(+), 45 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\nindex d693bde..6d4474b 100644\n--- a/app/test-pmd/cmdline.c\n+++ b/app/test-pmd/cmdline.c\n@@ -412,7 +412,7 @@ static void cmd_help_long_parsed(void *parsed_result,\n \t\t\t\"    Set rate limit for queues in VF of a port\\n\\n\"\n \n \t\t\t\"set port (port_id) mirror-rule (rule_id)\"\n-\t\t\t\"(pool-mirror|vlan-mirror)\\n\"\n+\t\t\t\" (pool-mirror-up|pool-mirror-down|vlan-mirror)\"\n \t\t\t\" (poolmask|vlanid[,vlanid]*) dst-pool (pool_id) (on|off)\\n\"\n \t\t\t\"   Set pool or vlan type mirror rule on a port.\\n\"\n \t\t\t\"   e.g., 'set port 0 mirror-rule 0 vlan-mirror 0,1\"\n@@ -6583,7 +6583,8 @@ cmdline_parse_token_num_t cmd_mirror_mask_ruleid =\n \t\t\t\trule_id, UINT8);\n cmdline_parse_token_string_t cmd_mirror_mask_what =\n \tTOKEN_STRING_INITIALIZER(struct cmd_set_mirror_mask_result,\n-\t\t\t\twhat, \"pool-mirror#vlan-mirror\");\n+\t\t\t\twhat, \"pool-mirror-up#pool-mirror-down\"\n+\t\t\t\t      \"#vlan-mirror\");\n cmdline_parse_token_string_t cmd_mirror_mask_value =\n \tTOKEN_STRING_INITIALIZER(struct cmd_set_mirror_mask_result,\n \t\t\t\tvalue, NULL);\n@@ -6612,13 +6613,16 @@ cmd_set_mirror_mask_parsed(void *parsed_result,\n \n \tmr_conf.dst_pool = res->dstpool_id;\n \n-\tif (!strcmp(res->what, \"pool-mirror\")) {\n-\t\tmr_conf.pool_mask = strtoull(res->value,NULL,16);\n-\t\tmr_conf.rule_type_mask = ETH_VMDQ_POOL_MIRROR;\n-\t} else if(!strcmp(res->what, \"vlan-mirror\")) {\n-\t\tmr_conf.rule_type_mask = ETH_VMDQ_VLAN_MIRROR;\n-\t\tnb_item = parse_item_list(res->value, \"core\",\n-\t\t\t\t\tETH_MIRROR_MAX_VLANS, vlan_list, 1);\n+\tif (!strcmp(res->what, \"pool-mirror-up\")) {\n+\t\tmr_conf.pool_mask = strtoull(res->value, NULL, 16);\n+\t\tmr_conf.rule_type = ETH_MIRROR_VIRTUAL_POOL_UP;\n+\t} else if (!strcmp(res->what, \"pool-mirror-down\")) {\n+\t\tmr_conf.pool_mask = strtoull(res->value, NULL, 16);\n+\t\tmr_conf.rule_type = ETH_MIRROR_VIRTUAL_POOL_DOWN;\n+\t} else if (!strcmp(res->what, \"vlan-mirror\")) {\n+\t\tmr_conf.rule_type = ETH_MIRROR_VLAN;\n+\t\tnb_item = parse_item_list(res->value, \"vlan\",\n+\t\t\t\tETH_MIRROR_MAX_VLANS, vlan_list, 1);\n \t\tif (nb_item <= 0)\n \t\t\treturn;\n \n@@ -6633,21 +6637,21 @@ cmd_set_mirror_mask_parsed(void *parsed_result,\n \t\t}\n \t}\n \n-\tif(!strcmp(res->on, \"on\"))\n+\tif (!strcmp(res->on, \"on\"))\n \t\tret = rte_eth_mirror_rule_set(res->port_id, &mr_conf,\n \t\t\t\t\t\tres->rule_id, 1);\n \telse\n \t\tret = rte_eth_mirror_rule_set(res->port_id, &mr_conf,\n \t\t\t\t\t\tres->rule_id, 0);\n-\tif(ret < 0)\n+\tif (ret < 0)\n \t\tprintf(\"mirror rule add error: (%s)\\n\", strerror(-ret));\n }\n \n cmdline_parse_inst_t cmd_set_mirror_mask = {\n \t\t.f = cmd_set_mirror_mask_parsed,\n \t\t.data = NULL,\n-\t\t.help_str = \"set port X mirror-rule Y pool-mirror|vlan-mirror \"\n-\t\t\t\t\"pool_mask|vlan_id[,vlan_id]* dst-pool Z on|off\",\n+\t\t.help_str = \"set port X mirror-rule Y pool-mirror-up|pool-mirror-down|vlan-mirror\"\n+\t\t\t    \" pool_mask|vlan_id[,vlan_id]* dst-pool Z on|off\",\n \t\t.tokens = {\n \t\t\t(void *)&cmd_mirror_mask_set,\n \t\t\t(void *)&cmd_mirror_mask_port,\n@@ -6714,14 +6718,14 @@ cmd_set_mirror_link_parsed(void *parsed_result,\n \tstruct rte_eth_mirror_conf mr_conf;\n \n \tmemset(&mr_conf, 0, sizeof(struct rte_eth_mirror_conf));\n-\tif(!strcmp(res->what, \"uplink-mirror\")) {\n-\t\tmr_conf.rule_type_mask = ETH_VMDQ_UPLINK_MIRROR;\n-\t}else if(!strcmp(res->what, \"downlink-mirror\"))\n-\t\tmr_conf.rule_type_mask = ETH_VMDQ_DOWNLIN_MIRROR;\n+\tif (!strcmp(res->what, \"uplink-mirror\"))\n+\t\tmr_conf.rule_type = ETH_MIRROR_UPLINK_PORT;\n+\telse\n+\t\tmr_conf.rule_type = ETH_MIRROR_DOWNLINK_PORT;\n \n \tmr_conf.dst_pool = res->dstpool_id;\n \n-\tif(!strcmp(res->on, \"on\"))\n+\tif (!strcmp(res->on, \"on\"))\n \t\tret = rte_eth_mirror_rule_set(res->port_id, &mr_conf,\n \t\t\t\t\t\tres->rule_id, 1);\n \telse\n@@ -6729,7 +6733,7 @@ cmd_set_mirror_link_parsed(void *parsed_result,\n \t\t\t\t\t\tres->rule_id, 0);\n \n \t/* check the return value and print it if is < 0 */\n-\tif(ret < 0)\n+\tif (ret < 0)\n \t\tprintf(\"mirror rule add error: (%s)\\n\", strerror(-ret));\n \n }\ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex 9e767fa..3573493 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -3386,6 +3386,14 @@ ixgbe_set_pool_vlan_filter(struct rte_eth_dev *dev, uint16_t vlan,\n \treturn ret;\n }\n \n+#define IXGBE_MRCTL_VPME  0x01 /* Virtual Pool Mirroring. */\n+#define IXGBE_MRCTL_UPME  0x02 /* Uplink Port Mirroring. */\n+#define IXGBE_MRCTL_DPME  0x04 /* Downlink Port Mirroring. */\n+#define IXGBE_MRCTL_VLME  0x08 /* VLAN Mirroring. */\n+#define IXGBE_INVALID_MIRROR_TYPE(mirror_type) \\\n+\t((mirror_type) & ~(uint8_t)(ETH_MIRROR_VIRTUAL_POOL_UP | \\\n+\tETH_MIRROR_UPLINK_PORT | ETH_MIRROR_DOWNLINK_PORT | ETH_MIRROR_VLAN))\n+\n static int\n ixgbe_mirror_rule_set(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_mirror_conf *mirror_conf,\n@@ -3410,6 +3418,7 @@ ixgbe_mirror_rule_set(struct rte_eth_dev *dev,\n \t\t\t(IXGBE_DEV_PRIVATE_TO_PFDATA(dev->data->dev_private));\n \tstruct ixgbe_hw *hw =\n \t\tIXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tuint8_t mirror_type = 0;\n \n \tif (ixgbe_vmdq_mode_check(hw) < 0)\n \t\treturn -ENOTSUP;\n@@ -3417,28 +3426,29 @@ ixgbe_mirror_rule_set(struct rte_eth_dev *dev,\n \tif (rule_id >= IXGBE_MAX_MIRROR_RULES)\n \t\treturn -EINVAL;\n \n-\t/* Check if vlan mask is valid */\n-\tif ((mirror_conf->rule_type_mask & ETH_VMDQ_VLAN_MIRROR) && (on)) {\n-\t\tif (mirror_conf->vlan.vlan_mask == 0)\n-\t\t\treturn (-EINVAL);\n+\tif (IXGBE_INVALID_MIRROR_TYPE(mirror_conf->rule_type)) {\n+\t\tPMD_DRV_LOG(ERR, \"unsupported mirror type 0x%x.\",\n+\t\t\tmirror_conf->rule_type);\n+\t\treturn -EINVAL;\n \t}\n \n-\t/* Check if vlan id is valid and find conresponding VLAN ID index in VLVF */\n-\tif (mirror_conf->rule_type_mask & ETH_VMDQ_VLAN_MIRROR) {\n+\tif (mirror_conf->rule_type & ETH_MIRROR_VLAN) {\n+\t\tmirror_type |= IXGBE_MRCTL_VLME;\n+\t\t/* Check if vlan id is valid and find conresponding VLAN ID index in VLVF */\n \t\tfor (i = 0;i < IXGBE_VLVF_ENTRIES; i++) {\n \t\t\tif (mirror_conf->vlan.vlan_mask & (1ULL << i)) {\n \t\t\t\t/* search vlan id related pool vlan filter index */\n \t\t\t\treg_index = ixgbe_find_vlvf_slot(hw,\n \t\t\t\t\t\tmirror_conf->vlan.vlan_id[i]);\n \t\t\t\tif(reg_index < 0)\n-\t\t\t\t\treturn (-EINVAL);\n+\t\t\t\t\treturn -EINVAL;\n \t\t\t\tvlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(reg_index));\n \t\t\t\tif ((vlvf & IXGBE_VLVF_VIEN) &&\n-\t\t\t\t\t((vlvf & IXGBE_VLVF_VLANID_MASK)\n-\t\t\t\t\t\t== mirror_conf->vlan.vlan_id[i]))\n+\t\t\t\t    ((vlvf & IXGBE_VLVF_VLANID_MASK) ==\n+\t\t\t\t      mirror_conf->vlan.vlan_id[i]))\n \t\t\t\t\tvlan_mask |= (1ULL << reg_index);\n \t\t\t\telse\n-\t\t\t\t\treturn (-EINVAL);\n+\t\t\t\t\treturn -EINVAL;\n \t\t\t}\n \t\t}\n \n@@ -3466,7 +3476,8 @@ ixgbe_mirror_rule_set(struct rte_eth_dev *dev,\n \t * if enable pool mirror, write related pool mask register,if disable\n \t * pool mirror, clear PFMRVM register\n \t */\n-\tif (mirror_conf->rule_type_mask & ETH_VMDQ_POOL_MIRROR) {\n+\tif (mirror_conf->rule_type & ETH_MIRROR_VIRTUAL_POOL_UP) {\n+\t\tmirror_type |= IXGBE_MRCTL_VPME;\n \t\tif (on) {\n \t\t\tmp_lsb = mirror_conf->pool_mask & 0xFFFFFFFF;\n \t\t\tmp_msb = mirror_conf->pool_mask >> pool_mask_offset;\n@@ -3479,31 +3490,35 @@ ixgbe_mirror_rule_set(struct rte_eth_dev *dev,\n \t\t\tmr_info->mr_conf[rule_id].pool_mask = 0;\n \t\t}\n \t}\n+\tif (mirror_conf->rule_type & ETH_MIRROR_UPLINK_PORT)\n+\t\tmirror_type |= IXGBE_MRCTL_UPME;\n+\tif (mirror_conf->rule_type & ETH_MIRROR_DOWNLINK_PORT)\n+\t\tmirror_type |= IXGBE_MRCTL_DPME;\n \n \t/* read  mirror control register and recalculate it */\n-\tmr_ctl = IXGBE_READ_REG(hw,IXGBE_MRCTL(rule_id));\n+\tmr_ctl = IXGBE_READ_REG(hw, IXGBE_MRCTL(rule_id));\n \n \tif (on) {\n-\t\tmr_ctl |= mirror_conf->rule_type_mask;\n+\t\tmr_ctl |= mirror_type;\n \t\tmr_ctl &= mirror_rule_mask;\n \t\tmr_ctl |= mirror_conf->dst_pool << dst_pool_offset;\n \t} else\n-\t\tmr_ctl &= ~(mirror_conf->rule_type_mask & mirror_rule_mask);\n+\t\tmr_ctl &= ~(mirror_conf->rule_type & mirror_rule_mask);\n \n-\tmr_info->mr_conf[rule_id].rule_type_mask = (uint8_t)(mr_ctl & mirror_rule_mask);\n+\tmr_info->mr_conf[rule_id].rule_type = mirror_conf->rule_type;\n \tmr_info->mr_conf[rule_id].dst_pool = mirror_conf->dst_pool;\n \n \t/* write mirrror control  register */\n \tIXGBE_WRITE_REG(hw, IXGBE_MRCTL(rule_id), mr_ctl);\n \n-        /* write pool mirrror control  register */\n-\tif (mirror_conf->rule_type_mask & ETH_VMDQ_POOL_MIRROR) {\n+\t/* write pool mirrror control  register */\n+\tif (mirror_conf->rule_type == ETH_MIRROR_VIRTUAL_POOL_UP) {\n \t\tIXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id), mp_lsb);\n \t\tIXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id + rule_mr_offset),\n \t\t\t\tmp_msb);\n \t}\n \t/* write VLAN mirrror control  register */\n-\tif (mirror_conf->rule_type_mask & ETH_VMDQ_VLAN_MIRROR) {\n+\tif (mirror_conf->rule_type == ETH_MIRROR_VLAN) {\n \t\tIXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id), mv_lsb);\n \t\tIXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id + rule_mr_offset),\n \t\t\t\tmv_msb);\ndiff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex 43c7295..34f1900 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -3044,7 +3044,7 @@ rte_eth_mirror_rule_set(uint8_t port_id,\n \t\treturn -ENODEV;\n \t}\n \n-\tif (mirror_conf->rule_type_mask == 0) {\n+\tif (mirror_conf->rule_type == 0) {\n \t\tPMD_DEBUG_TRACE(\"mirror rule type can not be 0.\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -3055,12 +3055,20 @@ rte_eth_mirror_rule_set(uint8_t port_id,\n \t\treturn -EINVAL;\n \t}\n \n-\tif ((mirror_conf->rule_type_mask & ETH_VMDQ_POOL_MIRROR) &&\n-\t\t(mirror_conf->pool_mask == 0)) {\n+\tif ((mirror_conf->rule_type & (ETH_MIRROR_VIRTUAL_POOL_UP |\n+\t     ETH_MIRROR_VIRTUAL_POOL_DOWN)) &&\n+\t    (mirror_conf->pool_mask == 0)) {\n \t\tPMD_DEBUG_TRACE(\"Invalid mirror pool, pool mask can not\"\n \t\t\t\t\"be 0.\\n\");\n \t\treturn -EINVAL;\n \t}\n+\t/* Check if vlan mask is valid */\n+\tif ((mirror_conf->rule_type & ETH_MIRROR_VLAN) &&\n+\t    mirror_conf->vlan.vlan_mask == 0) {\n+\t\tPMD_DEBUG_TRACE(\"Invalid vlan mask, vlan mask can not\"\n+\t\t\t\t\"be 0.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n \n \tdev = &rte_eth_devices[port_id];\n \tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->mirror_rule_set, -ENOTSUP);\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex ae22fea..f0496f0 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -470,10 +470,11 @@ struct rte_eth_rss_conf {\n /** Maximum nb. of vlan per mirror rule */\n #define ETH_MIRROR_MAX_VLANS       64\n \n-#define ETH_VMDQ_POOL_MIRROR    0x0001 /**< Virtual Pool Mirroring. */\n-#define ETH_VMDQ_UPLINK_MIRROR  0x0002 /**< Uplink Port Mirroring. */\n-#define ETH_VMDQ_DOWNLIN_MIRROR 0x0004 /**< Downlink Port Mirroring. */\n-#define ETH_VMDQ_VLAN_MIRROR    0x0008 /**< VLAN Mirroring. */\n+#define ETH_MIRROR_VIRTUAL_POOL_UP     0x01  /**< Virtual Pool uplink Mirroring. */\n+#define ETH_MIRROR_UPLINK_PORT         0x02  /**< Uplink Port Mirroring. */\n+#define ETH_MIRROR_DOWNLINK_PORT       0x04  /**< Downlink Port Mirroring. */\n+#define ETH_MIRROR_VLAN                0x08  /**< VLAN Mirroring. */\n+#define ETH_MIRROR_VIRTUAL_POOL_DOWN   0x10  /**< Virtual Pool downlink Mirroring. */\n \n /**\n  * A structure used to configure VLAN traffic mirror of an Ethernet port.\n@@ -488,7 +489,7 @@ struct rte_eth_vlan_mirror {\n  * A structure used to configure traffic mirror of an Ethernet port.\n  */\n struct rte_eth_mirror_conf {\n-\tuint8_t rule_type_mask; /**< Mirroring rule type mask we want to set */\n+\tuint8_t rule_type; /**< Mirroring rule type */\n \tuint8_t dst_pool;  /**< Destination pool for this mirror rule. */\n \tuint64_t pool_mask; /**< Bitmap of pool for pool mirroring */\n \t/** VLAN ID setting for VLAN mirroring. */\n",
    "prefixes": [
        "dpdk-dev",
        "v4",
        "2/4"
    ]
}