diff options
author | Dan Williams <dcbw@redhat.com> | 2014-07-17 10:52:22 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-07-22 14:39:20 -0500 |
commit | 2c982d877e6394efa7fce3dde93e209d01ec8566 (patch) | |
tree | 8f584672655e3d39af337580ff9ac36dfbe3b6e2 | |
parent | a1c86a9a27a296ce5f2722d320fe383a486484c4 (diff) |
dhcp: make DUID-to-string function available to subclasses
-rw-r--r-- | src/dhcp-manager/nm-dhcp-client.c | 33 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-utils.c | 17 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-utils.h | 2 |
3 files changed, 27 insertions, 25 deletions
diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index b6408722ee..e2f93eb3aa 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -426,38 +426,21 @@ generate_duid_from_machine_id (void) return duid; } -static char * -escape_duid (const GByteArray *duid) -{ - guint32 i = 0; - GString *s; - - g_return_val_if_fail (duid != NULL, NULL); - - s = g_string_sized_new (40); - while (i < duid->len) { - if (s->len) - g_string_append_c (s, ':'); - g_string_append_printf (s, "%02x", duid->data[i++]); - } - return g_string_free (s, FALSE); -} - static GByteArray * get_duid (NMDHCPClient *self) { static GByteArray *duid = NULL; GByteArray *copy = NULL; - char *escaped; + char *str; if (G_UNLIKELY (duid == NULL)) { duid = generate_duid_from_machine_id (); g_assert (duid); if (nm_logging_enabled (LOGL_DEBUG, LOGD_DHCP6)) { - escaped = escape_duid (duid); - nm_log_dbg (LOGD_DHCP6, "Generated DUID %s", escaped); - g_free (escaped); + str = nm_dhcp_utils_duid_to_string (duid); + nm_log_dbg (LOGD_DHCP6, "Generated DUID %s", str); + g_free (str); } } @@ -477,7 +460,7 @@ nm_dhcp_client_start_ip6 (NMDHCPClient *self, NMSettingIP6ConfigPrivacy privacy) { NMDHCPClientPrivate *priv; - char *escaped; + char *str; g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), FALSE); @@ -493,9 +476,9 @@ nm_dhcp_client_start_ip6 (NMDHCPClient *self, priv->duid = NM_DHCP_CLIENT_GET_CLASS (self)->get_duid (self); if (nm_logging_enabled (LOGL_DEBUG, LOGD_DHCP)) { - escaped = escape_duid (priv->duid); - nm_log_dbg (LOGD_DHCP, "(%s): DHCPv6 DUID is '%s'", priv->iface, escaped); - g_free (escaped); + str = nm_dhcp_utils_duid_to_string (priv->duid); + nm_log_dbg (LOGD_DHCP, "(%s): DHCPv6 DUID is '%s'", priv->iface, str); + g_free (str); } priv->info_only = info_only; diff --git a/src/dhcp-manager/nm-dhcp-utils.c b/src/dhcp-manager/nm-dhcp-utils.c index 60f0ab9030..48330e5113 100644 --- a/src/dhcp-manager/nm-dhcp-utils.c +++ b/src/dhcp-manager/nm-dhcp-utils.c @@ -666,3 +666,20 @@ error: return NULL; } +char * +nm_dhcp_utils_duid_to_string (const GByteArray *duid) +{ + guint32 i = 0; + GString *s; + + g_return_val_if_fail (duid != NULL, NULL); + + s = g_string_sized_new (MIN (duid->len * 3, 50)); + while (i < duid->len) { + if (s->len) + g_string_append_c (s, ':'); + g_string_append_printf (s, "%02x", duid->data[i++]); + } + return g_string_free (s, FALSE); +} + diff --git a/src/dhcp-manager/nm-dhcp-utils.h b/src/dhcp-manager/nm-dhcp-utils.h index adcf72a134..be6b28106a 100644 --- a/src/dhcp-manager/nm-dhcp-utils.h +++ b/src/dhcp-manager/nm-dhcp-utils.h @@ -33,5 +33,7 @@ NMIP6Config *nm_dhcp_utils_ip6_config_from_options (const char *iface, guint priority, gboolean info_only); +char * nm_dhcp_utils_duid_to_string (const GByteArray *duid); + #endif /* NM_DHCP_UTILS_H */ |