Commit graph

12684 commits

Author SHA1 Message Date
Thomas Haller
625033a285 travis: fix setting NMTST_DEBUG for travis-check.sh script
(cherry picked from commit 7ec5acdc66)
2016-02-25 15:18:06 +01:00
Thomas Haller
ccee81f0d5 travis: fix bug in .travis.yml
Fixes: 1408b8c0a2
(cherry picked from commit c94a9372fa)
2016-02-25 15:18:06 +01:00
Lubomir Rintel
873e6564a0 travis: decouple the build from the test run
It looks better in the .yml file as well as in the travis UI.

(cherry picked from commit 1408b8c0a2)
[bgalvani: dropped the coverity part]
2016-02-25 15:17:55 +01:00
Thomas Haller
0907ad6cd8 travis: move build script to a separate script and improve debugging for failed tests
(cherry picked from commit 34050e9c0b)
2016-02-25 15:09:51 +01:00
Dan Williams
a3c0166a20 wifi: ignore monitor interfaces
If a monitor interface is created, NM will grab that interface
and change it to station mode.  That's not very nice.

https://mail.gnome.org/archives/networkmanager-list/2016-February/msg00068.html
(cherry picked from commit 751a37bf43)
2016-02-24 09:25:35 -06:00
Thomas Haller
ab667dd885 platform: fix detection of link-type for netlink event
Often a netlink event doesn't contain enough information to determine
the link type. Then we consult sysctl or ethtool. However, if we already
have the same object cached, we want to reused the (once detected) link-type.

There was a bug in lookup of the cached object.

(cherry picked from commit 9c0cfbbae6)
2016-02-15 17:26:28 +01:00
Beniamino Galvani
afb2447789 platform: always try to refetch new ethernet links
Due to a kernel bug [1], we sometimes receive spurious NEWLINK
messages after a wifi interface has disappeared. Since the link is not
present anymore we can't determine its type and thus it will show up
as a Ethernet one, with no address specified.  Request the link again
to check if it really exists.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1302037

https://bugzilla.gnome.org/show_bug.cgi?id=761151
(cherry picked from commit 97be12b662)
2016-02-12 14:45:30 +01:00
Dan Williams
05a14d0818 wifi: allow autoconnect on AP/AdHoc mode connections with manual IP configuration
The existing checks assumed that all AP/AdHoc connections would use the
shared IP method.  But what we really want to check for here is whether the
connection is AP/AdHoc.  Leave the existing 'shared' check for backwards
compatibility.

Also move the check above the timestamp check, since the user shouldn't need
to manually set a timestamp just to get an AP-mode connection to autoconnect.

(cherry picked from commit e2637760f1)
2016-02-11 14:38:05 -06:00
Thomas Haller
b81e8ca537 contrib/rpm: add rpm_version in spec file
and rename realversion to real_version to follow the pattern.

(cherry picked from commit 6490dc154c)
2016-02-03 15:49:04 +01:00
Thomas Haller
3d15ab9616 contrib/rpm: update comment for patches in spec file
We don't want to create backups of original files when
patching. Update the comment in the spec file to indicate
that.

(cherry picked from commit 455b981215)
2016-02-03 15:43:24 +01:00
Thomas Haller
261bd53e65 contrib/rpm: merge branch 'th/contrib-rpm-backports' 2016-02-02 19:44:52 +01:00
Thomas Haller
6807fcc5be contrib/rpm: remove dbus-glib dependancy
Only libnm-glib still requires dbus-glib.

(cherry picked from commit 804ec6fbcd)
2016-02-02 19:02:40 +01:00
Dan Williams
b880c9040b contrib: remove dbus/dbus-glib requires from libnm sub-package
libnm doesn't use dbus-glib or dbus at all.

(cherry picked from commit 5e892819fc)
2016-02-02 19:02:40 +01:00
Thomas Haller
6d342fb4c7 contrib/rpm: make build more configurable by using conditionals
Also add a new conditional "debug" to enable more assertions and
more logging, which is disabled by default.

Also add a conditional "test" to disable running the unit tests
(make check) while building the package.

http://rpm.org/wiki/PackagerDocs/ConditionalBuilds
(cherry picked from commit 87dc14476b)
2016-02-02 19:02:40 +01:00
Dan Winship
4037b6c8bb contrib: sync fedora/rpm/NetworkManager.spec
We're building the plugins on s390 these days

(cherry picked from commit 20a56fa9a2)
2016-02-02 19:02:40 +01:00
Thomas Haller
d6f2e6b0dd contrib/rpm: remove NetworkManager-devel package
NetworkManager-devel package contained development headers that
are useful without libnm-glib and without glib. But it is also
based on the legacy libnm-glib library as it has headers like
"/usr/include/NetworkManager/NetworkManager.h".

