about summary refs log tree commit diff
path: root/src/dhcp-manager/nm-dhcp-dhclient.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2013-02-20 23:06:55 +0100
committerMichael Biebl <biebl@debian.org>2013-02-20 23:06:55 +0100
commit6bb18bdca6b7bf811bdd00dbea1b09f3a367d2dc (patch)
tree8fec068abdd1bc1ade3839f599e1c18d6c524a6a /src/dhcp-manager/nm-dhcp-dhclient.c
parentfdcb282bbb150da0049cf2dd5b54e56eb3d0b55f (diff)
parent8d275584fc94f398f0a7c990dcd057533d9a5856 (diff)
Merge tag 'upstream/0.9.8.0' into experimental
Upstream version 0.9.8.0
Diffstat (limited to 'src/dhcp-manager/nm-dhcp-dhclient.c')
-rw-r--r--src/dhcp-manager/nm-dhcp-dhclient.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c
index d9f51352..c43ecf50 100644
--- a/src/dhcp-manager/nm-dhcp-dhclient.c
+++ b/src/dhcp-manager/nm-dhcp-dhclient.c
@@ -455,8 +455,9 @@ dhclient_start (NMDHCPClient *client,
 	GError *error = NULL;
 	const char *iface, *uuid, *system_bus_address;
 	char *binary_name, *cmd_str, *pid_file = NULL, *system_bus_address_env = NULL;
-	gboolean ipv6;
+	gboolean ipv6, success;
 	guint log_domain;
+	char *escaped;
 
 	g_return_val_if_fail (priv->pid_file == NULL, -1);
 
@@ -497,6 +498,20 @@ dhclient_start (NMDHCPClient *client,
 		return -1;
 	}
 
+	/* Save the DUID to the leasefile dhclient will actually use */
+	if (ipv6) {
+		escaped = nm_dhcp_dhclient_escape_duid (duid);
+		success = nm_dhcp_dhclient_save_duid (priv->lease_file, escaped, &error);
+		g_free (escaped);
+		if (!success) {
+			nm_log_warn (log_domain, "(%s): failed to save DUID to %s: (%d) %s.",
+			             iface, priv->lease_file,
+			             error ? error->code : -1,
+			             error && error->message ? error->message : "(unknown)");
+			return -1;
+		}
+	}
+
 	argv = g_ptr_array_new ();
 	g_ptr_array_add (argv, (gpointer) priv->path);