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.in24
-rw-r--r--src/modem-manager/nm-modem.c43
2 files changed, 62 insertions, 5 deletions
diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in
index 7d6a7f7b..6da50ed0 100644
--- a/src/modem-manager/Makefile.in
+++ b/src/modem-manager/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -16,6 +16,23 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -96,6 +113,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(libmodem_manager_la_SOURCES)
 DIST_SOURCES = $(libmodem_manager_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c
index c9c9e9a4..c43e5e16 100644
--- a/src/modem-manager/nm-modem.c
+++ b/src/modem-manager/nm-modem.c
@@ -282,6 +282,25 @@ ppp_stage3_ip4_config_start (NMModem *self,
 /*****************************************************************************/
 /* IP method static */
 
+static char addr_to_string_buf[INET6_ADDRSTRLEN + 1];
+
+static const char *
+ip_address_to_string (guint32 numeric)
+{
+	struct in_addr temp_addr;
+
+	memset (&addr_to_string_buf, '\0', sizeof (addr_to_string_buf));
+	temp_addr.s_addr = numeric;
+
+	if (inet_ntop (AF_INET, &temp_addr, addr_to_string_buf, INET_ADDRSTRLEN)) {
+		return addr_to_string_buf;
+	} else {
+		nm_log_warn (LOGD_VPN, "error converting IP4 address 0x%X",
+		             ntohl (temp_addr.s_addr));
+		return NULL;
+	}
+}
+
 static void
 static_stage3_done (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
 {
@@ -293,23 +312,39 @@ static_stage3_done (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
 
 	priv->call = NULL;
 
+	/* Returned value array is (uuuu): [IP, DNS1, DNS2, DNS3], all in
+	 * network byte order.
+	 */
 	if (dbus_g_proxy_end_call (proxy, call, &error,
-							   G_TYPE_VALUE_ARRAY, &ret_array,
-							   G_TYPE_INVALID)) {
+	                           G_TYPE_VALUE_ARRAY, &ret_array,
+	                           G_TYPE_INVALID)) {
 		NMIP4Address *addr;
 		int i;
 
 		config = nm_ip4_config_new ();
 
 		addr = nm_ip4_address_new ();
+
+		nm_log_info (LOGD_MB, "(%s): IPv4 static configuration:", priv->iface);
+
+		/* IP address */
 		nm_ip4_address_set_address (addr, g_value_get_uint (g_value_array_get_nth (ret_array, 0)));
 		nm_ip4_address_set_prefix (addr, 32);
 		nm_ip4_config_take_address (config, addr);
 
-		for (i = 0; i < ret_array->n_values; i++) {
+		nm_log_info (LOGD_MB, "  address %s/%d",
+		             ip_address_to_string (nm_ip4_address_get_address (addr)),
+		             nm_ip4_address_get_prefix (addr));
+
+		/* DNS servers */
+		for (i = 1; i < ret_array->n_values; i++) {
 			GValue *value = g_value_array_get_nth (ret_array, i);
+			guint32 tmp = g_value_get_uint (value);
 
-			nm_ip4_config_add_nameserver (config, g_value_get_uint (value));
+			if (tmp > 0) {
+				nm_ip4_config_add_nameserver (config, tmp);
+				nm_log_info (LOGD_MB, "  DNS %s", ip_address_to_string (tmp));
+			}
 		}
 		g_value_array_free (ret_array);
 	}