Commit graph

516 commits

Author SHA1 Message Date
Dan Williams
9d50e9dbd9 mobile: fix removal of ethernet interfaces owned by modems
If the kernel doesn't tag a modem's ethernet interface with
DEVTYPE=wwan then NetworkManager has no idea that's a modem
(and cannot be used until connected via the control port).
Since DEVTYPE=wwan devices get ignored by NM, so should these
interfaces when NM knows they are modems.

That got broken at some point for ModemManager1, because the
data port isn't read until the modem is connected.  NM only
looked for and removed the data-port-as-ethernet-device when
the modem was added, long before the MM1 data port was found.

ModemManager does provide a list of ports owned by the modem
though, which we can use at modem addition time to remove
an ethernet device that is controled by the modem.
2014-02-21 09:45:06 -06:00
Giovanni Campagna
f6f216f0a9 manager: fix notification of the connectivity property
Notify DBus clients at the end of a connectivity check, and when
NMConnectivity reports a change.

https://bugzilla.gnome.org/show_bug.cgi?id=724550
2014-02-17 14:55:53 -05:00
Thomas Haller
2ca7c89298 core: fix hanging set_logging() dbus call by returning a result
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-02-12 21:31:19 +01:00
Thomas Haller
507599a2d2 trivial: fix whitespace and spelling error
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-02-10 11:18:40 +01:00
Stanislaw Gruszka
0cb256f5d7 core: normalize object paths on add_and_activate_connection
Without this patch I can not setup new hotspot connection.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-02-10 11:02:10 +01:00
Thomas Haller
f9022b8fb3 core: fix recently introduced crash in nm-manager
find_master() does not (always) set the output parameters. Initialize
paramter to NULL before calling find_master().

