summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-09-22 18:42:40 +0200
committerJiří Klimeš <jklimes@redhat.com>2015-09-23 09:29:08 +0200
commit8f92274b42217d9b6b2c8ed7b1c8a0d6cffd8119 (patch)
tree4dd8f30bcb5de481d89f8671d49bd1ab9bd1c44a
parentd7b72b2a3eb932a5a9320215609371e99c198066 (diff)
downloadNetworkManager-8f92274b42217d9b6b2c8ed7b1c8a0d6cffd8119.tar.gz
modem-broadband: update modem's supported-ip-families (rh #1263959)
If SIM in a modem is locked, ModemManager can't initialize SupportedIpFamilies and NetworkManager will set the property to 0. ModemManager then updates the property after the modem is unlocked, but NetworkManager did not watch changes to the property. And that resulted in a connection failure: (ttyUSB1): Failed to connect 'O2 Internet': Connection requested IPv4 but IPv4 is unsuported by the modem. (ttyUSB1): device state change: prepare -> failed (reason 'modem-init-failed') [40 120 28] https://bugzilla.redhat.com/show_bug.cgi?id=1263959
-rw-r--r--src/devices/wwan/nm-modem-broadband.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c
index e5c77f4dcf..38bcc1ed6d 100644
--- a/src/devices/wwan/nm-modem-broadband.c
+++ b/src/devices/wwan/nm-modem-broadband.c
@@ -1153,6 +1153,19 @@ sim_changed (MMModem *modem, GParamSpec *pspec, gpointer user_data)
}
static void
+supported_ip_families_changed (MMModem *modem, GParamSpec *pspec, gpointer user_data)
+{
+ NMModemBroadband *self = NM_MODEM_BROADBAND (user_data);
+
+ g_return_if_fail (modem == self->priv->modem_iface);
+
+ g_object_set (G_OBJECT (self),
+ NM_MODEM_IP_TYPES,
+ mm_ip_family_to_nm (mm_modem_get_supported_ip_families (modem)),
+ NULL);
+}
+
+static void
nm_modem_broadband_init (NMModemBroadband *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
@@ -1183,6 +1196,10 @@ set_property (GObject *object,
G_CALLBACK (sim_changed),
self);
sim_changed (self->priv->modem_iface, NULL, self);
+ g_signal_connect (self->priv->modem_iface,
+ "notify::supported-ip-families",
+ G_CALLBACK (supported_ip_families_changed),
+ self);
/* Note: don't grab the Simple iface here; the Modem interface is the
* only one assumed to be always valid and available */