summary refs log tree commit diff
path: root/src/modem-manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/modem-manager')
-rw-r--r--src/modem-manager/Makefile.am14
-rw-r--r--src/modem-manager/Makefile.in20
-rw-r--r--src/modem-manager/nm-modem-manager.c71
3 files changed, 58 insertions, 47 deletions
diff --git a/src/modem-manager/Makefile.am b/src/modem-manager/Makefile.am
index aa5534fc..012d26ea 100644
--- a/src/modem-manager/Makefile.am
+++ b/src/modem-manager/Makefile.am
@@ -1,6 +1,8 @@
 include $(GLIB_MAKEFILE)
 
-INCLUDES = \
+noinst_LTLIBRARIES = libmodem-manager.la
+
+libmodem_manager_la_CPPFLAGS = \
 	-I${top_srcdir}/src \
 	-I${top_builddir}/src/generated \
 	-I${top_srcdir}/src/generated \
@@ -8,9 +10,9 @@ INCLUDES = \
 	-I${top_builddir}/include \
 	-I${top_srcdir}/include \
 	-I${top_builddir}/libnm-util \
-	-I${top_srcdir}/libnm-util
-
-noinst_LTLIBRARIES = libmodem-manager.la
+	-I${top_srcdir}/libnm-util \
+	$(LIBNL_CFLAGS) \
+	$(DBUS_CFLAGS)
 
 libmodem_manager_la_SOURCES = \
 	nm-modem.c \
@@ -25,10 +27,6 @@ libmodem_manager_la_SOURCES = \
 	nm-modem-manager.c \
 	nm-modem-types.h
 
-libmodem_manager_la_CPPFLAGS = \
-	$(LIBNL_CFLAGS) \
-	$(DBUS_CFLAGS)
-
 libmodem_manager_la_LIBADD = \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in
index ea79607f..d945f9c9 100644
--- a/src/modem-manager/Makefile.in
+++ b/src/modem-manager/Makefile.in
@@ -225,6 +225,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@
@@ -247,6 +248,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@
@@ -431,23 +433,17 @@ with_dhclient = @with_dhclient@
 with_dhcpcd = @with_dhcpcd@
 with_netconfig = @with_netconfig@
 with_resolvconf = @with_resolvconf@
-INCLUDES = \
-	-I${top_srcdir}/src \
-	-I${top_builddir}/src/generated \
-	-I${top_srcdir}/src/generated \
-	-I${top_srcdir}/src/logging \
-	-I${top_builddir}/include \
-	-I${top_srcdir}/include \
-	-I${top_builddir}/libnm-util \
-	-I${top_srcdir}/libnm-util
-
 noinst_LTLIBRARIES = libmodem-manager.la
+libmodem_manager_la_CPPFLAGS = -I${top_srcdir}/src \
+	-I${top_builddir}/src/generated -I${top_srcdir}/src/generated \
+	-I${top_srcdir}/src/logging -I${top_builddir}/include \
+	-I${top_srcdir}/include -I${top_builddir}/libnm-util \
+	-I${top_srcdir}/libnm-util $(LIBNL_CFLAGS) $(DBUS_CFLAGS) \
+	$(am__append_2)
 libmodem_manager_la_SOURCES = nm-modem.c nm-modem.h nm-modem-generic.c \
 	nm-modem-generic.h nm-modem-cdma.c nm-modem-cdma.h \
 	nm-modem-gsm.c nm-modem-gsm.h nm-modem-manager.h \
 	nm-modem-manager.c nm-modem-types.h $(am__append_1)
-libmodem_manager_la_CPPFLAGS = $(LIBNL_CFLAGS) $(DBUS_CFLAGS) \
-	$(am__append_2)
 libmodem_manager_la_LIBADD =  \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la $(LIBNL_LIBS) \
diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c
index dd01646e..7b566ca4 100644
--- a/src/modem-manager/nm-modem-manager.c
+++ b/src/modem-manager/nm-modem-manager.c
@@ -51,7 +51,7 @@ struct _NMModemManagerPrivate {
 	/* ModemManager >= 0.7 */
 	GDBusConnection *dbus_connection;
 	MMManager *modem_manager_1;
-	guint modem_manager_1_poke_id;
+	guint modem_manager_1_launch_id;
 	gboolean old_modem_manager_found;
 	gboolean new_modem_manager_found;
 	guint modem_manager_1_name_owner_changed_id;
@@ -442,9 +442,9 @@ modem_manager_1_clear_signals (NMModemManager *self)
 static void
 clear_modem_manager_1_support (NMModemManager *self)
 {
-	if (self->priv->modem_manager_1_poke_id) {
-		g_source_remove (self->priv->modem_manager_1_poke_id);
-		self->priv->modem_manager_1_poke_id = 0;
+	if (self->priv->modem_manager_1_launch_id) {
+		g_source_remove (self->priv->modem_manager_1_launch_id);
+		self->priv->modem_manager_1_launch_id = 0;
 	}
 
 	modem_manager_1_clear_signals (self);
@@ -545,15 +545,20 @@ modem_manager_1_name_owner_changed (MMManager *modem_manager_1,
 	gchar *name_owner;
 
 	/* Quit poking, if any */
-	if (self->priv->modem_manager_1_poke_id) {
-		g_source_remove (self->priv->modem_manager_1_poke_id);
-		self->priv->modem_manager_1_poke_id = 0;
+	if (self->priv->modem_manager_1_launch_id) {
+		g_source_remove (self->priv->modem_manager_1_launch_id);
+		self->priv->modem_manager_1_launch_id = 0;
 	}
 
 	name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (modem_manager_1));
 	if (!name_owner) {
 		nm_log_info (LOGD_MB, "ModemManager disappeared from bus");
+
+#if !HAVE_SYSTEMD
+		/* If not managed by systemd, schedule relaunch */
 		schedule_modem_manager_1_relaunch (self, 0);
+#endif
+
 		return;
 	}
 
@@ -573,6 +578,8 @@ modem_manager_1_name_owner_changed (MMManager *modem_manager_1,
 	 */
 }
 
+#if !HAVE_SYSTEMD
+
 static void
 modem_manager_1_poke_cb (GDBusConnection *connection,
                          GAsyncResult *res,
@@ -606,18 +613,7 @@ modem_manager_1_poke_cb (GDBusConnection *connection,
 static void
 modem_manager_1_poke (NMModemManager *self)
 {
-	gchar *name_owner;
-
 	/* If there is no current owner right away, ensure we poke to get one */
-	name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->priv->modem_manager_1));
-	if (name_owner) {
-		/* Available! */
-		modem_manager_1_available (self);
-		g_free (name_owner);
-		return;
-	}
-
-	/* Poke! */
 	g_dbus_connection_call (self->priv->dbus_connection,
 	                        "org.freedesktop.ModemManager1",
 	                        "/org/freedesktop/ModemManager1",
@@ -632,6 +628,27 @@ modem_manager_1_poke (NMModemManager *self)
 	                        g_object_ref (self)); /* user_data */
 }
 
+#endif /* HAVE_SYSTEMD */
+
+static void
+modem_manager_1_check_name_owner (NMModemManager *self)
+{
+	gchar *name_owner;
+
+	name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->priv->modem_manager_1));
+	if (name_owner) {
+		/* Available! */
+		modem_manager_1_available (self);
+		g_free (name_owner);
+		return;
+	}
+
+#if !HAVE_SYSTEMD
+	/* If the lifecycle is not managed by systemd, poke */
+	modem_manager_1_poke (self);
+#endif
+}
+
 static void
 manager_new_ready (GObject *source,
                    GAsyncResult *res,
@@ -671,8 +688,8 @@ manager_new_ready (GObject *source,
 			                  "object-removed",
 			                  G_CALLBACK (modem_object_removed),
 			                  self);
-		/* Poke the MMManager! */
-		modem_manager_1_poke (self);
+
+		modem_manager_1_check_name_owner (self);
 	}
 
 	/* Balance refcount */
@@ -696,8 +713,8 @@ ensure_client (NMModemManager *self)
 		return;
 	}
 
-	/* If already available, poke! */
-	modem_manager_1_poke (self);
+	/* If already available, recheck name owner! */
+	modem_manager_1_check_name_owner (self);
 }
 
 static void
@@ -719,7 +736,7 @@ bus_get_ready (GObject *source,
 		/* If we found the old MM, abort */
 		clear_modem_manager_1_support (self);
 	} else {
-		/* Got the bus, create new ModemManager client. */
+		/* Got the bus, ensure client */
 		ensure_client (self);
 	}
 
@@ -730,8 +747,8 @@ bus_get_ready (GObject *source,
 static gboolean
 ensure_bus (NMModemManager *self)
 {
-	/* Clear poke ID */
-	self->priv->modem_manager_1_poke_id = 0;
+	/* Clear launch ID */
+	self->priv->modem_manager_1_launch_id = 0;
 
 	if (!self->priv->dbus_connection)
 		g_bus_get (G_BUS_TYPE_SYSTEM,
@@ -753,9 +770,9 @@ schedule_modem_manager_1_relaunch (NMModemManager *self,
 	 * cancelled if the object gets disposed. */
 
 	if (n_seconds)
-		self->priv->modem_manager_1_poke_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)ensure_bus, self);
+		self->priv->modem_manager_1_launch_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)ensure_bus, self);
 	else
-		self->priv->modem_manager_1_poke_id = g_idle_add ((GSourceFunc)ensure_bus, self);
+		self->priv->modem_manager_1_launch_id = g_idle_add ((GSourceFunc)ensure_bus, self);
 }
 
 #endif /* WITH_MODEM_MANAGER_1 */