Just introduced recently with commit 8123cd2410.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-01-30 16:25:05 +01:00
Dan Winship
8123cd2410 core: fix a crash with autoconnect masters with autoconnect slaves
If a master and at least one of its slaves were both autoconnect,
NMManager would end up creating two NMActiveConnections for the master
(one when the master itself is activated, and a second when the slave
is activated and calls ensure_master_active_connection(). (This
probably got broken when we changed it so ACs were created before
their devices.)

Fix this by checking for an existing master AC before creating one.
2014-01-30 09:12:04 -05:00
Dan Winship
a99ecb5405 core: Tighten up find_master() and ensure_master_active_connection() semantics
Return activation errors in a few edge cases rather than doing the wrong thing.
2014-01-30 09:12:04 -05:00
Dan Winship
8e391dc361 core: make find_master() return a GError on failure 2014-01-30 09:12:04 -05:00
Dan Winship
22c3a813dd core: Fix the find_master() and ensure_master_active_connection() docs
These two functions have confusing semantics, so document them in
better detail (which also highlights some bugs).
2014-01-30 09:12:04 -05:00
Dan Williams
199ef9320e trivial: reorgranize some NMManager functions
No code changes at all, just moving GObject-related functions to
the bottom of the file per NM conventions.
2014-01-24 13:43:50 -06:00
Dan Williams
891dcfad7d core: more usage of g_signal_handlers_disconnect_by_func() 2014-01-24 13:43:46 -06:00
Dan Williams
505248b0ce core: use g_signal_handlers_disconnect_by_func() to simplify some code 2014-01-24 13:43:19 -06:00
Dan Williams
016dbcc99e core: provide useful error messages to main() on Manager creation failure 2014-01-24 13:14:05 -06:00
Dan Williams
e62b212be3 core: exit cleanly if D-Bus cannot be initialized (rh #1057738)
Instead of crashing, let's exit cleanly.
2014-01-24 13:14:04 -06:00
Dan Williams
a59ccc4cbb api/core: add Devices property to the Manager 2014-01-23 17:34:12 -06:00
Dan Williams
d965348485 wifi: fix crash after "merge: remove at_console..." for wifi scan requests
Fix a crash caused by "merge: remove at_console..." when a scan request
comes in via the D-Bus interface.  This usage of the device "auth-request"
signal was missed the first time around.
2014-01-23 17:12:45 -06:00
Dan Williams
f0149b6372 core: enforce permissions for SetLogging
This was always protected by D-Bus policy permissions, but just to
be paranoid, ensure it's also protected by explicit checks on the UID.
2014-01-23 16:48:19 -06:00
Dan Winship
072dca8ad0 core: properly deactivate active connections that fail early
If a master activation failed early (eg, because the virtual device
could not be created), then the slaves were not being notified of the
failure. Fix that.
2014-01-23 15:16:09 -05:00
Dan Winship
979b8920b4 core: move virtual device autoconnect tracking bits out of NMManager
Virtual devices may be created and destroyed, but we need to keep
their autoconnect state across that. Previously this was handled by
NMManager, but it really belongs with the other autoconnect tracking
in NMPolicy and NMSettingsConnection.

This also fixes a bug where NMPolicy would sometimes decide to
autoactivate a virtual device connection which NMManager would then
have to cancel.
2014-01-23 15:16:09 -05:00
Dan Winship
c4fc72c795 devices: start using the DEACTIVATING state
When a device is disconnected by the user (as opposed to due to
network or hardware error, etc), set it first to DEACTIVATING, which
does nothing but queue a transition to disconnected. This lets other
parts of NM observe the device when it is about-to-disconnect, but
still has an associated connection.
2014-01-23 15:15:00 -05:00
Dan Williams
efd0e2a589 core: respect connection permissions for internal activation requests
Similar to "core: respect connection user permissions for activation/deactivation",
if a master connection is being activated because a slave connection requested
it, ensure that the user requesting the master connection is allowed to
activate it.
2014-01-21 13:41:18 -06:00
Dan Williams
eb8bc5396e core: respect connection user permissions for activation/deactivation
This appears to be a bug since the original 0.9.0 release when
connection permissions were implemented.

If all the following are true:
- the user is local (as determined by systemd or ConsoleKit)
- the user has been given the NETWORK_CONTROL PolicyKit permission
- the user is not listed in the connection's permissions
- the user knows the D-Bus object path of a connection which they
have no permissions for

then that user may activate/deactivate connections that are not
visible to that user as determined by the connection permissions.
Fix that by ensuring that these operations check whether the user
has permission.

These operations are *not* affected, and have always checked user
permissions before allowing the operation:
- modifying any connection details
- requesting any secrets or passwords for the connection
- deleting the connection
2014-01-21 12:18:49 -06:00
Dan Williams
f36bfd2039 trivial: remove stray '\' 2014-01-17 10:55:46 -06:00
Dan Winship
32a12ad9a4 core: fix leak in impl_manager_get_logging
nm_logging_level_to_string() returned a const string, but
nm_logging_domains_to_string() returned a malloced one, which was
getting leaked in impl_manager_get_logging(). Fix this by making them
both malloced, and freeing as needed.
2013-12-20 10:04:11 -05:00
Dan Winship
111603212c logging: ignore unrecognized domains on startup
If the command line or NetworkManager.conf mentions a non-existent
domain, just print a warning and ignore it. That way if you switch to
using an older NM that doesn't have that domain, it will still work.
2013-12-20 10:04:10 -05:00
Dan Winship
69f92cfa2c core: when suspending, don't take down virtual devices (rh #1038158)
NM bounces devices on suspend/resume, since some buggy drivers require
it. However, there's no need to take down virtual devices. (In
particular, we don't want to take down libvirt's virbr0, since it
won't get automatically brought back up afterward.)
2013-12-20 09:16:43 -05:00
Dan Williams
befa9083e8 core: fuzzier matching of generated connections to persistent ones
When generating a connection, if the device has no non-link-local IPv6
address, then it's unclear whether (a) the connection was link-local
originally, or (b) the connection was 'auto' but IPv6 failed or timed
out.

In this case, if there is a persistent connection that is 'auto' but
the generated connection is 'link-local', the persistent connection
should be used.

Add a more-testable framework for doing the connection matching to
handle this.
2013-12-05 17:09:46 -06:00
Dan Williams
75d694db9b core: optimize generated connection matching a bit
Do a quick check to see if the connetion is compatible with the device
before we start doing a relatively heavy connection comparison.
2013-12-05 16:07:24 -06:00
Dan Williams
5f15409684 libnm-util: add INFERRABLE flag and remove CANDIDATE
INFERRABLE means the opposite of CANDIDATE; a property which NetworkManager
can read ("infer") from the system or the kernel when generating
connections.  CANDIDATE isn't a great name and thus dies.
2013-12-05 16:07:24 -06:00
Jiří Klimeš
b7d6c61fe7 manager: handle NULL ifname in nm_manager_can_device_auto_connect gracefully 2013-12-04 16:11:10 +01:00
Jiří Klimeš
41d3efbd73 manager: do not create software devices when device was manually disconnected
We can only create virtual interfaces when the connection has autoconnect
property *and* the device was not manually disconnected before.

Without this commit NetworkManager would auto-activate all virtual connections
when a change was done (e.g. new virtual connection was addded).
2013-12-04 16:06:08 +01:00
Jiří Klimeš
6c96f5f777 manager: fix connection auto-activation in timestamp-based order (rh #1029854)
This commit fixes a regression from a1f16cd4d9
(nm-policy.c change).

https://bugzilla.redhat.com/show_bug.cgi?id=1029854
2013-11-29 15:42:37 +01:00
Dan Williams
308f2c08dd Revert "core: add Devices property to Manager"
This reverts commit c1768154c4.

Not supposed to be committed yet, see dcbw/dbus-properties for the
real patch.
2013-11-25 15:19:09 -06:00
Dan Williams
c1768154c4 core: add Devices property to Manager
Helps other bindings.
2013-11-25 11:59:13 -06:00
Jiří Klimeš
46a7760ead core: do not generate a connection for loopback interface (rh #1032594)
Else loopback is managed, and could be easily disconnected, which causes various
issues with applications. So do not manage it for now, to be on the safer side.

https://bugzilla.redhat.com/show_bug.cgi?id=1032594
2013-11-20 19:07:48 +01:00
Dan Williams
6a75c9b8e8 core: allow default wired connections to stay up when quitting
Previously, the default wired connection was removed on quit when the
device was cleaned up.  This is inconsistent with other connections.
Leave the default wired connection up when quitting to fix this
inconsistency.

This allows default wired connections to be assumed when NM starts.
2013-11-14 11:34:07 -06:00
Dan Winship
3c236c88eb core: fix re-activation of existing active connection
The change to allow an NMConnection to only be active on a single
device accidentally broke the case of re-activating a connection on
the same device. Fix that.
2013-11-13 13:35:41 -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
f413911239 core: don't deactivate assumed connections when quitting
If an assumed bridge/bond/team/whatever happened to be in the process
of activating (perhaps it had no recognized slaves and was waiting for
them to continue with IP configuration) when NM quits, don't deactivate
the device and blow away the assumed configuration.
2013-11-08 16:46:45 -06:00
Dan Winship
6b7ebc0eb9 core: NMManager:state fixes for assumed connections, etc
Don't set NMManager:state to CONNECTING when assuming a connection,
since it's not actually "connecting".

If there are active connections, but none has the default route, then
the global state should be CONNECTED_LOCAL, not CONNECTED_GLOBAL.

Also tweak the semantics of CONNECTING/DISCONNECTING slightly; we only
set state to CONNECTING when connecting a new connection if we are not
already CONNECTED_GLOBAL, and we only set it to DISCONNECTING if we
will be DISCONNECTED afterward.
2013-11-08 16:46:45 -06:00
Pavel Šimerda
ce810d3660 core: remove non-NM-created bridge workarounds
Handle bridges like any other devices since soon we'll be able to
take them over without changing their existing configuration.
2013-11-08 16:46:45 -06:00
Dan Williams
d6b9465b18 core: find assumed connection masters
If an assumed connection should have a master (bridge port, bond slave,
etc) it needs to notify its master that it's a slave.  Since slaves
are ordered after their masters at start, the master should already
have a generated connection which we can use as the master.
2013-11-08 16:46:44 -06:00
Dan Williams
61744d41bb core: add nm_active_connection_[get|set]_assumed()
Various code during the activation paths will want to know whether
the connection is assumed or not, so that it doesn't do stuff that
touches the device.
2013-11-08 16:46:44 -06:00
Dan Williams
e7567859c9 core: allow devices to activate their generated connections
If the device has a valid generated connection, it's already applied
and the device is already "activated" outside NM, so let activation
happen inside NM regardless of whether the device is available or not
according to NM.
2013-11-08 16:46:44 -06:00
Dan Williams
ffea69e06b trivial: refine connection generation logging 2013-11-08 16:46:44 -06:00
Dan Williams
24995b2c96 core: don't generate connections for devices NM just created
No sense in doing that, since they were just created and can't possibly
have any relevant configuration yet.
2013-11-08 16:46:44 -06:00
Dan Williams
0321073b3c core: capture initial device DHCP IP configuration
At least gives us DNS servers and definite gateway.
2013-11-08 16:46:44 -06:00
Dan Williams
b54a9868fd core: clean up legacy connection matching; remove match_l2_config
All previous users of this API are gone, so remove it.
2013-11-08 16:46:22 -06:00
Dan Williams
a31dfea052 core: fix assumed active connection exporting after ff7e47a4 (core: kill PendingActivation and move authorization to NMActiveConnection)
Assumed active connections never got a D-Bus path and were never exported
to D-Bus.
2013-11-07 11:53:23 -06:00