get_duid() got a default-duid from the lease file, from one of the system files, or from the machine-id but did not save it back to the lease file so that dhclient could use it. Signed-off-by: Gene Czarcinski <g...@czarc.net> --- src/dhcp-manager/nm-dhcp-dhclient.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c index d9f5135..ad41dcd 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient.c +++ b/src/dhcp-manager/nm-dhcp-dhclient.c @@ -643,7 +643,6 @@ get_duid (NMDHCPClient *client) TRUE); nm_log_dbg (LOGD_DHCP, "Looking for DHCPv6 DUID in '%s'.", leasefile); duid = nm_dhcp_dhclient_read_duid (leasefile, &error); - g_free (leasefile); if (error) { nm_log_warn (LOGD_DHCP, "Failed to read leasefile '%s': (%d) %s", @@ -666,8 +665,27 @@ get_duid (NMDHCPClient *client) } } - /* return our DUID, otherwise let the parent class make a default DUID */ - return duid ? duid : NM_DHCP_CLIENT_CLASS (nm_dhcp_dhclient_parent_class)->get_duid (client); + /* If no DUID, let the parent class make a default DUID */ + if (!duid) + duid = NM_DHCP_CLIENT_CLASS (nm_dhcp_dhclient_parent_class)->get_duid (client); + + nm_log_dbg (LOGD_DHCP, "Attempting to write default-duid to leasefile '%s'", leasefile); + if (duid) { + if (!nm_dhcp_dhclient_save_duid (leasefile, nm_dhcp_dhclient_escape_duid (duid), &error)) { + nm_log_warn (LOGD_DHCP, "Failed to write default-duid to leasefile '%s' :(%d) %s", + leasefile, + error ? error->code : -1, + error ? error->message : "(unknown)"); + g_clear_error(&error); + } + } + else { + nm_log_warn (LOGD_DHCP, "Failed to get duid-UUID from parent"); + } + + g_free (leasefile); + + return duid; } /***************************************************/ -- 1.8.1.2 _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list