From 59c3714a494c3b3765657c0551ad82842d98a7d2 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Sat, 26 Apr 2014 20:55:09 +0200 Subject: Imported Upstream version 0.9.8.10 --- src/dhcp-manager/Makefile.am | 7 +++++-- src/dhcp-manager/Makefile.in | 9 +++++++-- src/dhcp-manager/nm-dhcp-client.c | 20 +++++++++++++++----- src/dhcp-manager/nm-dhcp-dhclient-utils.c | 4 ++++ src/dhcp-manager/nm-dhcp-dhclient.c | 2 +- src/dhcp-manager/nm-dhcp-dhcpcd.c | 14 +++++++++++++- src/dhcp-manager/nm-dhcp-manager.c | 7 ++++++- src/dhcp-manager/tests/Makefile.am | 7 ++++--- src/dhcp-manager/tests/Makefile.in | 9 ++++++--- 9 files changed, 61 insertions(+), 18 deletions(-) (limited to 'src/dhcp-manager') diff --git a/src/dhcp-manager/Makefile.am b/src/dhcp-manager/Makefile.am index 40a05834..f32a2167 100644 --- a/src/dhcp-manager/Makefile.am +++ b/src/dhcp-manager/Makefile.am @@ -1,6 +1,6 @@ SUBDIRS = . tests -INCLUDES = \ +AM_CPPFLAGS = \ -I${top_srcdir} \ -I${top_builddir}/include \ -I${top_srcdir}/include \ @@ -10,7 +10,8 @@ INCLUDES = \ -I${top_srcdir}/src/posix-signals \ -I${top_builddir}/libnm-util \ -I${top_srcdir}/libnm-util \ - -I${top_srcdir}/src + -I${top_srcdir}/src \ + -DRUNDIR=\"$(rundir)\" noinst_LTLIBRARIES = libdhcp-manager.la libdhcp-dhclient.la @@ -25,6 +26,7 @@ libdhcp_dhclient_la_SOURCES = \ libdhcp_dhclient_la_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ + $(AM_CPPFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DLOCALSTATEDIR=\"$(localstatedir)\" \ @@ -52,6 +54,7 @@ libdhcp_manager_la_SOURCES = \ libdhcp_manager_la_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ + $(AM_CPPFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DLOCALSTATEDIR=\"$(localstatedir)\" \ diff --git a/src/dhcp-manager/Makefile.in b/src/dhcp-manager/Makefile.in index 31920ec4..db4b0c91 100644 --- a/src/dhcp-manager/Makefile.in +++ b/src/dhcp-manager/Makefile.in @@ -260,6 +260,7 @@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCPCD_PATH = @DHCPCD_PATH@ DLLTOOL = @DLLTOOL@ +DNSMASQ_PATH = @DNSMASQ_PATH@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -282,6 +283,7 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -467,7 +469,7 @@ with_dhcpcd = @with_dhcpcd@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ SUBDIRS = . tests -INCLUDES = \ +AM_CPPFLAGS = \ -I${top_srcdir} \ -I${top_builddir}/include \ -I${top_srcdir}/include \ @@ -477,7 +479,8 @@ INCLUDES = \ -I${top_srcdir}/src/posix-signals \ -I${top_builddir}/libnm-util \ -I${top_srcdir}/libnm-util \ - -I${top_srcdir}/src + -I${top_srcdir}/src \ + -DRUNDIR=\"$(rundir)\" noinst_LTLIBRARIES = libdhcp-manager.la libdhcp-dhclient.la @@ -491,6 +494,7 @@ libdhcp_dhclient_la_SOURCES = \ libdhcp_dhclient_la_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ + $(AM_CPPFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DLOCALSTATEDIR=\"$(localstatedir)\" \ @@ -518,6 +522,7 @@ libdhcp_manager_la_SOURCES = \ libdhcp_manager_la_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ + $(AM_CPPFLAGS) \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DLOCALSTATEDIR=\"$(localstatedir)\" \ diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index f4e94a6e..980fcab8 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -1533,16 +1533,26 @@ dispose (GObject *object) * the DHCP client. */ - if (priv->remove_id) + if (priv->remove_id) { g_source_remove (priv->remove_id); + priv->remove_id = 0; + } + + if (priv->options) { + g_hash_table_destroy (priv->options); + priv->options = NULL; + } + g_clear_pointer (&priv->iface, g_free); - g_hash_table_destroy (priv->options); - g_free (priv->iface); - if (priv->hwaddr) + if (priv->hwaddr) { g_byte_array_free (priv->hwaddr, TRUE); + priv->hwaddr = NULL; + } - if (priv->duid) + if (priv->duid) { g_byte_array_free (priv->duid, TRUE); + priv->duid = NULL; + } G_OBJECT_CLASS (nm_dhcp_client_parent_class)->dispose (object); } diff --git a/src/dhcp-manager/nm-dhcp-dhclient-utils.c b/src/dhcp-manager/nm-dhcp-dhclient-utils.c index 89fa51ee..db4bf7e8 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient-utils.c +++ b/src/dhcp-manager/nm-dhcp-dhclient-utils.c @@ -168,6 +168,10 @@ nm_dhcp_dhclient_create_config (const char *interface, continue; } + /* Ignore 'script' since we pass our own */ + if (g_str_has_prefix (p, "script ")) + continue; + /* Check for "also require" */ if (!strncmp (p, ALSOREQ_TAG, strlen (ALSOREQ_TAG))) { in_alsoreq = TRUE; diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c index 5b64b132..9a42f0e4 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient.c +++ b/src/dhcp-manager/nm-dhcp-dhclient.c @@ -339,7 +339,7 @@ nm_dhcp_dhclient_get_lease_config (const char *iface, const char *uuid, gboolean } out: - g_slist_foreach (parsed, (GFunc) g_hash_table_destroy, NULL); + g_slist_free_full (parsed, (GDestroyNotify) g_hash_table_destroy); g_free (leasefile); return leases; } diff --git a/src/dhcp-manager/nm-dhcp-dhcpcd.c b/src/dhcp-manager/nm-dhcp-dhcpcd.c index f3245ee5..f978cccc 100644 --- a/src/dhcp-manager/nm-dhcp-dhcpcd.c +++ b/src/dhcp-manager/nm-dhcp-dhcpcd.c @@ -21,6 +21,7 @@ */ +#include #include #include #include @@ -110,7 +111,10 @@ ip4_start (NMDHCPClient *client, iface = nm_dhcp_client_get_iface (client); uuid = nm_dhcp_client_get_uuid (client); - priv->pid_file = g_strdup_printf (NMSTATEDIR "/dhcpcd-%s.pid", iface); + /* dhcpcd does not allow custom pidfiles; the pidfile is always + * RUNDIR "dhcpcd-.pid". + */ + priv->pid_file = g_strdup_printf (RUNDIR "/dhcpcd-%s.pid", iface); if (!priv->pid_file) { nm_log_warn (LOGD_DHCP4, "(%s): not enough memory for dhcpcd options.", iface); return -1; @@ -140,6 +144,14 @@ ip4_start (NMDHCPClient *client, g_ptr_array_add (argv, (gpointer) "-c"); /* Set script file */ g_ptr_array_add (argv, (gpointer) ACTION_SCRIPT_PATH ); +#ifdef DHCPCD_SUPPORTS_IPV6 + /* IPv4-only for now. NetworkManager knows better than dhcpcd when to + * run IPv6, and dhcpcd's automatic Router Solicitations cause problems + * with devices that don't expect them. + */ + g_ptr_array_add (argv, (gpointer) "-4"); +#endif + if (hostname && strlen (hostname)) { g_ptr_array_add (argv, (gpointer) "-h"); /* Send hostname to DHCP server */ g_ptr_array_add (argv, (gpointer) hostname ); diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c index 7088839a..d40eb48d 100644 --- a/src/dhcp-manager/nm-dhcp-manager.c +++ b/src/dhcp-manager/nm-dhcp-manager.c @@ -554,13 +554,18 @@ nm_dhcp_manager_get_lease_config (NMDHCPManager *self, const char *uuid, gboolean ipv6) { - NMDHCPManagerPrivate *priv = NM_DHCP_MANAGER_GET_PRIVATE (self); + NMDHCPManagerPrivate *priv; + g_return_val_if_fail (NM_IS_DHCP_MANAGER (self), NULL); g_return_val_if_fail (iface != NULL, NULL); g_return_val_if_fail (uuid != NULL, NULL); + priv = NM_DHCP_MANAGER_GET_PRIVATE (self); + if (priv->get_lease_config_func) return priv->get_lease_config_func (iface, uuid, ipv6); + + nm_log_warn (LOGD_DHCP, "Cannot get a DHCP lease config (no usable DHCP client was found!)"); return NULL; } diff --git a/src/dhcp-manager/tests/Makefile.am b/src/dhcp-manager/tests/Makefile.am index 8c9d06c1..bf859fe7 100644 --- a/src/dhcp-manager/tests/Makefile.am +++ b/src/dhcp-manager/tests/Makefile.am @@ -1,11 +1,12 @@ if ENABLE_TESTS -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_builddir)/include \ -I${top_srcdir}/libnm-util \ -I${top_builddir}/libnm-util \ - -I$(top_srcdir)/src/dhcp-manager + -I$(top_srcdir)/src/dhcp-manager \ + $(GLIB_CFLAGS) noinst_PROGRAMS = test-dhcp-dhclient @@ -15,7 +16,7 @@ test_dhcp_dhclient_SOURCES = \ test-dhcp-dhclient.c test_dhcp_dhclient_CPPFLAGS = \ - $(GLIB_CFLAGS) \ + $(AM_CPPFLAGS) \ -DTESTDIR="\"$(abs_srcdir)\"" test_dhcp_dhclient_LDADD = \ diff --git a/src/dhcp-manager/tests/Makefile.in b/src/dhcp-manager/tests/Makefile.in index bb28cb9e..afcee2c0 100644 --- a/src/dhcp-manager/tests/Makefile.in +++ b/src/dhcp-manager/tests/Makefile.in @@ -206,6 +206,7 @@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCPCD_PATH = @DHCPCD_PATH@ DLLTOOL = @DLLTOOL@ +DNSMASQ_PATH = @DNSMASQ_PATH@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -228,6 +229,7 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -412,12 +414,13 @@ with_dhclient = @with_dhclient@ with_dhcpcd = @with_dhcpcd@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ -@ENABLE_TESTS_TRUE@INCLUDES = \ +@ENABLE_TESTS_TRUE@AM_CPPFLAGS = \ @ENABLE_TESTS_TRUE@ -I$(top_srcdir)/include \ @ENABLE_TESTS_TRUE@ -I$(top_builddir)/include \ @ENABLE_TESTS_TRUE@ -I${top_srcdir}/libnm-util \ @ENABLE_TESTS_TRUE@ -I${top_builddir}/libnm-util \ -@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/dhcp-manager +@ENABLE_TESTS_TRUE@ -I$(top_srcdir)/src/dhcp-manager \ +@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) ####### policy /etc/hosts test ####### @@ -425,7 +428,7 @@ with_resolvconf = @with_resolvconf@ @ENABLE_TESTS_TRUE@ test-dhcp-dhclient.c @ENABLE_TESTS_TRUE@test_dhcp_dhclient_CPPFLAGS = \ -@ENABLE_TESTS_TRUE@ $(GLIB_CFLAGS) \ +@ENABLE_TESTS_TRUE@ $(AM_CPPFLAGS) \ @ENABLE_TESTS_TRUE@ -DTESTDIR="\"$(abs_srcdir)\"" @ENABLE_TESTS_TRUE@test_dhcp_dhclient_LDADD = \ -- cgit 1.3.0-6-gf8a5