From patchwork Fri Jul 29 06:26:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Pettit X-Patchwork-Id: 653995 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3s0zKW69KQz9t0G for ; Fri, 29 Jul 2016 16:27:11 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 4B00E114B1; Thu, 28 Jul 2016 23:26:47 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e3.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id C402311469 for ; Thu, 28 Jul 2016 23:26:40 -0700 (PDT) Received: from bar5.cudamail.com (localhost [127.0.0.1]) by mx1e3.cudamail.com (Postfix) with ESMTPS id 59E5B4201CB for ; Fri, 29 Jul 2016 00:26:40 -0600 (MDT) X-ASG-Debug-ID: 1469773599-09eadd7ae838ea60001-byXFYA Received: from mx1-pf1.cudamail.com ([192.168.24.1]) by bar5.cudamail.com with ESMTP id zViM880uEAVTZmex (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Fri, 29 Jul 2016 00:26:39 -0600 (MDT) X-Barracuda-Envelope-From: jpettit@ovn.org X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.1 Received: from unknown (HELO relay5-d.mail.gandi.net) (217.70.183.197) by mx1-pf1.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 29 Jul 2016 06:26:39 -0000 Received-SPF: pass (mx1-pf1.cudamail.com: SPF record at ovn.org designates 217.70.183.197 as permitted sender) X-Barracuda-Apparent-Source-IP: 217.70.183.197 X-Barracuda-RBL-IP: 217.70.183.197 Received: from mfilter45-d.gandi.net (mfilter45-d.gandi.net [217.70.178.176]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id 0A69F41C096 for ; Fri, 29 Jul 2016 08:26:38 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter45-d.gandi.net Received: from relay5-d.mail.gandi.net ([IPv6:::ffff:217.70.183.197]) by mfilter45-d.gandi.net (mfilter45-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id YQZRdltJLMBK for ; Fri, 29 Jul 2016 08:26:36 +0200 (CEST) X-Originating-IP: 108.70.244.32 Received: from raznick.localdomain (unknown [108.70.244.32]) (Authenticated sender: jpettit@ovn.org) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 2A36F41C097 for ; Fri, 29 Jul 2016 08:26:35 +0200 (CEST) X-CudaMail-Envelope-Sender: jpettit@ovn.org From: Justin Pettit To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E1-728000357 X-CudaMail-DTE: 072916 X-CudaMail-Originating-IP: 217.70.183.197 Date: Thu, 28 Jul 2016 23:26:15 -0700 X-ASG-Orig-Subj: [##CM-E1-728000357##][IPv6 v2 05/10] ovn-util: Preallocate address strings. Message-Id: <1469773580-33112-5-git-send-email-jpettit@ovn.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1469773580-33112-1-git-send-email-jpettit@ovn.org> References: <1469773580-33112-1-git-send-email-jpettit@ovn.org> X-Barracuda-Connect: UNKNOWN[192.168.24.1] X-Barracuda-Start-Time: 1469773599 X-Barracuda-Encrypted: ECDHE-RSA-AES256-GCM-SHA384 X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Subject: [ovs-dev] [IPv6 v2 05/10] ovn-util: Preallocate address strings. X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" Suggested-by: Ben Pfaff Signed-off-by: Justin Pettit Acked-by: Ben Pfaff --- ovn/lib/ovn-util.c | 29 ++++++++--------------------- ovn/lib/ovn-util.h | 14 +++++++------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/ovn/lib/ovn-util.c b/ovn/lib/ovn-util.c index de54624..51e3026 100644 --- a/ovn/lib/ovn-util.c +++ b/ovn/lib/ovn-util.c @@ -34,9 +34,10 @@ add_ipv4_netaddr(struct lport_addresses *laddrs, ovs_be32 addr, na->network = addr & na->mask; na->plen = plen; - na->addr_s = xasprintf(IP_FMT, IP_ARGS(addr)); - na->network_s = xasprintf(IP_FMT, IP_ARGS(na->network)); - na->bcast_s = xasprintf(IP_FMT, IP_ARGS(addr | ~na->mask)); + ovs_be32 bcast = addr | ~na->mask; + inet_ntop(AF_INET, &addr, na->addr_s, INET_ADDRSTRLEN); + inet_ntop(AF_INET, &na->network, na->network_s, INET_ADDRSTRLEN); + inet_ntop(AF_INET, &bcast, na->bcast_s, INET_ADDRSTRLEN); } static void @@ -55,11 +56,8 @@ add_ipv6_netaddr(struct lport_addresses *laddrs, struct in6_addr addr, na->plen = plen; in6_addr_solicited_node(&na->sn_addr, &addr); - na->addr_s = xmalloc(INET6_ADDRSTRLEN); inet_ntop(AF_INET6, &addr, na->addr_s, INET6_ADDRSTRLEN); - na->sn_addr_s = xmalloc(INET6_ADDRSTRLEN); inet_ntop(AF_INET6, &na->sn_addr, na->sn_addr_s, INET6_ADDRSTRLEN); - na->network_s = xmalloc(INET6_ADDRSTRLEN); inet_ntop(AF_INET6, &na->network, na->network_s, INET6_ADDRSTRLEN); } @@ -85,7 +83,8 @@ extract_lsp_addresses(char *address, struct lport_addresses *laddrs) return false; } - laddrs->ea_s = xasprintf(ETH_ADDR_FMT, ETH_ADDR_ARGS(laddrs->ea)); + snprintf(laddrs->ea_s, sizeof laddrs->ea_s, ETH_ADDR_FMT, + ETH_ADDR_ARGS(laddrs->ea)); ovs_be32 ip4; struct in6_addr ip6; @@ -138,7 +137,8 @@ extract_lrp_networks(const struct nbrec_logical_router_port *lrp, laddrs->ea = eth_addr_zero; return false; } - laddrs->ea_s = xasprintf(ETH_ADDR_FMT, ETH_ADDR_ARGS(laddrs->ea)); + snprintf(laddrs->ea_s, sizeof laddrs->ea_s, ETH_ADDR_FMT, + ETH_ADDR_ARGS(laddrs->ea)); for (int i = 0; i < lrp->n_networks; i++) { ovs_be32 ip4; @@ -181,20 +181,7 @@ extract_lrp_networks(const struct nbrec_logical_router_port *lrp, void destroy_lport_addresses(struct lport_addresses *laddrs) { - free(laddrs->ea_s); - - for (int i = 0; i < laddrs->n_ipv4_addrs; i++) { - free(laddrs->ipv4_addrs[i].addr_s); - free(laddrs->ipv4_addrs[i].network_s); - free(laddrs->ipv4_addrs[i].bcast_s); - } free(laddrs->ipv4_addrs); - - for (int i = 0; i < laddrs->n_ipv6_addrs; i++) { - free(laddrs->ipv6_addrs[i].addr_s); - free(laddrs->ipv6_addrs[i].sn_addr_s); - free(laddrs->ipv6_addrs[i].network_s); - } free(laddrs->ipv6_addrs); } diff --git a/ovn/lib/ovn-util.h b/ovn/lib/ovn-util.h index e9f3ec2..97d9483 100644 --- a/ovn/lib/ovn-util.h +++ b/ovn/lib/ovn-util.h @@ -26,9 +26,9 @@ struct ipv4_netaddr { ovs_be32 network; /* 192.168.10.0 */ unsigned int plen; /* CIDR Prefix: 24. */ - char *addr_s; /* "192.168.10.123" */ - char *network_s; /* "192.168.10.0" */ - char *bcast_s; /* "192.168.10.255" */ + char addr_s[INET_ADDRSTRLEN + 1]; /* "192.168.10.123" */ + char network_s[INET_ADDRSTRLEN + 1]; /* "192.168.10.0" */ + char bcast_s[INET_ADDRSTRLEN + 1]; /* "192.168.10.255" */ }; struct ipv6_netaddr { @@ -38,13 +38,13 @@ struct ipv6_netaddr { struct in6_addr network; /* fc00:: */ unsigned int plen; /* CIDR Prefix: 64 */ - char *addr_s; /* "fc00::1" */ - char *sn_addr_s; /* "ff02:1:ff00::1" */ - char *network_s; /* "fc00::" */ + char addr_s[INET6_ADDRSTRLEN + 1]; /* "fc00::1" */ + char sn_addr_s[INET6_ADDRSTRLEN + 1]; /* "ff02:1:ff00::1" */ + char network_s[INET6_ADDRSTRLEN + 1]; /* "fc00::" */ }; struct lport_addresses { - char *ea_s; + char ea_s[ETH_ADDR_STRLEN + 1]; struct eth_addr ea; size_t n_ipv4_addrs; struct ipv4_netaddr *ipv4_addrs;