dhcp: write DUID out to lease file if not already present
Ensure that dhclient uses the administrator-specified or machine-id generated DUID.
This commit is contained in:
@@ -455,8 +455,9 @@ dhclient_start (NMDHCPClient *client,
|
|||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
const char *iface, *uuid, *system_bus_address;
|
const char *iface, *uuid, *system_bus_address;
|
||||||
char *binary_name, *cmd_str, *pid_file = NULL, *system_bus_address_env = NULL;
|
char *binary_name, *cmd_str, *pid_file = NULL, *system_bus_address_env = NULL;
|
||||||
gboolean ipv6;
|
gboolean ipv6, success;
|
||||||
guint log_domain;
|
guint log_domain;
|
||||||
|
char *escaped;
|
||||||
|
|
||||||
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
||||||
|
|
||||||
@@ -489,6 +490,20 @@ dhclient_start (NMDHCPClient *client,
|
|||||||
g_free (priv->lease_file);
|
g_free (priv->lease_file);
|
||||||
priv->lease_file = get_dhclient_leasefile (iface, uuid, ipv6);
|
priv->lease_file = get_dhclient_leasefile (iface, uuid, ipv6);
|
||||||
|
|
||||||
|
/* 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 ();
|
argv = g_ptr_array_new ();
|
||||||
g_ptr_array_add (argv, (gpointer) priv->path);
|
g_ptr_array_add (argv, (gpointer) priv->path);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user