From patchwork Tue Apr 9 18:20:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52492 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 670554F9C; Tue, 9 Apr 2019 20:20:17 +0200 (CEST) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id E51E44D3A for ; Tue, 9 Apr 2019 20:20:12 +0200 (CEST) Received: by mail-pg1-f194.google.com with SMTP id y3so9762309pgk.12 for ; Tue, 09 Apr 2019 11:20:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BRYtHkz4WnaC37UZAPEgRzwurQxudvDR1JuZhjommzM=; b=xKg7tRFe0bJ3B5ozrYFaeBxcQ+Ytgq4bSzcalzxeEU7oi9pesajQAFCbi28HPb8HKd AxJbe5LzLfkU51eawfV7wSRpBSplDyH+2br0O8li+c3Y6gv5lXuTxxebOPEpKHzDWi6X BvcXMZHjulBBzeKuZN8t3SmDR6G/1WlLY0kcnmvWXVwYboM86/xnl44LITrrywSvS4GV ESibynFeVqmwGfgncFRRP9Zxp/eLTmHaUQl7pXaJ5aVkO+BqI7kZ7l+Md6ca4+SxIkDh QtYX040cKQG/hDnF7yjY3eJ9QZk7dX9ILcr/h9IxO0RrWqtAD+gN71tctEbY8ISJPYzw GtjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BRYtHkz4WnaC37UZAPEgRzwurQxudvDR1JuZhjommzM=; b=PI+1iCEOryZ3bl3XemGm1FivcJHWmyTyrtJUYw/zPImKL6sUoP1VPQqer5vxqkr7Yu wJz4g8w4blimfR81QxXjQihtEjNsZ9Ce3+0EwKu79DdLSfqPcXfBGwXQYniMmHNnVJVa exRoFg+8kVD87eO4ka/O++zo2bQFiwxAKM+hVWKl8QnG1YzRo9tYW5FBuUBTK30ZeV/5 T+pZCua/cr4Ebm29MKPHlqyC6g07egOgDoDYBmRX5F28NRRCTiFh4erFwz7hAMATdfVo sTJOF7TpJ4/6YngS5Od7UX52lfIo1W1WDlp4ol56U2Z0yhOFTNi7aVWVe6nDOycxM1vF /0jA== X-Gm-Message-State: APjAAAVSbe0P9SuidWn+Bs/5233suJ3HJyzgLuLrqKVc9wA1XPXt+nrS BQ6lt1s5jlksvt8daI8Il+Y2FV17sMayWw== X-Google-Smtp-Source: APXvYqyENW9LNsad1VH70gaxpp4H4rgXXDE+Bv3azigQDbi3fLp0QXIM4woMzsqq+PPRn2A8leMZ1A== X-Received: by 2002:a63:2c55:: with SMTP id s82mr34710794pgs.356.1554834011688; Tue, 09 Apr 2019 11:20:11 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 128sm18538293pgb.47.2019.04.09.11.20.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Apr 2019 11:20:10 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 9 Apr 2019 11:20:04 -0700 Message-Id: <20190409182006.12944-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190409182006.12944-1-stephen@networkplumber.org> References: <20190402203907.28679-1-stephen@networkplumber.org> <20190409182006.12944-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v5 1/3] app/testpmd: add ability to set Tx IP and UDP parameters X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch changes what testpmd uses as IP addresses when run in transmit only mode. The old code was using 192.168.0.1 -> 192.168.0.2 but these addresses are reserved for private Internet by RFC 1918. The new code uses 192.18.0.1 and 192.18.0.2 which are on the subnet reserved for performance testing by RFC 2544. New command line option allows the user to pick any other src/dst address desired. Notice: this changes the default IP address for transmit only. It may cause some user who has hardcoded network addresses to report a regression. Signed-off-by: Stephen Hemminger --- v5 -- rebase to 19.05-rc1 and fix reword commit message app/test-pmd/parameters.c | 49 +++++++++++++++++++++++++++ app/test-pmd/testpmd.h | 6 ++++ app/test-pmd/txonly.c | 20 ++++++----- doc/guides/testpmd_app_ug/run_app.rst | 12 ++++++- 4 files changed, 77 insertions(+), 10 deletions(-) diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 7b6b60905dce..8b523a5c66ed 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -65,6 +66,7 @@ usage(char* progname) #ifdef RTE_LIBRTE_CMDLINE "--eth-peers-configfile= | " "--eth-peer=X,M:M:M:M:M:M | " + "--tx-ip=SRC,DST | --tx-udp=PORT | " #endif "--pkt-filter-mode= |" "--rss-ip | --rss-udp | " @@ -645,6 +647,8 @@ launch_args_parse(int argc, char** argv) { "mlockall", 0, 0, 0 }, { "no-mlockall", 0, 0, 0 }, { "mp-alloc", 1, 0, 0 }, + { "tx-ip", 1, 0, 0 }, + { "tx-udp", 1, 0, 0 }, { "noisy-tx-sw-buffer-size", 1, 0, 0 }, { "noisy-tx-sw-buffer-flushtime", 1, 0, 0 }, { "noisy-lkup-memory", 1, 0, 0 }, @@ -743,6 +747,51 @@ launch_args_parse(int argc, char** argv) nb_peer_eth_addrs++; } #endif + if (!strcmp(lgopts[opt_idx].name, "tx-ip")) { + struct in_addr in; + char *end; + + end = strchr(optarg, ','); + if (end == optarg || !end) + rte_exit(EXIT_FAILURE, + "Invalid tx-ip: %s", optarg); + + *end++ = 0; + if (inet_aton(optarg, &in) == 0) + rte_exit(EXIT_FAILURE, + "Invalid source IP address: %s\n", optarg); + tx_ip_src_addr = rte_be_to_cpu_32(in.s_addr); + + if (inet_aton(end, &in) == 0) + rte_exit(EXIT_FAILURE, + "Invalid destination IP address: %s\n", optarg); + tx_ip_dst_addr = rte_be_to_cpu_32(in.s_addr); + } + if (!strcmp(lgopts[opt_idx].name, "tx-udp")) { + char *end = NULL; + + errno = 0; + n = strtoul(optarg, &end, 10); + if (errno != 0 || end == optarg || n > UINT16_MAX || + !(*end == '\0' || *end == ',')) + rte_exit(EXIT_FAILURE, + "Invalid UDP port: %s\n", optarg); + tx_udp_src_port = n; + if (*end == ',') { + char *dst = end + 1; + + n = strtoul(dst, &end, 10); + if (errno != 0 || end == dst || + n > UINT16_MAX || *end) + rte_exit(EXIT_FAILURE, + "Invalid destination UDP port: %s\n", + dst); + tx_udp_dst_port = n; + } else { + tx_udp_dst_port = n; + } + + } if (!strcmp(lgopts[opt_idx].name, "nb-ports")) { n = atoi(optarg); if (n > 0 && n <= nb_ports) diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index a45988ebc524..18d2c1ef1eaf 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -443,6 +443,12 @@ extern int8_t tx_pthresh; extern int8_t tx_hthresh; extern int8_t tx_wthresh; +extern uint16_t tx_udp_src_port; +extern uint16_t tx_udp_dst_port; + +extern uint32_t tx_ip_src_addr; +extern uint32_t tx_ip_dst_addr; + extern struct fwd_config cur_fwd_config; extern struct fwd_engine *cur_fwd_eng; extern uint32_t retry_enabled; diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c index 66e63788a25e..632d655235f0 100644 --- a/app/test-pmd/txonly.c +++ b/app/test-pmd/txonly.c @@ -40,11 +40,13 @@ #include "testpmd.h" -#define UDP_SRC_PORT 1024 -#define UDP_DST_PORT 1024 +/* use RFC863 Discard Protocol */ +uint16_t tx_udp_src_port = 9; +uint16_t tx_udp_dst_port = 9; -#define IP_SRC_ADDR ((192U << 24) | (168 << 16) | (0 << 8) | 1) -#define IP_DST_ADDR ((192U << 24) | (168 << 16) | (0 << 8) | 2) +/* use RFC5735 / RFC2544 reserved network test addresses */ +uint32_t tx_ip_src_addr = (192U << 24) | (18 << 16) | (0 << 8) | 1; +uint32_t tx_ip_dst_addr = (192U << 24) | (18 << 16) | (0 << 8) | 2; #define IP_DEFTTL 64 /* from RFC 1340. */ #define IP_VERSION 0x40 @@ -105,8 +107,8 @@ setup_pkt_udp_ip_headers(struct ipv4_hdr *ip_hdr, * Initialize UDP header. */ pkt_len = (uint16_t) (pkt_data_len + sizeof(struct udp_hdr)); - udp_hdr->src_port = rte_cpu_to_be_16(UDP_SRC_PORT); - udp_hdr->dst_port = rte_cpu_to_be_16(UDP_DST_PORT); + udp_hdr->src_port = rte_cpu_to_be_16(tx_udp_src_port); + udp_hdr->dst_port = rte_cpu_to_be_16(tx_udp_dst_port); udp_hdr->dgram_len = RTE_CPU_TO_BE_16(pkt_len); udp_hdr->dgram_cksum = 0; /* No UDP checksum. */ @@ -121,8 +123,8 @@ setup_pkt_udp_ip_headers(struct ipv4_hdr *ip_hdr, ip_hdr->next_proto_id = IPPROTO_UDP; ip_hdr->packet_id = 0; ip_hdr->total_length = RTE_CPU_TO_BE_16(pkt_len); - ip_hdr->src_addr = rte_cpu_to_be_32(IP_SRC_ADDR); - ip_hdr->dst_addr = rte_cpu_to_be_32(IP_DST_ADDR); + ip_hdr->src_addr = rte_cpu_to_be_32(tx_ip_src_addr); + ip_hdr->dst_addr = rte_cpu_to_be_32(tx_ip_dst_addr); /* * Compute IP header checksum. @@ -206,7 +208,7 @@ pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, * packet generator for developer's quick performance * regression test. */ - addr = (IP_DST_ADDR | (ip_var++ << 8)) + rte_lcore_id(); + addr = (tx_ip_dst_addr | (ip_var++ << 8)) + rte_lcore_id(); ip_hdr->src_addr = rte_cpu_to_be_32(addr); } copy_buf_to_pkt(&pkt_udp_hdr, sizeof(pkt_udp_hdr), pkt, diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst index b717b8c7b742..a72f94923210 100644 --- a/doc/guides/testpmd_app_ug/run_app.rst +++ b/doc/guides/testpmd_app_ug/run_app.rst @@ -121,12 +121,22 @@ The commandline options are: XX:XX:XX:XX:XX:02 ... - * ``--eth-peer=N,XX:XX:XX:XX:XX:XX`` Set the MAC address ``XX:XX:XX:XX:XX:XX`` of the peer port N, where 0 <= N < ``CONFIG_RTE_MAX_ETHPORTS`` from the configuration file. +* ``--tx-ip=SRC,DST`` + Set the source and destination IP address used when doing transmit only test. + The defaults address values are source 192.18.0.1 and + destination 192.18.0.2. These are special purpose addresses + reserved for benchmakring (RFC 2544). + +* ``--tx-udp=SRC[,DST]`` + Set the source and destination UDP port number for transmit test only test. + The default port is the port 9 which is defined for the discard protocol + (RFC 863). + * ``--pkt-filter-mode=mode`` Set Flow Director mode where mode is either ``none`` (the default), ``signature`` or ``perfect``. From patchwork Tue Apr 9 18:20:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52493 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A524F548B; Tue, 9 Apr 2019 20:20:22 +0200 (CEST) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by dpdk.org (Postfix) with ESMTP id 4F7454F94 for ; Tue, 9 Apr 2019 20:20:15 +0200 (CEST) Received: by mail-pg1-f196.google.com with SMTP id k3so9780974pga.6 for ; Tue, 09 Apr 2019 11:20:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EPVXjhJ083pVs32eU5ZyTvr7yCTBLlBJlHfovYTUCAo=; b=SSSBLoR9OE8Q/R/fg+Z/hF+vnCUmmcMnxJaqkkrYwP7Hu0LhqiwdPVoSKGdpuA1EtY i34LXJ6d82qX3uKNIBNminK7NlIaOsQXhTjT09Gr6u6vuGfYr3SLGY6+6g9H0XDBL4Td h6R7s4qFwqMkE1KKhSnXSSlU1jucJtneFfasTvnXgDCiA0CD2qRDnK90Kq+1w8PUJ7MY TXuINtCHH3MvLJtYyWvGfDA3fcfPN3x3SDzljI1LfvtPEbobNg+SL/ncQx0kwKZqwZde TgrkK6I+3VWscN7U2rxbFln2c5+6cCEFMljbIxcIAdivoDDhcaCZUm+305jeJssSfP+F 1EGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EPVXjhJ083pVs32eU5ZyTvr7yCTBLlBJlHfovYTUCAo=; b=NhTWhdTgRvywkQTkAOZuurhY4loBSvl1ObzSakSNUxpLg3KOfbruXgletIZcshYX5Q RTm03+N/DPdDvtYjRFpnMZKB8owDMsopZ449Cj1O4R1Hxz+tIB7N8kT39qwoMmhrE8L+ g5shx2aAp551UXGpJ311IS1l+zZ9S2mZTN/gVFhn4sOYuxd2V4M/AGHOM2KLS0DbezUu Zxjseku52/gF0JOaId8o/Hph62OREH0nwH3PBOsOiXP+K0Jg96vVYkn3GDMRZsOQcOoK JYCg5LGzSzt9SjhnFJFczYkUBC6fn3Y3ARKCMoQ7hVcSssKDweL4AezkIJRAYA7p1eP7 tUPA== X-Gm-Message-State: APjAAAU8TxFg56Ue4cMhLm1Ft7VzvLj08qtGtyGVM9byy3iWoUuNKjL6 31UiGLaaM7WzfkhUYOYtsFZvs4nb/QQgfw== X-Google-Smtp-Source: APXvYqzW7J66S4DpPpEkxlH8Co5k6yhw7mE/EnzlYBm2QoSFlRGiga/USijxmQgIx9tBQ+/jz7tS6g== X-Received: by 2002:a62:e412:: with SMTP id r18mr38067653pfh.207.1554834013852; Tue, 09 Apr 2019 11:20:13 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 128sm18538293pgb.47.2019.04.09.11.20.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Apr 2019 11:20:12 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 9 Apr 2019 11:20:05 -0700 Message-Id: <20190409182006.12944-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190409182006.12944-1-stephen@networkplumber.org> References: <20190402203907.28679-1-stephen@networkplumber.org> <20190409182006.12944-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v5 2/3] examples/l3fwd: use reserved IPv4/IPv6 addresses X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The l3fwd example should use the IPv4 addresses defined in RFC5735 and the IPv6 addresses defined in RFC5180 for the L3 forwarding example Longest Prefix Match table. Signed-off-by: Stephen Hemminger Acked-by: Bernard Iremonger --- examples/l3fwd/l3fwd_lpm.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index b1dc195ad8cb..3191fc4c2639 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -39,26 +39,28 @@ struct ipv6_l3fwd_lpm_route { uint8_t if_out; }; +/* 192.18.0.0/16 are set aside for RFC2544 benchmarking. */ static struct ipv4_l3fwd_lpm_route ipv4_l3fwd_lpm_route_array[] = { - {IPv4(1, 1, 1, 0), 24, 0}, - {IPv4(2, 1, 1, 0), 24, 1}, - {IPv4(3, 1, 1, 0), 24, 2}, - {IPv4(4, 1, 1, 0), 24, 3}, - {IPv4(5, 1, 1, 0), 24, 4}, - {IPv4(6, 1, 1, 0), 24, 5}, - {IPv4(7, 1, 1, 0), 24, 6}, - {IPv4(8, 1, 1, 0), 24, 7}, + {IPv4(192, 18, 0, 0), 24, 0}, + {IPv4(192, 18, 1, 0), 24, 1}, + {IPv4(192, 18, 2, 0), 24, 2}, + {IPv4(192, 18, 3, 0), 24, 3}, + {IPv4(192, 18, 4, 0), 24, 4}, + {IPv4(192, 18, 5, 0), 24, 5}, + {IPv4(192, 18, 6, 0), 24, 6}, + {IPv4(192, 18, 7, 0), 24, 7}, }; +/* 2001:0200::/48 is IANA reserved range for IPv6 benchmarking (RFC5180) */ static struct ipv6_l3fwd_lpm_route ipv6_l3fwd_lpm_route_array[] = { - {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 0}, - {{2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 1}, - {{3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 2}, - {{4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 3}, - {{5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 4}, - {{6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 5}, - {{7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 6}, - {{8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 48, 7}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 48, 0}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, 48, 1}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0}, 48, 2}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, 48, 3}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0}, 48, 4}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0}, 48, 5}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0}, 48, 6}, + {{32, 1, 2, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0}, 48, 7}, }; #define IPV4_L3FWD_LPM_NUM_ROUTES \ From patchwork Tue Apr 9 18:20:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52494 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8208B5681; Tue, 9 Apr 2019 20:20:26 +0200 (CEST) Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by dpdk.org (Postfix) with ESMTP id D16044D3A for ; Tue, 9 Apr 2019 20:20:16 +0200 (CEST) Received: by mail-pl1-f194.google.com with SMTP id ck15so9905801plb.3 for ; Tue, 09 Apr 2019 11:20:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=NUlezdvG7LyaBvxauJAFaFcST55IrTGsF5T0LfTKylk=; b=JXntYTRTOnNEKaaGXH/jlGARMbGk3fJZmIEWvVu4SduHTexzxq9lKJyyKFTI6KX3PZ LzGCGsFKMyx6Lwr++2TOynREuCckQTpf7+3z4iHWUaOq6mQiRSN7vj97uZUpCbjVbtG+ T6PkAwtofPjd1L8ix7DKaStK/ZJ3UNj+3bWBaZvoKd8N+XkDcDLTOw/aKAe/I2ImlL0y NbkbuTeekqCjvuN55fnMIl8c0esBmr5kzCMj3e7VQnZ8uqDkQB4pZwBN0H9FhaiWItn0 DGDyASSc0DuefllWW0ANY5IRGPWaAQAqNszFHDgRv3HS5sU/e042r2ZxZgNROP+LUlVd 0+1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=NUlezdvG7LyaBvxauJAFaFcST55IrTGsF5T0LfTKylk=; b=McS688CDI6+0dl3OiBAjw9j5bmi9ZSQv7/x1gMHiTD87twYMsUFNdtHEKbQBL1P2Iy 1VShvBx+Cgjq69BjFgr+Voqrho3Rk4UnadgV3p6SAZj8KduJ/7gyq9eqbDGhLNqCJGMk sY/E0omApVVqOTdexqjv+GFs2N1BUeLs1qLZ/i06+OASeQUv64JvFtDHTo1NxvnlbYq2 JB9i2uxZezg4CxrSUXKsHGMJFzS98Kux4RVOAtTTprPqrI7G/5fLPnC0zoQXcdzfQmNi qizmHsSRW2i0bz7F0wgAcqwhmrgF84OEJEqPXjmDfOIZsGpEyaB6x69nIcF0PhLeQ0bO FxyQ== X-Gm-Message-State: APjAAAWrtWo2on0XhEuzAEY/wy+cZLR5U0wRPPxOhqDdPHWwl5pCfFZ7 /Yf1FiUPCznodcxpItLbqbr1VrdE3cvIyg== X-Google-Smtp-Source: APXvYqx89JZ59u+q4MzEuDYDRKf7te5iuQlqC/0a3VHWeBRhy4rEXKJTmIyKU3i7ebIx++/7k5UtdQ== X-Received: by 2002:a17:902:5a45:: with SMTP id f5mr739696plm.23.1554834015765; Tue, 09 Apr 2019 11:20:15 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 128sm18538293pgb.47.2019.04.09.11.20.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Apr 2019 11:20:14 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 9 Apr 2019 11:20:06 -0700 Message-Id: <20190409182006.12944-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190409182006.12944-1-stephen@networkplumber.org> References: <20190402203907.28679-1-stephen@networkplumber.org> <20190409182006.12944-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v5 3/3] examples/l3fwd: format the IP addresses for printing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The IP addresses should be formatted using standard routines rather than outputing in raw hex. Signed-off-by: Stephen Hemminger Acked-by: Bernard Iremonger --- examples/l3fwd/l3fwd_lpm.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index 3191fc4c2639..172a036b2707 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -260,6 +261,7 @@ setup_lpm(const int socketid) unsigned i; int ret; char s[64]; + char abuf[INET6_ADDRSTRLEN]; /* create the LPM table */ config_ipv4.max_rules = IPV4_L3FWD_LPM_MAX_RULES; @@ -275,6 +277,7 @@ setup_lpm(const int socketid) /* populate the LPM table */ for (i = 0; i < IPV4_L3FWD_LPM_NUM_ROUTES; i++) { + struct in_addr in; /* skip unused ports */ if ((1 << ipv4_l3fwd_lpm_route_array[i].if_out & @@ -292,8 +295,9 @@ setup_lpm(const int socketid) i, socketid); } - printf("LPM: Adding route 0x%08x / %d (%d)\n", - (unsigned)ipv4_l3fwd_lpm_route_array[i].ip, + in.s_addr = htonl(ipv4_l3fwd_lpm_route_array[i].ip); + printf("LPM: Adding route %s / %d (%d)\n", + inet_ntop(AF_INET, &in, abuf, sizeof(abuf)), ipv4_l3fwd_lpm_route_array[i].depth, ipv4_l3fwd_lpm_route_array[i].if_out); } @@ -331,9 +335,10 @@ setup_lpm(const int socketid) } printf("LPM: Adding route %s / %d (%d)\n", - "IPV6", - ipv6_l3fwd_lpm_route_array[i].depth, - ipv6_l3fwd_lpm_route_array[i].if_out); + inet_ntop(AF_INET6, ipv6_l3fwd_lpm_route_array[i].ip, + abuf, sizeof(abuf)), + ipv6_l3fwd_lpm_route_array[i].depth, + ipv6_l3fwd_lpm_route_array[i].if_out); } }