Commit graph

40 commits

Author SHA1 Message Date
Dan Williams
aeb1e103d8 mobile: make WWAN support a plugin
Make WWAN support a plugin using the new device factory interface.
Provides a 5% size reduction in the core NM binary.

     Before    After
NM: 1187224  1125208  (-5%)
MM:       0   100576

(all results from stripped files)
2014-03-03 09:32:41 -06:00
Dan Williams
8e9b9fe423 mobile: convert to device removed signals
Instead of having NMManager listen directly to the ModemManager
for modem removal signals, have the NMDeviceModem and NMDeviceBt
listen for them (since they obviously have a pointer to the backing
NMModem object) and then re-emit any necessary device removal
signals to the manager.
2014-03-03 09:32:40 -06:00
Aleksander Morgado
3b76ae18a5 modem-manager: if building systemd support, assume it manages the MM lifecycle
We will not explicitly poke MM to start it if NetworkManager is built with
systemd support.

https://bugzilla.gnome.org/show_bug.cgi?id=703040
2014-02-13 12:06:17 -05:00
Thomas Haller
97935382f4 coverity: fix various warnings detected with Coverity
These are (most likely) only warnings and not severe bugs.
Some of these changes are mostly made to get a clean run of
Coverity without any warnings.

Error found by running Coverity scan

https://bugzilla.redhat.com/show_bug.cgi?id=1025894

Co-Authored-By: Jiří Klimeš <jklimes@redhat.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-11-13 15:29:24 +01:00
Dan Williams
d6f1d09604 mobile: move old MM modem properties parsing in NMModemOld 2013-06-03 12:59:49 -05:00
Dan Williams
88b26172d6 mobile: merge NMModemGsm into NMModemOld 2013-06-03 12:59:49 -05:00
Dan Williams
27acebe862 mobile: merge NMModemCdma into NMModemOld
GSM is next...
2013-06-03 12:59:49 -05:00
Dan Williams
da5177cecd mobile: move and rename old MM modem state enum 2013-06-03 12:59:49 -05:00
Dan Williams
ab69e9bc2a mobile: rename old MM bits to clarify that they're for old ModemManager 2013-06-03 12:59:48 -05:00
Dan Williams
7f6d10f3c3 trivial: rename some old ModemManager defines 2013-05-29 10:31:22 -05:00
Dan Williams
04cb58eacd core: convert the DBus manager to a single-ref object
It's created very, very early and never needs to be unrefed
by anything except the main() function.
2013-05-20 16:38:33 -03:00
Dan Winship
d529580cbb libnm-glib, core: use g_cclosure_marshal_generic
Since we depend on new glib now, we can just use the generic
marshaller rather than generating our own.
2013-05-08 14:59:29 -04:00
Dan Williams
caed13b3ef mobile: only clear dbus manager on quit
The private reference to the NMDBusManager is created at
NMModemManager init time, and should only be cleared when the
NMModemManager is disposed.  Instead it was getting cleared
whenever ModemManager1 was seen on the bus, and thus was unavailable
later when it was required to watch for the old ModemManager.
This caused NetworkManager to print warnings about NULL object
access to the console, and could prevent it from noticing when
ModemManager appeared on the system bus.
2013-04-10 10:06:38 -05:00
Dan Williams
6ef543d3a6 mobile: downgrade MM launch failure warning severity to debug
MM won't always be present, and if it's not, your logs will fill up
with warnings about MM not being able to be launched.  And when
running with systemd, you'll get a different class of errors like:

<warn> error poking ModemManager: GDBus.Error:org.freedesktop.systemd1.LoadFailed:
   Unit dbus-org.freedesktop.ModemManager1.service failed to load: No such file or
   directory. See system logs and 'systemctl status
   dbus-org.freedesktop.ModemManager1.service' for details.

and I'm tired of chasing and special-casing all the launch-failed
errors that D-Bus and systemd use.

Plus, we have dynamic log level changing via the D-Bus interface so if
people need to debug this, just chaning the log level will tell you
what's wrong.
2013-03-25 15:38:00 -05:00
Aleksander Morgado
fb8ebc2a97 modem-manager: workaround issue in 'GDBusObjectManagerClient'
The 'GDBusObjectManagerClient' won't signal added or removed objects when it
was created but no name owner was available in the bus. We can still use it for
name-owner changes, but in order to have added/removed object signals, we'll
need to re-create the whole 'MMManager' when we know the service came alive in
the bus.

See GLib/GIO/GDBus bug:
   https://bugzilla.gnome.org/show_bug.cgi?id=693285
2013-02-08 18:03:42 -06:00
Aleksander Morgado
03c1e40e66 modem-manager: keep track of the signals added to the 'GDBusObjectManagerClient'
Make sure we cleanup all the signals when we remove our internal reference to
the 'MMManager' object.
2013-02-08 18:03:39 -06:00
Aleksander Morgado
3b2556ae38 modem-manager: properly follow name-owner changes
We avoid requesting to auto-start the service when the 'MMManager' is created,
so that we can use it to follow name-owner changes (when auto-starting
requested the 'MMManager' creation may fail).