A glib-free devel package based on the new libnm library would
be needed to provide "/usr/include/libnm/nm-dbus-interface.h".

But that would amount to 4 devel packages. Instead, just move
the content of NetworkManager-devel into NetworkManager-glib-devel
package.

Note that NetworkManager-devel already contained several truely
libnm-glib dependent files, like the vala bindings (which require
libnm-glib). So that was another bug in the packaging and is fixed
by moving it all to NetworkManager-glib-devel.

https://bugzilla.gnome.org/show_bug.cgi?id=755938
(cherry picked from commit e01c17523a)
2016-02-02 19:02:40 +01:00
Lubomir Rintel
1a0850934b contrib/rpm: sync from Fedora git
(cherry picked from commit de5d98197f)
2016-02-02 19:02:40 +01:00
Thomas Haller
162dd7874f contrib/rpm: add comment to NetworkManager.conf about debug logfiles
(cherry picked from commit bb78d14467)
2016-02-02 18:21:08 +01:00
Thomas Haller
fb8ede6525 contrib/rpm: add --no-build option to build_clean.sh
Option to skip building the source package. Useful if you already
have a source tarball from a previous run.

(cherry picked from commit 3b01d25561)
2016-02-02 18:19:48 +01:00
Beniamino Galvani
b0d84e84fa device/team: fix tiny memory leak
Fixes: 10f9b6c58b
(cherry picked from commit dc4d0a4200)
2016-02-01 22:32:20 +01:00
Thomas Haller
5d4d0fd7e6 connectivity: fix calling parent dispose()
(cherry picked from commit 2bf4960ec1)
2016-02-01 13:26:04 +01:00
Dan Williams
cb54c14cd5 platform: ignore permanent MAC addresses of all ones (FF:FF:FF:FF:FF:FF)
Drivers are stupid, and just like the platform ignores an all zeros
permanent address, so should it ignore all ones.

NetworkManager[509]: <debug> [1453743778.854919] [devices/nm-device.c:8885] nm_device_update_hw_address(): [0x190370] (eth0): hardware address now 86:18:52:xx:xx:xx
NetworkManager[509]: <debug> [1453743778.855438] [devices/nm-device.c:9138] constructed(): [0x190370] (eth0): read initial MAC address 86:18:52:xx:xx:xx
NetworkManager[509]: <debug> [1453743778.861602] [devices/nm-device.c:9148] constructed(): [0x190370] (eth0): read permanent MAC address FF:FF:FF:FF:FF:FF

(cherry picked from commit d442dcd174)
2016-01-29 17:41:16 -06:00
Lubomir Rintel
38ad5c9f3a ifcfg,keyfile: fix temporary file races (CVE-2016-0764)
Two of these raised Coverity's eyebrows.

CID 59389 (#1 of 1): Insecure temporary file (SECURE_TEMP)
5.  secure_temp: Calling mkstemp without securely setting umask first.

CID 59388 (#1 of 1): Insecure temporary file (SECURE_TEMP)
1.  secure_temp: Calling mkstemp without securely setting umask first.

Last one raised mine.

When a connection is edited and saved, there's a small window during which and
unprivileged authenticated local user can read out connection secrets (e.g. a
VPN or Wi-Fi password). The security impact is perhaps of low severity as
there's no way to force another user to save their connection.

(cherry picked from commit 60b7ed3bdc)
2016-01-29 20:36:18 +01:00
Dan Williams
f2773e525c wwan: retry connect on some errors and save them for log messages
First, cb751012a2 mistakenly converted the
act_stage_context_step() in connect_ready() to connect_context_clear()
instead of connect_context_step().  This would cause the IP Type retry
logic to fail and no further types to be tried.  It also throws
away the ctx->first_error and causes all errors that MM returns on the
connect attempt to be dropped on the floor.

Second, not all errors should cause an advance to the next IP Type,
since some errors aren't related to it.  Specifically, MM_CORE_ERROR_RETRY
when using Simple.Connect() means that a timeout was reached
in the internal connect logic, not a modem or network error.  In
that case, try the connect again with the same IP Type before advancing
to the next type.

Fixes: cb751012a2

Tested-by: Ladislav Michl <ladis@linux-mips.org>
Tested-by: Tore Anderson <tore@fud.no>
(cherry picked from commit 1cf4727766)
2016-01-28 12:28:21 -06:00
Thomas Haller
30bedd0b39 bluez: own reference to connection provider in NMBluezDevice
(cherry picked from commit 53233bb04c)
2016-01-27 14:23:34 +01:00
Thomas Haller
81a9d84d60 bluez: own reference to connection provider in NMBluezManager
(cherry picked from commit 94dcffc475)
2016-01-27 14:23:33 +01:00
Thomas Haller
c354f30f57 bluez: fix invoking parent dispose() function in NMBluezManager
Fixes: bf5a6ad443
(cherry picked from commit 7cc54d5bb9)
2016-01-27 14:23:32 +01:00
Thomas Haller
5ab7e899aa libnm-glib: fix another memory leak around update_permissions()
This time in init_async_got_permissions().

Thereby, just use gs_unref_hash and gs_free_error for cleanup.

(cherry picked from commit 8029f59e4f)
2016-01-26 12:35:16 +01:00
Thomas Haller
1deae2a284 libnm-glib: fix crash due to uninitalized pointer in get_permissions_reply()
If the D-Bus call failed with error, @permissions would stay uninitialized.

Fixes: f2399a6976
Fixes: 808f012603

(cherry picked from commit e0601d501a)
2016-01-26 12:08:19 +01:00
Dan Williams
808f012603 libnm-glib: fix leak in get_permissions_reply()
(cherry picked from commit f2399a6976)
2016-01-26 12:07:55 +01:00
Dan Williams
d4b15684f3 wwan: rework connection flow to send PIN earlier and fix autoconnect
Modems often don't expose all the required properties until they have
been unlocked, and that includes the IP types supported by the modem.

With an autoconnect WWAN connection where the SIM requires a PIN, there
were two problems:

1) the PIN is a secret and we don't have it until it's explicitly requested
during the activation process, so we cannot gate GSM connection availability
on whether a PIN is present since this happens long before we request secrets

2) when the modem is locked it may not report the supported IP types, which
caused an auto-activation to fail early becuase IP compatibility is checked
before the PIN is sent to the modem

