Suggested-by: Ben Pfaff <b...@ovn.org> Signed-off-by: Justin Pettit <jpet...@ovn.org> --- 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; -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev