From patchwork Wed Jul 13 16:29:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pattan, Reshma" X-Patchwork-Id: 14822 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 57F3347CD; Wed, 13 Jul 2016 18:29:54 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 801B7475E for ; Wed, 13 Jul 2016 18:29:53 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 13 Jul 2016 09:29:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.28,358,1464678000"; d="scan'208"; a="1016177903" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 13 Jul 2016 09:29:29 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u6DGTSfI010342; Wed, 13 Jul 2016 17:29:28 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id u6DGTSBZ016162; Wed, 13 Jul 2016 17:29:28 +0100 Received: (from reshmapa@localhost) by sivswdev02.ir.intel.com with id u6DGTSsK016158; Wed, 13 Jul 2016 17:29:28 +0100 From: Reshma Pattan To: dev@dpdk.org Cc: Reshma Pattan Date: Wed, 13 Jul 2016 17:29:09 +0100 Message-Id: <1468427350-16102-3-git-send-email-reshma.pattan@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1468427350-16102-1-git-send-email-reshma.pattan@intel.com> References: <1468427350-16102-1-git-send-email-reshma.pattan@intel.com> Subject: [dpdk-dev] [PATCH 2/3] app/pdump: add new command line options for socket paths X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Since users of the pdump library and tool can chose to have their own server and client paths, it is must for the pdump tool to use the same server socket path that was used by primary application while initializing packet capture framework by rte_pdump_init() or rte_pdump_set_socket_dir() APIs. To pass the socket path info to pdump tool a new optional command line options "server-socket-path" and "client-socket-path" are added. "client-socket-path" is also added, if the users want to have client sockets in their own defined paths. Updated pdump tool guide with the new changes. Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing") Signed-off-by: Reshma Pattan --- app/pdump/main.c | 57 ++++++++++++++++++++++++++++++++------ doc/guides/sample_app_ug/pdump.rst | 31 +++++++++++++++------ 2 files changed, 71 insertions(+), 17 deletions(-) diff --git a/app/pdump/main.c b/app/pdump/main.c index 2087c15..e0ff8be 100644 --- a/app/pdump/main.c +++ b/app/pdump/main.c @@ -55,6 +55,7 @@ #include #include +#define CMD_LINE_OPT_PDUMP "pdump" #define PDUMP_PORT_ARG "port" #define PDUMP_PCI_ARG "device_id" #define PDUMP_QUEUE_ARG "queue" @@ -64,6 +65,8 @@ #define PDUMP_RING_SIZE_ARG "ring-size" #define PDUMP_MSIZE_ARG "mbuf-size" #define PDUMP_NUM_MBUFS_ARG "total-num-mbufs" +#define CMD_LINE_OPT_SER_SOCK_PATH "server-socket-path" +#define CMD_LINE_OPT_CLI_SOCK_PATH "client-socket-path" #define VDEV_PCAP "eth_pcap_%s_%d,tx_pcap=%s" #define VDEV_IFACE "eth_pcap_%s_%d,tx_iface=%s" @@ -166,6 +169,8 @@ struct parse_val { int num_tuples; static struct rte_eth_conf port_conf_default; volatile uint8_t quit_signal; +static char server_socket_path[PATH_MAX]; +static char client_socket_path[PATH_MAX]; /**< display usage */ static void @@ -178,8 +183,11 @@ pdump_usage(const char *prgname) " tx-dev=," "[ring-size=default:16384]," "[mbuf-size=default:2176]," - "[total-num-mbufs=default:65535]" - "'\n", + "[total-num-mbufs=default:65535]'\n" + "[--server-socket-path=" + "default:/var/run/.dpdk/ (or) ~/.dpdk/]\n" + "[--client-socket-path=" + "default:/var/run/.dpdk/ (or) ~/.dpdk/]\n", prgname); } @@ -226,9 +234,6 @@ parse_rxtxdev(const char *key, const char *value, void *extra_args) /* identify the tx stream type for pcap vdev */ if (if_nametoindex(pt->tx_dev)) pt->tx_vdev_stream_type = IFACE; - } else { - printf("invalid dev type %s, must be rx or tx\n", value); - return -1; } return 0; @@ -407,6 +412,8 @@ launch_args_parse(int argc, char **argv, char *prgname) int option_index; static struct option long_option[] = { {"pdump", 1, 0, 0}, + {"server-socket-path", 1, 0, 0}, + {"client-socket-path", 1, 0, 0}, {NULL, 0, 0, 0} }; @@ -418,14 +425,32 @@ launch_args_parse(int argc, char **argv, char *prgname) long_option, &option_index)) != EOF) { switch (opt) { case 0: - if (!strncmp(long_option[option_index].name, "pdump", - MAX_LONG_OPT_SZ)) { + if (!strncmp(long_option[option_index].name, + CMD_LINE_OPT_PDUMP, + sizeof(CMD_LINE_OPT_PDUMP))) { ret = parse_pdump(optarg); if (ret) { pdump_usage(prgname); return -1; } } + + if (!strncmp(long_option[option_index].name, + CMD_LINE_OPT_SER_SOCK_PATH, + sizeof(CMD_LINE_OPT_SER_SOCK_PATH))) { + snprintf(server_socket_path, + sizeof(server_socket_path), "%s", + optarg); + } + + if (!strncmp(long_option[option_index].name, + CMD_LINE_OPT_CLI_SOCK_PATH, + sizeof(CMD_LINE_OPT_CLI_SOCK_PATH))) { + snprintf(client_socket_path, + sizeof(client_socket_path), "%s", + optarg); + } + break; default: pdump_usage(prgname); @@ -719,6 +744,22 @@ enable_pdump(void) struct pdump_tuples *pt; int ret = 0, ret1 = 0; + if (server_socket_path[0] != 0) + ret = rte_pdump_set_socket_dir(server_socket_path, + RTE_PDUMP_SOCKET_SERVER); + if (ret == 0 && client_socket_path[0] != 0) { + ret = rte_pdump_set_socket_dir(client_socket_path, + RTE_PDUMP_SOCKET_CLIENT); + } + if (ret < 0) { + cleanup_pdump_resources(); + rte_exit(EXIT_FAILURE, + "failed to set socket paths of server:%s, " + "client:%s\n", + server_socket_path, + client_socket_path); + } + for (i = 0; i < num_tuples; i++) { pt = &pdump_t[i]; if (pt->dir == RTE_PDUMP_FLAG_RXTX) { @@ -729,7 +770,7 @@ enable_pdump(void) RTE_PDUMP_FLAG_RX, pt->rx_ring, pt->mp, NULL); - ret = rte_pdump_enable_by_deviceid( + ret1 = rte_pdump_enable_by_deviceid( pt->device_id, pt->queue, RTE_PDUMP_FLAG_TX, diff --git a/doc/guides/sample_app_ug/pdump.rst b/doc/guides/sample_app_ug/pdump.rst index 96c8709..054cfc2 100644 --- a/doc/guides/sample_app_ug/pdump.rst +++ b/doc/guides/sample_app_ug/pdump.rst @@ -33,14 +33,14 @@ dpdk_pdump Application ====================== -The ``dpdk_pdump`` application is a Data Plane Development Kit (DPDK) application that runs as a DPDK secondary process and -is capable of enabling packet capture on dpdk ports. +The ``dpdk_pdump`` application is a Data Plane Development Kit (DPDK) application that runs as a DPDK secondary +process and is capable of enabling packet capture on dpdk ports. Running the Application ----------------------- -The application has a ``--pdump`` command line option with various sub arguments: +The application has a number of command line options: .. code-block:: console @@ -52,18 +52,31 @@ The application has a ``--pdump`` command line option with various sub arguments [ring-size=], [mbuf-size=], [total-num-mbufs=]' + [--server-socket-path=] + [--client-socket-path=] -Note: +The ``--pdump`` command line option is mandatory and it takes various sub arguments which are described in +below section. -* Parameters inside the parentheses represents mandatory parameters. + .. Note:: + + * Parameters inside the parentheses represents mandatory parameters. + + * Parameters inside the square brackets represents optional parameters. + + * Multiple instances of ``--pdump`` can be passed to capture packets on different port and queue combinations. -* Parameters inside the square brackets represents optional parameters. +The ``--server-socket-path`` command line option is optional. This represents the server socket directory. +If no value is passed default values are used i.e. ``/var/run/.dpdk/`` for root users and ``~/.dpdk/`` +for non root users. -Multiple instances of ``--pdump`` can be passed to capture packets on different port and queue combinations. +The ``--client-socket-path`` command line option is optional. This represents the client socket directory. +If no value is passed default values are used i.e. ``/var/run/.dpdk/`` for root users and ``~/.dpdk/`` +for non root users. -Parameters -~~~~~~~~~~ +The ``--pdump`` parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~ ``port``: Port id of the eth device on which packets should be captured.