Rework connection activation flow into a series of concrete steps, where the
PIN is sent to the modem if required, and only after the modem is actually
unlocked does the connection proceed.  This does mean that any connection
marked 'autoconnect' can theoretically enable a PIN-locked modem even if
the connection has no PIN defined, but there's no good way around that.
NetworkManager would activate the connection

(cherry picked from commit cb751012a2)
2016-01-25 12:40:08 -06:00
Dan Williams
7878e91b77 core: only run availability recheck transition if required
Device subclasses can call nm_device_recheck_available() at any time,
and the function would change the device's state to UNKNOWN in cases
where the device was available already.  For WWAN devices, availability
is rechecked every time the modem state changes, resulting in:

NetworkManager[28919]: <info>  (ttyUSB4): modem state changed, 'disabled' --> 'enabling' (reason: user-requested)
NetworkManager[28919]: <debug> [1445538582.116727] [devices/nm-device.c:2769] recheck_available(): [0x23bd710] (ttyUSB4): device is available, will transition to unknown
NetworkManager[28919]: <info>  (ttyUSB4): modem state changed, 'enabling' --> 'searching' (reason: user-requested)
NetworkManager[28919]: <debug> [1445538582.776317] [devices/nm-device.c:2769] recheck_available(): [0x23bd710] (ttyUSB4): device is available, will transition to unknown

(cherry picked from commit d9c6b9f3dd)
2016-01-25 12:40:08 -06:00
Thomas Haller
859099f353 systemd: order NetworkManager.serivce after network-pre.target
https://bugzilla.gnome.org/show_bug.cgi?id=761001
(cherry picked from commit 9c3187027c)
2016-01-23 16:57:56 +01:00
Beniamino Galvani
936a70bf4a manager: cleanup active connections upon exit
When connection sharing is enabled, the removal of iptables rules is
delegated to the NMActRequest destructor; but for this to work it is
required that the object is properly dereferenced upon NM termination.

Clean up the active connections which are in DEACTIVATED state when
quitting, so that they are unexported and destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=692673
(cherry picked from commit e3a6ba6756)
2016-01-23 10:19:43 +01:00
Beniamino Galvani
eadb0051dc core: list iptables sharing rules in the right order
The rules were added to the list using g_slist_append() and then
applied one at time using "iptables --insert" which puts them at the
beginning of the chain, reversing the initial order.

Instead, list them in the desired order and use g_slist_prepend() to
achieve the same result. This has no functional changes.

(cherry picked from commit 8cba3e046e)
2016-01-23 10:19:39 +01:00
Lubomir Rintel
b95c88284d linux-platform: treat gadget devices as ethernet devices
Also, don't manage them by default. Whatver created it should take care of
management.

(cherry picked from commit c1cf3c25c8)
2016-01-21 15:28:44 +01:00
Thomas Haller
bd27102277 wifi: assert against returning cached NMSupplicantInterface instances
nm_supplicant_manager_iface_get() returning a cached instance leads to
a crash when the first owner releases the object, as no ownership is
transferred.

That was fixed on master by commit f1fba3eb02.
Instead of backporting the entire refactoring (which also asserts against
reuse), just disallow reusing here.

