Commit graph

14807 commits

Author SHA1 Message Date
Thomas Haller
953300d48a device: don't cancel queued_ip4_config_id when scheduling activate_stage5_ip4_config_commit
Since commit a47c13a7a2, update_ip4_config() re-schedules
itself in case activate_stage5_ip4_config_commit is pending. Thus, there is no need to
cancel any queued queued_ip4_config_id.

Also as that does not properly fix the issue unlike a47c13a7a.

(cherry picked from commit 73cec4e912)
2016-05-05 12:05:23 +02:00
Thomas Haller
1f04cef99d device: ensure not rescheduling IP config changed on initial capture
update_ip4_config() and update_ip6_config() are called from nm_device_capture_initial_config().
At that point, we don't expect any activation-source scheduled, thus the "if" should not
not be hit anyway.

So, this patch should actually make no difference, but it seems clearer
to me. Also, because it would be a bug to re-schedule the idle handler
that is already pending, but from inspecting nm_device_capture_initial_config()
it is not immediately clear that this cannot be the case.

(cherry picked from commit bac06c5ae6)
2016-05-05 12:05:22 +02:00
Thomas Haller
dbc735d3f8 device: add assertions for queued_ip4_config_change() and queued_ip6_config_change()
(cherry picked from commit ec2a21702a)
2016-05-05 12:05:21 +02:00
Thomas Haller
6af508cebd device: refactor clearing @queued_ip4_config_id and @queued_ip6_config_id
(cherry picked from commit b6a92cbdc3)
2016-05-05 12:05:20 +02:00
Thomas Haller
acf9bad08a device,cli: merge branch 'th/reapply-fixes-bgo765848'
https://bugzilla.gnome.org/show_bug.cgi?id=765848

(cherry picked from commit f5ae41656a)
2016-05-03 12:00:05 +02:00
Thomas Haller
81b05ade70 cli: declare external variable nm_cli in <nmcli.h> header
(cherry picked from commit 7752f390c2)
2016-05-03 11:59:35 +02:00
Thomas Haller
325edfb0fe cli: remove unused functions
(cherry picked from commit a9908c012c)
2016-05-03 11:59:35 +02:00
Thomas Haller
4877a76d1c cli: don't allow multiple <ifname> arguments to device-reapply
Just like `nmcli device connect` only allows one argument, don't allow
multiple device arguments for reapply.

Allowing multiple device names makes it more complicated to add
additional options to the command. For example, it would be useful
to have a

    nmcli device reapply eth0 connection id other-connection

but when allowing multiple device names, it gets more complicated in
documentation, command line parsing and bash completion.

Note that the user can achieve a very similar outcome by using the
shell:

    for DEV in eth0 eth1 eth2; do
        nmcli device reapply $DEV &
    done
    wait

argubaly, this doesn't report the exit status properly. To properly
handle that would require more effort. Also, it is somewhat less
efficient, but well.

This is an API change, however it is very new API that probably nobody
is using much. Also, the documentation (man nmcli) didn't mention the
possibility to pass multiple device names.

(cherry picked from commit d742ea7817)
2016-05-03 11:59:35 +02:00
Thomas Haller
fb67273dc5 cli: refactor cleanup in do_device_reapply()
(cherry picked from commit b217b68b80)
2016-05-03 11:59:35 +02:00
Thomas Haller
4a1b7f40c6 device: improve error message for failure to reapply
(cherry picked from commit c71bd9df82)
2016-05-03 11:59:35 +02:00
Thomas Haller
16d0cc332a device: fix check for invalid keys during reapply
Was completely wrong and failed to find first_invalid_key.
As a consequence, hit the assertion at the end.

(cherry picked from commit a51b947f25)
2016-05-03 11:59:35 +02:00
Thomas Haller
ba3f9879dc device: clear secrets from applied connection during reapply
The applied connection must have no secrets. It's unclear whether
there are any secrets at this point (possibly). To be sure, clear them.

