diff options
author | Thomas Haller <thaller@redhat.com> | 2016-06-07 00:50:34 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-06-07 00:50:34 +0200 |
commit | b48bb39a9669c9813aee3e23ee7e1f739104a487 (patch) | |
tree | 6474dcc62b52c9f8ecfc4a2f48df7c2c00443f04 | |
parent | 90828da639ccccf8dbde3883acb722f5fcbd2136 (diff) | |
download | NetworkManager-b48bb39a9669c9813aee3e23ee7e1f739104a487.tar.gz |
fixup! dns: add CIDR reverse DNS IPv4 entries to dnsmasqbg/dnsmasq-rdns-bgo767174
-rw-r--r-- | src/nm-core-utils.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index 877d8c4831..61b8863f43 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -3286,8 +3286,9 @@ nm_utils_get_reverse_dns_domains_ip4 (guint32 addr, guint8 plen, GPtrArray *doma guint32 ip, ip2, mask; guchar *p; guint octets; - GString *str; - int i; + guint i; + gsize len0, len; + char *str, *s; g_return_if_fail (domains); g_return_if_fail (plen <= 32); @@ -3301,17 +3302,18 @@ nm_utils_get_reverse_dns_domains_ip4 (guint32 addr, guint8 plen, GPtrArray *doma ip &= mask; ip2 = ip; + len0 = NM_STRLEN ("in-addr.arpa") + (4 * octets) + 1; while ((ip2 & mask) == ip) { addr = htonl (ip2); p = (guchar *) &addr; - str = g_string_new (""); - + len = len0; + str = s = g_malloc (len); for (i = octets; i > 0; i--) - g_string_append_printf (str, "%u.", p[i - 1] & 0xff); + nm_utils_strbuf_append (&s, &len, "%u.", p[i - 1] & 0xff); + nm_utils_strbuf_append_str (&s, &len, "in-addr.arpa"); - g_string_append (str, "in-addr.arpa"); - g_ptr_array_add (domains, g_string_free (str, FALSE)); + g_ptr_array_add (domains, str); ip2 += 1 << ((32 - plen) & ~7); } |