We still handle the periodic poking to the service, but instead of re-creating
the 'MMManager', we just call org.freedesktop.DBus.Peer.Ping().
2013-02-07 12:17:32 -06:00
Aleksander Morgado
1bbcd696a4 modem-manager: plug memleak 2013-02-06 12:06:10 -06:00
Dan Williams
56550a984f modem-manager: don't log so often about trying to start modem-manager
Reduce the log level to a debug log.  If you're not running MM for
whatever reason, don't spam the logs.
2012-11-21 11:48:26 -06:00
Aleksander Morgado
6463904bff modem-manager, manager: avoid calling G_TYPE_INSTANCE_GET_PRIVATE() often
G_TYPE_INSTANCE_GET_PRIVATE() is known to be slow, so just call it once when
the private data is created, and keep a 'priv' pointer around for easy access.
2012-11-21 11:48:25 -06:00
Aleksander Morgado
2e74fc8cf4 modem-manager, manager: integrate the new `ModemManager1' interface support
The new `MMManager' object takes care of notifying modems added or removed from
the ModemManager1 interface.

We will listen to both the old and new ModemManager implementations, but as soon
as the first ModemManager implementation is found, the other one gets cleared,
so that we don't wait forever to appear.
2012-11-21 11:48:25 -06:00
Aleksander Morgado
469e1a7164 modem-manager: rename old interface symbols
The new ModemManager comes with its own headers, and defines its own symbols to
name e.g. each interface. In order not to collide with the new ones, rename the
existing ones with a 'MM_OLD_DBUS' prefix instead of just 'MM_DBUS'.
2012-11-21 11:48:25 -06:00
Aleksander Morgado
f98ef0fdc4 modem-manager: remove the device' property from NMModem'
This property is not really used anywhere; so pointless to have it around.

Also, we already make sure in `NMModemManager' that the so called 'master'
device is valid and exists.
2012-10-30 18:24:21 -05:00
Dan Williams
8bbd7f207e modem: reduce "starting the modem manager" to a debug message 2012-10-02 17:02:31 -05:00
Dan Williams
052a24343e modem: track modem state and fail device if modem disconnects
This worked fine with PPP because PPP terminates, and NM watches
for that and handles it fine.  But modems with pseudo-ethernet ports
don't have anything like that, so we have to watch the modem's state
property instead.  This works only with MM 0.5.4 and later (including
0.6).
2012-08-24 13:24:16 -05:00
Dan Williams
0e6de5d2cf modem: get ip-timeout during modem creation
Grab it from the GetAll call where it'll already be instead
of asking for it separately.
2012-02-17 15:32:27 -06:00
Dan Williams
002155fb09 modem: get modem properties using GetAll
More efficient and less error-prone; get all the properties
in one call instead of individually.
2012-02-17 15:32:27 -06:00
Dan Williams
c9119c7599 modem: fix a periodic use-after-free crash poking ModemManager
See https://bugs.freedesktop.org/show_bug.cgi?id=41339 for a backtrace
and more info.
2011-09-29 11:14:48 -05:00
Dan Williams
0a8f7aeb56 core: use #defines for NMDBusManager signal names
Helps catch typos at compile time instead of runtime.
2010-12-10 11:36:55 -06:00
Dan Williams
b7288577fe logging: update modem-manager logging 2010-04-06 16:41:12 -07:00
Dan Williams
4e5539c895 Merge commit 'origin/master' into btdun 2010-01-27 17:21:06 -08:00
Dan Williams
6400f5cb77 misc: license fixups
All libs are LGPL, all binaries are GPL.
2010-01-21 15:11:50 -08:00
Dan Williams
ac739e3311 manager: fix up composite modem device detection and suppression
Some modems have their ethernet	interface show up only on connect,
and we want NM to ignore the ethernet interface as a top-level
device.
2009-10-04 23:59:20 -07:00
Dan Williams
c5cf3b1d9b modem: generalize GSM and CDMA modem classes
So that Bluetooth can use them.  They used to be NMDevice subclasses, but
we need them to be generic objects that both bluetooth and the normal
modem stack can use.  All because GObject can't do multiple inheritance,
but that would probably be even messier.

So now that we have generic modem objects, we can create the actual
NMDevice subclasses that will wrap them for non-BT modems, and then
also have NMDeviceBt wrap them too for DUN.
2009-10-04 21:41:49 -07:00
Alexander Sack
2e912158af core: ensure that modem-manager claimed data devices are ignored
add function nm_modem_manager_has_modem_for_iface to modem-manager api
and ignore device additions in nm-manager if the iface is claimed by
modem-manager; also forget about already managed devices once they get
claimed by modem-manager.
2009-09-04 16:55:48 +02:00
Dan Williams
c62701f65a modem: get and save modem master device
For later use identifying the actual physical modem device instead
of just one of the modem's ports.
2009-06-18 14:17:35 -04:00
Tambet Ingo
b41f612c73 Don't spam the log if modem-manager is not installed. 2009-03-16 10:46:21 +02:00
Tambet Ingo
614d1c7712 Use the correct signature for DeviceAdded and DeviceRemoved MM signals. 2009-02-10 15:34:21 +02:00
Tambet Ingo
eaa93b0387 Remove HSO and MBM modem implementations and replace them with generic code. 2009-02-09 11:01:35 +02:00
Tambet Ingo
e4398a88c8 Use ModemManager. 2009-02-09 11:01:35 +02:00