mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 21:38:06 +02:00
dhcp: dhclient leasefile and pidfile fixes for IPv6
Don't use the same lease and pid files for IPv6 as for IPv4.
This commit is contained in:
parent
439768db3d
commit
f094e0ad9d
1 changed files with 14 additions and 7 deletions
|
|
@ -61,10 +61,11 @@ typedef struct {
|
||||||
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_leasefile_for_iface (const char * iface, const char *uuid)
|
get_leasefile_for_iface (const char * iface, const char *uuid, gboolean ipv6)
|
||||||
{
|
{
|
||||||
return g_strdup_printf ("%s/dhclient-%s-%s.lease",
|
return g_strdup_printf ("%s/dhclient%s-%s-%s.lease",
|
||||||
NM_DHCLIENT_LEASE_DIR,
|
NM_DHCLIENT_LEASE_DIR,
|
||||||
|
ipv6 ? "6" : "",
|
||||||
uuid,
|
uuid,
|
||||||
iface);
|
iface);
|
||||||
}
|
}
|
||||||
|
|
@ -118,7 +119,7 @@ nm_dhcp_dhclient_get_lease_config (const char *iface, const char *uuid)
|
||||||
char **line, **split = NULL;
|
char **line, **split = NULL;
|
||||||
GHashTable *hash = NULL;
|
GHashTable *hash = NULL;
|
||||||
|
|
||||||
leasefile = get_leasefile_for_iface (iface, uuid);
|
leasefile = get_leasefile_for_iface (iface, uuid, FALSE);
|
||||||
if (!leasefile)
|
if (!leasefile)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
@ -456,14 +457,18 @@ dhclient_start (NMDHCPClient *client,
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
const char *iface, *uuid;
|
const char *iface, *uuid;
|
||||||
char *binary_name;
|
char *binary_name;
|
||||||
|
gboolean ipv6;
|
||||||
|
|
||||||
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
||||||
g_return_val_if_fail (ip_opt != NULL, -1);
|
g_return_val_if_fail (ip_opt != NULL, -1);
|
||||||
|
|
||||||
iface = nm_dhcp_client_get_iface (client);
|
iface = nm_dhcp_client_get_iface (client);
|
||||||
uuid = nm_dhcp_client_get_uuid (client);
|
uuid = nm_dhcp_client_get_uuid (client);
|
||||||
|
ipv6 = nm_dhcp_client_get_ipv6 (client);
|
||||||
|
|
||||||
priv->pid_file = g_strdup_printf (LOCALSTATEDIR "/run/dhclient-%s.pid", iface);
|
priv->pid_file = g_strdup_printf (LOCALSTATEDIR "/run/dhclient%s-%s.pid",
|
||||||
|
ipv6 ? "6" : "",
|
||||||
|
iface);
|
||||||
if (!priv->pid_file) {
|
if (!priv->pid_file) {
|
||||||
nm_warning ("%s: not enough memory for dhcpcd options.", iface);
|
nm_warning ("%s: not enough memory for dhcpcd options.", iface);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -479,7 +484,7 @@ dhclient_start (NMDHCPClient *client,
|
||||||
nm_dhcp_client_stop_existing (priv->pid_file, binary_name);
|
nm_dhcp_client_stop_existing (priv->pid_file, binary_name);
|
||||||
g_free (binary_name);
|
g_free (binary_name);
|
||||||
|
|
||||||
priv->lease_file = get_leasefile_for_iface (iface, uuid);
|
priv->lease_file = get_leasefile_for_iface (iface, uuid, ipv6);
|
||||||
if (!priv->lease_file) {
|
if (!priv->lease_file) {
|
||||||
nm_warning ("%s: not enough memory for dhclient options.", iface);
|
nm_warning ("%s: not enough memory for dhclient options.", iface);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -501,8 +506,10 @@ dhclient_start (NMDHCPClient *client,
|
||||||
g_ptr_array_add (argv, (gpointer) "-lf"); /* Set lease file */
|
g_ptr_array_add (argv, (gpointer) "-lf"); /* Set lease file */
|
||||||
g_ptr_array_add (argv, (gpointer) priv->lease_file);
|
g_ptr_array_add (argv, (gpointer) priv->lease_file);
|
||||||
|
|
||||||
g_ptr_array_add (argv, (gpointer) "-cf"); /* Set interface config file */
|
if (priv->conf_file) {
|
||||||
g_ptr_array_add (argv, (gpointer) priv->conf_file);
|
g_ptr_array_add (argv, (gpointer) "-cf"); /* Set interface config file */
|
||||||
|
g_ptr_array_add (argv, (gpointer) priv->conf_file);
|
||||||
|
}
|
||||||
|
|
||||||
g_ptr_array_add (argv, (gpointer) iface);
|
g_ptr_array_add (argv, (gpointer) iface);
|
||||||
g_ptr_array_add (argv, NULL);
|
g_ptr_array_add (argv, NULL);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue