Re: [PATCH 1/2] save duid to lease file



On Wed, 2013-02-13 at 03:01 -0500, Gene Czarcinski wrote:
> 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 <gene czarc net>

Instead of writing it when getting it, we should actually write it when
we're about to execute dhclient for IPv6.  So something like this
instead?  Good catch though, thanks for looking into this.

Dan

diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c
index d9f5135..c43ecf5 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);
 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]