(cherry picked from commit b52d25e129)
2016-05-03 11:59:35 +02:00
Thomas Haller
ffb757083c device: allow reapply with a different connection.uuid
(cherry picked from commit ec840b0331)
2016-05-03 11:59:35 +02:00
Thomas Haller
7c135d57d0 device: allow reapply if connection.id differs
(cherry picked from commit ad38a1acb8)
2016-05-03 11:59:35 +02:00
Thomas Haller
3f9fdcbca2 utils: refactor _nm_utils_ascii_str_to_int64()
To allow for trailing whitespace, we don't need to copy and trunacate
the input string. g_ascii_strtoll() conveniently returns the location via
the endptr argument.

(cherry picked from commit 05478e4f4c)
2016-05-03 11:59:35 +02:00
Francesco Giudici
12f0d22366 cli: remove version check against NM
When performing NM package upgrade the new version of nmcli will be immediately
available while NM daemon will not, as it would not restart in order to avoid
to disrupt connectivity. This could create issues with tools leveraging
on nmcli output (till reboot). As apart from this case it is very unlikely
that a user can have this nmcli / NM daemon version mismatch situation,
the check could cause more harm than benefit in real user case
scenarios.

https://bugzilla.redhat.com/show_bug.cgi?id=1291785
(cherry picked from commit 3c67a1ec5e)
2016-05-02 10:45:39 +02:00
Beniamino Galvani
71270b8295 device: postpone updates of IP configuration when a commit is pending
When a new dynamic configuration is received, it is stored in a member
of private structure (e.g. @dhcp6_ip6_config) and a commit is
scheduled. Before the commit is executed, an update_ipx_config() could
be called and it would change the configuration before it is
committed.

This race condition causes failures in assigning the addresses
received through DHCPv6 when the internal client is used (but
potentially other clients and methods are affected).

To fix it, postpone updates of IP configurations when a commit is
already pending.

(cherry picked from commit a47c13a7a2)
2016-04-29 17:28:37 +02:00
Thomas Haller
389102ad7e core,libnm: merge branch 'th/module-close'
(cherry picked from commit 69863204e2)
2016-04-29 15:58:12 +02:00
Thomas Haller
97c15ed358 settings: don't unload settings plugins on failure
Also, registering a weak-pointer to close the module that
was just made as resident is pointless.

(cherry picked from commit c6a92224a4)
2016-04-29 15:56:20 +02:00
Thomas Haller
3497dce786 device: don't unload device plugins on failure
(cherry picked from commit cd39cbfc1f)
2016-04-29 15:56:19 +02:00
Thomas Haller
8ecb915131 libnm/vpn: don't close the VPN plugin library on cleanup
Closing the library will interfere badly as the glib types cannot be
unregistered. We must leak the library handle.

Switch to dlopen() instead of g_module_open(), because the former
supports RTLD_NOLOAD. This is useful for two reasons:

  - checking the file prior loading only makes any sense when
    dlopen() would actually load a file anew.

  - if the library was loaded before, we want to return the handle.
    On the other hand, if the library was not loaded, we leak the
    handle.

Thereby, refactor the code from if-else blocks to return-early, because
the function nicely does individual steps and if one fails just error
out.

(cherry picked from commit 264189e756)
2016-04-29 15:56:13 +02:00
Lubomir Rintel
9ecead6081 ifupdown: avoid calloc()
It can return NULL and makes Coverity upset:

CID 75369 (#1 of 1): Dereference null return value (NULL_RETURNS)
4.  dereference: Dereferencing a null pointer ret.

(cherry picked from commit 76844c65d6)
2016-04-29 13:14:56 +02:00
Lubomir Rintel
544827a8d1 ifnet: fix error handling
CID 76722 (#1 of 1): Logically dead code (DEADCODE)
dead_error_line: Execution cannot reach this statement:
g_set_error(error, nm_setti....

(cherry picked from commit 2e563d9c84)
2016-04-29 13:14:55 +02:00
Beniamino Galvani
62e7bd6b12 cli: handle device failure when activating
We might receive the update of the device state to FAILED when the
active connection is still in ACTIVATING. Handle this case properly.

(cherry picked from commit a06487a6ae)
2016-04-29 11:18:26 +02:00
Lubomir Rintel
52fc28893f linux-platform: re-read the link type if the name changed
For some device types, we use the DEVTYPE from sysfs to determine the
link type. However, the way we read from sysfs can race with device
renames and we could miss the chance to read DEVTYPE correctly.

This doesn't completely fix the sysfs race, but cures the boot-time race
with systemd renaming the device while we are initializing the link.

We ideally should use GUDev for all sysfs accesses, but that would need
some more work for this particular case as currently we need the link type
before we have an udev device instance.

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

Co-Authored-By: Beniamino Galvani <bgalvani@redhat.com>
(cherry picked from commit dd4d8b24da)
2016-04-29 10:41:58 +02:00
Thomas Haller
459293e501 libnm/vpn: don't leak editor-plugin if nm_vpn_editor_plugin_load() fails
(cherry picked from commit c1147fc71b)
2016-04-28 16:45:16 +02:00
Thomas Haller
c8e2b38cbf libnm: store NMConnectionPrivate via g_object_set_qdata()
g_object_get_data() and g_object_get_qdata() end up to be identical,
except that g_object_get_data() also requires to intern the string
on every lookup (which involves a hash lookup and locking).

(cherry picked from commit d350d72a2e)
2016-04-28 16:45:16 +02:00
Francesco Giudici
863f2ffb4d settings: add notification after connections load
The notification was missing from a long time. The issue has been exposed only
now due to the c57e5a6b66 fix which properly
implemented the "startup-complete" notification substituting out of place code
which masked the bug.

(cherry picked from commit 19350c8975)
2016-04-28 16:45:16 +02:00
Beniamino Galvani
5fa3c1230f device/ethernet: ignore s390 'portname' attribute when not set
The 'portname' sysfs attribute of s390 devices is deprecated since
kernel 4.4 and always set to 'no portname required'. But even on older
kernels such value must be interpreted as an unset portname and thus
ignored.

https://bugzilla.redhat.com/show_bug.cgi?id=1327204
(cherry picked from commit 0589e659ca)
2016-04-28 09:33:37 +02:00
Thomas Haller
1e1d5b24fd device: merge branch 'th/default-wired-connection-stable-uuid-bgo765464'
https://bugzilla.gnome.org/show_bug.cgi?id=765464

(cherry picked from commit c17b4ba6c7)
2016-04-26 12:59:31 +02:00
Thomas Haller
7ede2a7a63 device: generate stable UUID for default-wired-connection
Generate a stable connection UUID for the default-wired-connection.
Otherwise, on every reboot, the UUID changes although the generated
connection is the same.

But also hash into the UUID the machine-id, the device name and the
hardware address. So, the UUID is only the same if the connection is
identical in every aspect.

Also, the UUID is used as Network_ID for the stable-privacy address
generation mode. It is bad to re-create different UUIDs on every boot
as it causes different addresses.

(cherry picked from commit 89cf9429a7)
2016-04-26 12:59:20 +02:00
Thomas Haller
fd82e00f2f core: use nm_utils_machine_id_read() in "nm-dhcp-client.c"
(cherry picked from commit 54233b6f3b)
2016-04-26 12:59:20 +02:00
Thomas Haller
33d75792c3 core: add nm_utils_machine_id_read() and parse() util
(cherry picked from commit f137af2e23)
2016-04-26 12:59:20 +02:00
Thomas Haller
de22249183 core: add nm_utils_get_secret_key() util
(cherry picked from commit d787b8c827)
2016-04-26 12:59:20 +02:00
Dan Williams
50dc5fecab dhcp/systemd: actually hook up information-only mode
Fixes: 89d1e46615
Tested-by: Celti on IRC
(cherry picked from commit 8c8a577a30)
2016-04-25 17:01:21 -05:00
Thomas Haller
63ed5ab7b4 libnm/doc: fix documentation of NMSettingIP6Config:addr-gen-mode
The value cannot be unset. It must be set to one of the two currently
supported values.

(cherry picked from commit bad9becf99)
2016-04-25 16:53:42 +02:00
Lubomir Rintel
3ad7be3e6a bluetooth: add a missing GError initializer 2016-04-25 16:06:31 +02:00
Thomas Haller
b69ce27688 settings: merge branch 'th/settings-read-hostname'
(cherry picked from commit 77f287818c)
2016-04-25 15:29:21 +02:00
Thomas Haller
9f6dd5afb7 settings: refactor read_hostname_*()
(cherry picked from commit 316359d8b6)
2016-04-25 15:28:49 +02:00
Thomas Haller
eb4e694565 settings: cleanup #if blocks for HOSTNAME_PERSIST_*
(cherry picked from commit 79d85ca180)
2016-04-25 15:28:48 +02:00
Patrick J. Volkerding
6e86ad8e0f settings: fix Slackware hostname setting
https://mail.gnome.org/archives/networkmanager-list/2016-April/msg00075.html
(cherry picked from commit 1a714ee5e6)
2016-04-25 15:28:47 +02:00
Thomas Haller
6558ebae10 lldp: fix crash in nm_device_update_dynamic_ip_setup() due to uninitialized @error
Fixes: 07a9364d9c
(cherry picked from commit ee3ac13e50)
2016-04-25 12:09:07 +02:00
Lubomir Rintel
cb3fab7eb3 tools: add forgotten file to dist
Fixes: f15c412015
(cherry picked from commit 8280ab69f1)
2016-04-23 20:26:16 +02:00
Lubomir Rintel
f15c412015 docs: include the D-Bus enums reference with the API documentation
Otherwise the types links would be dangling or resolved to slightly
irrelevant documentation in libnm or completely irrelevant documentation
in libnm-util.

(cherry picked from commit db6ebe003d)
2016-04-22 17:14:14 +02:00
Lubomir Rintel
523296a2f1 libnm-core: don't link to NMDevice type from the D-Bus spec
It isn't right in that context -- NMDevice is a libnm-core object,
not a bus object. In rendered documentation this would generate
a dangling link.

(cherry picked from commit c850868faf)
2016-04-22 17:14:13 +02:00
Thomas Haller
4f06ae603e auth: allow failures to read process start_time from /proc/$PID/stat with hidepid
When mounting /proc with hidepid, we might fail to read the
start-time of the process from /proc/$PID/stat. In this case,
we should just accept a start-time of zero.

On the other side of authentication, polkit should accept a zero
start-time too.

nm_utils_get_start_time_for_pid() has other uses in NetworkManager,
mostly when killing a process from a PIDFILE or during
nm_utils_kill_process_sync(). In both these cases, this will only
succeed if we try to kill a process that also runs a root.

For processes started by the current instance, we don't care about the
PIDFILE and use nm_utils_kill_child_?sync() -- so there is no problem
with hidepid there.

https://bugzilla.gnome.org/show_bug.cgi?id=764502
(cherry picked from commit 3d505b3f87)
2016-04-22 14:42:51 +02:00
Thomas Haller
885bd8d4d2 dns: merge branch 'th/dnsmasq-dbus-bgo765043'
https://mail.gnome.org/archives/networkmanager-list/2016-March/msg00144.html
https://bugzilla.gnome.org/show_bug.cgi?id=765043

(cherry picked from commit 497a8aa5c6)
2016-04-22 13:41:03 +02:00
Thomas Haller
3341365e29 dns: avoid using global "/etc/dnsmasq.conf" config for dnsmasq
Pass an empty configuration file otherwise dnsmasq loads
"/etc/dnsmasq.conf".

We already allow for a config.d/ directory "/etc/NetworkManager/dnsmasq.d"
to allow the user to overwrite configuration. We don't want to consider
the global config file.

Fixes: 497a8aa5c6
(cherry picked from commit 3d3f71acec)
2016-04-22 13:40:17 +02:00
Thomas Haller
99168f6009 dns: various cleanup for new dnsmasq's D-Bus support
(cherry picked from commit baaec81aea)
2016-04-22 13:39:23 +02:00
Mathieu Trudel-Lapierre
08673a623f dns: use DBus to make dnsmasq nameserver changes
Use DBus to make nameserver updates rather than restarting the dnsmasq binary
again and again.

Signed-off-by: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>

https://mail.gnome.org/archives/networkmanager-list/2016-March/msg00144.html
(cherry picked from commit 18282df0aa)
2016-04-22 13:39:23 +02:00