The assertion should not be hit. If it would we need to investigate.
Also, this way the assertion avoids a hard crash.

https://bugzilla.redhat.com/show_bug.cgi?id=1298007
2016-01-21 15:05:03 +01:00
Thomas Haller
69e8b4678d systemd: add "After=dbus.service" to NetworkManager.service
Order NetworkManager after dbus. Otherwise during shutdown, both service are killed
together and possibly NetworkManager can no longer use D-Bus during shutdown. It
will need it however to communicate with VPN plugins and wpa-supplicant.

Related: https://bugs.freedesktop.org/show_bug.cgi?id=89847#c14
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1214466
(cherry picked from commit bf54a5bfba)
2016-01-21 11:01:54 +01:00
Dan Williams
74572aa182 build: remove spurious comma from configure.ac
(cherry picked from commit 701c05ad69)
2016-01-20 12:22:42 -06:00
Thomas Haller
baefcdbade device: clear queued_state callback in dispose
dispose() calls _cleanup_generic_pre() which in turn already calls
nm_device_queued_state_clear(). So we would expect that at the end
of dispose() no queued-state is pending.

However, there there are crashes reports in queued_set_state() with the
device instance already destructed (rh#1270247). Add this check trying
to avoid the crash and closing in on the cause.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1180827
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1270247
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1298009
(cherry picked from commit 76f90812f4)
2016-01-19 13:16:23 +01:00
Beniamino Galvani
8213479247 device: merge branch 'bg/device-zero-mac-fix-rh1288110'
https://bugzilla.redhat.com/show_bug.cgi?id=1288110
2016-01-11 14:57:10 +01:00
Beniamino Galvani
8d5eeda5eb device: wait for valid MAC before making ethernet devices available
In certain situations, ethernet links first appear with a zero MAC
address and then the MAC changes some time later. Currently NM does
not deal correctly with this scenario since it initializes wrong
@initial_hwaddr and @permanent_hwaddr on the device and tries to
immediately activate it.

To fix this, initialize the device's addresses only when the MAC
becomes valid and make the device available only at that point.

(cherry picked from commit 92149f223f)
2016-01-11 14:56:48 +01:00
Beniamino Galvani
7296a88c3c device/trivial: split out nm_device_update_initial_hw_address()
(cherry picked from commit 2a0a9aa2e4)
2016-01-11 14:56:48 +01:00
Beniamino Galvani
958ac50182 core: simplify generation of default connection for new devices
Instead of using a signal for triggering the generation of a default
connection when the device becomes managed, let the manager wait for a
transition to UNAVAILABLE or DISCONNECTED states.

This partially reverts b3b0b46250 ("device: retry creation of
default connection after link is initialized").

(cherry picked from commit 44789e3291)
2016-01-11 14:56:48 +01:00
Matthew Millar
49107121ab build: fix missing <gio/gio.h> include for "nm-dns-manager.c"
When compiling with

  ./configure \
    --without-libsoup \
    --disable-concheck \
    --with-resolvconf=/xx/yy/resolvconf

we must explicitly include <gio/gio.h>.

https://bugzilla.gnome.org/show_bug.cgi?id=760447

[thaller@redhat.com: original patch modified to always include gio.h]
2016-01-11 12:53:34 +01:00
Thomas Haller
288eb02280 build: minor change creating symlinks in install-exec-hook for nmtui
(cherry picked from commit 39d6976e89)
2016-01-07 17:42:51 +01:00
Michael Biebl
c96b1ca343 build: use symlinks for nmtui
Make /usr/bin/nmtui-* symbolic links to /usr/bin/nmtui.

https://bugzilla.gnome.org/show_bug.cgi?id=759824
(cherry picked from commit 39fc73eed9)
2016-01-07 17:42:50 +01:00
Thomas Haller
a213db5113 wifi: merge branch 'th/wifi-device-creation-bgo760154'
https://bugzilla.gnome.org/show_bug.cgi?id=760154

(cherry picked from commit 06e0595401)
2016-01-06 22:41:00 +01:00
Thomas Haller
7a3940a027 wifi: refactor creation of NMDeviceWifi/NMDeviceOlpcMesh to initialize in constructed() method
(cherry picked from commit 1a835ad3d0)
2016-01-06 22:37:18 +01:00
Thomas Haller
ccd2ec7b34 wifi: don't fail construction of NMDeviceWifi in constructor
We cannot abort the construction of a GLib object instance
like we did for NMDeviceWifi and NMDeviceOlpcMesh when
nm_platform_wifi_get_capabilities() failed.

Instead, check the capabilities first (in the factory method)
and only create the object instance when the device can be handled.

https://bugzilla.gnome.org/show_bug.cgi?id=760154
(cherry picked from commit 044de4cea2)
2016-01-06 22:34:29 +01:00