summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-07-17 10:52:22 -0500
committerDan Williams <dcbw@redhat.com>2014-07-22 14:39:20 -0500
commit2c982d877e6394efa7fce3dde93e209d01ec8566 (patch)
tree8f584672655e3d39af337580ff9ac36dfbe3b6e2
parenta1c86a9a27a296ce5f2722d320fe383a486484c4 (diff)
dhcp: make DUID-to-string function available to subclasses
-rw-r--r--src/dhcp-manager/nm-dhcp-client.c33
-rw-r--r--src/dhcp-manager/nm-dhcp-utils.c17
-rw-r--r--src/dhcp-manager/nm-dhcp-utils.h2
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 */