Commit Graph

22716 Commits

Author SHA1 Message Date
Thomas Haller
355cbbfb5c core: assert for valid NM_DEVICE_DEVICE_TYPE setting
(cherry picked from commit 7dd44d6dc8)
2019-03-11 16:43:20 +01:00
Lubomir Rintel
4251f4e476 all: codespell fixes
Codespel run with the same arguments as described in
commit 58510ed566 ('docs: misc. typos pt2').

(cherry picked from commit bf0c4e6ac2)
2019-03-11 12:03:46 +01:00
Lubomir Rintel
bf0c4e6ac2 all: codespell fixes
Codespel run with the same arguments as described in
commit 58510ed566 ('docs: misc. typos pt2').
2019-03-11 12:01:44 +01:00
Beniamino Galvani
25d1e5f51c merge: branch 'bg/restore-ipv6-on-up-rh1548237'
https://bugzilla.redhat.com/show_bug.cgi?id=1548237
(cherry picked from commit 766864c5de)
2019-03-11 10:31:50 +01:00
Beniamino Galvani
97de744afd device: restore IPv6 addresses when the link comes up
When the link goes down the kernel removes IPv6 addresses from the
interface. In update_ext_ip_config() we detect that addresses were
removed externally and drop them from various internal
configurations. Don't do that if the link is down so that those
addresses will be restored again on link up.

(cherry picked from commit 505d2adbc2)
2019-03-11 10:31:30 +01:00
Beniamino Galvani
e096742809 core: allow ignoring addresses when intersecting ip configs
Add a new argument to nm_ip_config_* helpers to also ignore addresses
similarly to what we already do for routes. This will be used in the
next commit; no change in behavior here.

(cherry picked from commit 39b7257208)
2019-03-11 10:31:29 +01:00
Beniamino Galvani
058bf25ac4 device: reset the ipv6 DAD counter when the link comes up
We can detect false DAD failures if the link goes down. Don't try to
prevent them, but just reset the counter if the link goes down.

(cherry picked from commit 056470a4ba)
2019-03-11 10:31:28 +01:00
Beniamino Galvani
d159a1153a device: don't try to add IPv6LL address to a down interface
When the interface is down DAD failures becomes irrelevant and we
shouldn't try to add a link-local address even if the configuration
contains other IPv6 addresses.

(cherry picked from commit 72385f363c)
2019-03-11 10:31:26 +01:00
Beniamino Galvani
4753ea38c3 core: fix _nm_ip4_config_intersect_helper()
Fixes: 8f07b3ac4f ('ip-config: add @intersect_routes argument to intersect functions')
(cherry picked from commit d86dd9a0fe)
2019-03-11 10:31:25 +01:00
Beniamino Galvani
766864c5de merge: branch 'bg/restore-ipv6-on-up-rh1548237'
https://bugzilla.redhat.com/show_bug.cgi?id=1548237
2019-03-11 10:18:50 +01:00
Beniamino Galvani
505d2adbc2 device: restore IPv6 addresses when the link comes up
When the link goes down the kernel removes IPv6 addresses from the
interface. In update_ext_ip_config() we detect that addresses were
removed externally and drop them from various internal
configurations. Don't do that if the link is down so that those
addresses will be restored again on link up.
2019-03-09 15:31:46 +01:00
Beniamino Galvani
39b7257208 core: allow ignoring addresses when intersecting ip configs
Add a new argument to nm_ip_config_* helpers to also ignore addresses
similarly to what we already do for routes. This will be used in the
next commit; no change in behavior here.
2019-03-09 15:30:22 +01:00
Beniamino Galvani
056470a4ba device: reset the ipv6 DAD counter when the link comes up
We can detect false DAD failures if the link goes down. Don't try to
prevent them, but just reset the counter if the link goes down.
2019-03-09 15:27:54 +01:00
Beniamino Galvani
72385f363c device: don't try to add IPv6LL address to a down interface
When the interface is down DAD failures becomes irrelevant and we
shouldn't try to add a link-local address even if the configuration
contains other IPv6 addresses.
2019-03-09 15:25:47 +01:00
Beniamino Galvani
d86dd9a0fe core: fix _nm_ip4_config_intersect_helper()
Fixes: 8f07b3ac4f ('ip-config: add @intersect_routes argument to intersect functions')
2019-03-09 15:25:43 +01:00
Lubomir Rintel
4d4b3fc8b5 wwan/ofono: pass the right argument to manager proxy callback
Otherwise it will be dereferencing NULL when invoked.

Fixes: 58712c9546 ('ofono: take D-Bus proxy for ConnectionManager asynchronously')

https://github.com/NetworkManager/NetworkManager/pull/313
(cherry picked from commit 90fe78eb7f)
2019-03-08 16:51:50 +01:00
Lubomir Rintel
90fe78eb7f wwan/ofono: pass the right argument to manager proxy callback
Otherwise it will be dereferencing NULL when invoked.

Fixes: 58712c9546 ('ofono: take D-Bus proxy for ConnectionManager asynchronously')

https://github.com/NetworkManager/NetworkManager/pull/313
2019-03-08 13:40:18 +01:00
Frédéric Danis
9a71d7d273 tests: Fix variant_from_dbus() for arrays of UInt32
Using test-networkmanager-servic.py, I get the following error when
trying to add manual config with a dns address:

    Error: g-io-error-quark: Traceback (most recent call last):
      File "/usr/lib/python2.7/dist-packages/dbus/service.py", line 707, in _message_cb
        retval = candidate_method(self, *args, **keywords)
      File "tools/test-networkmanager-service.py", line 1727, in AddConnection
        return self.add_connection(con_hash)
      File "tools/test-networkmanager-service.py", line 1731, in add_connection
        con_inst = Connection(self.c_counter, con_hash, do_verify_strict)
      File "tools/test-networkmanager-service.py", line 1601, in __init__
        NmUtil.con_hash_verify(con_hash, do_verify_strict=do_verify_strict)
      File "tools/test-networkmanager-service.py", line 497, in con_hash_verify
        BusErr.raise_nmerror(e)
      File "tools/test-networkmanager-service.py", line 419, in raise_nmerror
        raise e
    Exception: Unsupported value ipv4.dns = dbus.Array([dbus.UInt32(168430090L), dbus.UInt32(218893066L)], signature=dbus.Signature('u'), variant_level=1) (Cannot convert array element to type 'u': Must be number, not Variant)

https://mail.gnome.org/archives/networkmanager-list/2019-March/msg00013.html
2019-03-07 22:48:14 +01:00
Thomas Haller
7dd44d6dc8 core: assert for valid NM_DEVICE_DEVICE_TYPE setting 2019-03-07 22:40:13 +01:00
Lubomir Rintel
99abceb58f utils: obey modprobe blacklist
If the user blacklisted a module we should not override their choice.

https://github.com/NetworkManager/NetworkManager/pull/311
(cherry picked from commit 9bcd634cbf)
2019-03-07 22:31:04 +01:00
Lubomir Rintel
f2a5b6336d contrib/checkpatch: check that we refer to commits properly
(cherry picked from commit f8578ddc2e)
2019-03-07 22:29:41 +01:00
Thomas Haller
b537de3603 libnm,core: merge branch 'benzea/fix-wifi-p2p-device-type'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/134

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/95

(cherry picked from commit e46e5879ea)
2019-03-07 22:26:36 +01:00
Benjamin Berg
6b2aaba6df libnm: Fix reporting of unknown device types
nm_device_get_device_type would report the device type as it was send on
DBus, while fetching the property would mean that only a known device
types is reported.

Make both results consistent by coercing in nm_device_get_device_type
rather than when setting the property.

(cherry picked from commit a6a185ba00)
2019-03-07 22:26:20 +01:00
Benjamin Berg
2d547059dc core,wifi-p2p: Fix Wi-Fi P2P device type
The device type was set to the GType rather than a new value in the
NMDeviceType enum.

Add the corresponding enum entry, fix the device type and set the
routing priority to the same value as generic devices.

(cherry picked from commit 8d9365a973)
2019-03-07 22:26:20 +01:00
Thomas Haller
f9d7712e62 wireguard: merge branch 'th/wireguard-import'
https://github.com/NetworkManager/NetworkManager/pull/304

(cherry picked from commit bb25a1c805)
2019-03-07 22:23:17 +01:00
Thomas Haller
7864bb84ee wireguard: update TODO list for WireGuard devices
(cherry picked from commit 3990c92fbf)
2019-03-07 22:22:39 +01:00
Lubomir Rintel
bf365e9762 clients/tests: add wireguard import tests
(cherry picked from commit c152ca37ef)
2019-03-07 22:22:39 +01:00
Thomas Haller
a6ee43d1c1 cli/wireguard: add import functionality for WireGuard
Support importing ".conf" files as `wg-quick up` supports it.

`wg-quick` parses several options under "[Interface]" and
passes the remainder to `wg setconf`.

The PreUp/PreDown/PostUp/PostDown options are of course not supported.

"Table" for the moment behaves different.

(cherry picked from commit a3a8583c31)
2019-03-07 22:22:39 +01:00
Thomas Haller
0d178a968d libnm: rename and expose nm_utils_base64secret_decode() in libnm
A NetworkManager client requires an API to validate and decode
a base64 secret -- like it is used by WireGuard. If we don't have
this as part of the API, it's inconvenient. Expose it.

Rename it from _nm_utils_wireguard_decode_key(), to give it a more
general name.

Also, rename _nm_utils_wireguard_normalize_key() to
nm_utils_base64secret_normalize(). But this one we keep as internal
API. The user will care more about validating and decoding the base64
key. To convert the key back to base64, we don't need a public API in
libnm.

This is another ABI change since 1.16-rc1.

(cherry picked from commit e46ba01867)
2019-03-07 22:22:39 +01:00
Thomas Haller
506a59b62e libnm: fix return value for nm_wireguard_peer_append_allowed_ip()
According to documentation, this returns a boolean indicating whether
the value is valid. Previously, it was indicating whether the instance
was modified.

Together with the @accept_invalid argument, both behaviors make some
sense. Change it, because that is also how the other setters behave.

(cherry picked from commit f3ac8c6fe8)
2019-03-07 22:22:39 +01:00
Thomas Haller
f617d5e8b4 libnm: change nm_wireguard_peer_set_endpoint() API to allow validation
This is an API break since 1.16-rc1.

Similar to previous commit.

(cherry picked from commit 8ae9aa2428)
2019-03-07 22:22:39 +01:00
Thomas Haller
6452d2d0e5 libnm: change nm_wireguard_peer_set_public_key() API to allow validation
This is an API break since 1.16-rc1.

Similar to previous commit.

(cherry picked from commit 7962653918)
2019-03-07 22:22:39 +01:00
Thomas Haller
7682826229 libnm: change nm_wireguard_peer_set_preshared_key() API to allow validation
This is an API break since 1.16-rc1.

The functions like _nm_utils_wireguard_decode_key() are internal API
and not accessible to a libnm user. Maybe this should be public API,
but for now it is not.

That makes it cumbersome for a client to validate the setting. The client
could only reimplement the validation (bad) or go ahead and set invalid
value.

When setting an invalid value, the user can afterwards detect it via
nm_wireguard_peer_is_valid(), but at that point, it's not clear which
exact property is invalid.

First I wanted to keep the API conservative and not promissing too much.
For example, not promising to do any validation when setting the key.
However, libnm indeed validates the key at the time of setting it
instead of doing lazy validation later. This makes sense, so we can
keep this promise and just expose the validation result to the caller.

Another downside of this is that the API just got more complicated.
But it not provides a validation API, that we previously did not have.

(cherry picked from commit d7bc1750c1)
2019-03-07 22:22:39 +01:00
Thomas Haller
4a137f919b cli: fix completion for nmcli connection import
If we already specified "type" or "file", don't offer it for
completion again.

  $ nmcli connection import type openvpn <TAB>
  file  type

(cherry picked from commit fea0f4a5ea)
2019-03-07 22:22:39 +01:00
Thomas Haller
c5a247c4c0 cli: add nmc_complete_strv() which takes a string array for completion that may contain NULL
This will allow for a convenient calling pattern when some elements
should be printed optionally.

(cherry picked from commit 62b939de4e)
2019-03-07 22:22:39 +01:00
Thomas Haller
a695acfd28 platform/wireguard: fix WGPEER_A_LAST_HANDSHAKE_TIME to use int64 typed timespec structure
The netlink API changed for WireGuard. Adjust for that.

https://git.zx2c4.com/WireGuard/commit/?id=c870c7af53f44a37814dfc76ceb8ad88e290fcd8
(cherry picked from commit 4e399d82ac)
2019-03-07 22:22:39 +01:00
Thomas Haller
028d257537 core: use nm_utils_memeqzero_secret() for printing WireGuard key
(cherry picked from commit 7451a6a649)
2019-03-07 22:22:39 +01:00
Jason A. Donenfeld
92b27a4f88 shared: add nm_utils_memeqzero_secret()
[thaller@redhat.com: the code is effectively key_is_zero() by
  <Jason@zx2c4.com> (LGPL2.1+). I took it into our source tree
  and adjusted it to our style]

(cherry picked from commit 6234e41153)
2019-03-07 22:22:39 +01:00
Thomas Haller
b680d64b47 wireguard: accept all-zero private-key, public-key and preshared-key
- For PSK, an all-zero PSK means to don't do symmetric encryption. As such,
  at first it seems a bit odd when the user sets

      - preshared-key-flags != "4 (not-required)"

      - preshared-key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

  Here the user indicates that a PSK is required, but then provides an
  all-zero PSK that effectively disables it. Still, we should not reject
  such a configuration. This has the benefit that it allos the user for
  being prompted for a PSK, only to disable it by entering the all-zero key.

- For the private-key (and consequently the public-key), "public-key-flags=4"
  is rejected by libnm. A private key is always required for NetworkManager to
  configure the link. However, let's not care for all-zero keys either. If the user
  configures that, we just set that key. It's a valid setting as far as WireGuard
  (the kernel module) is concerned, so we shouldn't reject it.

(cherry picked from commit 78dccb8bb9)
2019-03-07 22:22:39 +01:00
Lubomir Rintel
5bd4f840fd merge: branch 'lr/rpm-madness'
https://github.com/NetworkManager/NetworkManager/pull/310

(cherry picked from commit 3f75d6a9a6)
2019-03-07 22:21:47 +01:00
Lubomir Rintel
eb4515ec93 contrib/rpm: drop ldconfig scriptlets from Fedora 28+
In newer RPM file triggers in glibc package take care of this. While
these scriptlets whould do no harm there, removing them yields a tiny
theoretical performance improvement.

(cherry picked from commit a1e6afc0b2)
2019-03-07 22:21:27 +01:00
Lubomir Rintel
fb0a320d59 Revert "contrib/rpm: use "%ldconfig_scriptlets" for Fedora 30+"
This is utterly pointless. %ldconfig_scriptlets expand to an empty
string on Fedora 28+.

This reverts commit ad836541cb.

(cherry picked from commit 3326a87953)
2019-03-07 22:21:27 +01:00
Lubomir Rintel
d4b5264c61 contrib/rpm: drag in vala tools by the binary
The package's called either "vala" or "vala-tools". Sigh.

(cherry picked from commit c10e61e21d)
2019-03-07 22:21:27 +01:00
Lubomir Rintel
b1b6777d78 Revert "contrib/rpm: require "vala" instead of "vala-tools" for Fedora 30+"
This is just plain ugly.

This reverts commit 0024485b5a.

(cherry picked from commit f8dde7014b)
2019-03-07 22:21:27 +01:00
Lubomir Rintel
995f38b79a Revert "contrib/rpm: remove Group tag for Fedora 30+"
Group tag is not required, though is harmless. We could either remove it,
or keep it, but there's absolutely no excuse for conditionalizing it.

Let's keep it for now, because rpm -i still prints it.

This reverts commit 1feeba6f1a.

(cherry picked from commit 27418b1851)
2019-03-07 22:21:27 +01:00
Thomas Haller
e46e5879ea libnm,core: merge branch 'benzea/fix-wifi-p2p-device-type'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/134

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/95
2019-03-07 22:18:17 +01:00
Benjamin Berg
a6a185ba00 libnm: Fix reporting of unknown device types
nm_device_get_device_type would report the device type as it was send on
DBus, while fetching the property would mean that only a known device
types is reported.

Make both results consistent by coercing in nm_device_get_device_type
rather than when setting the property.
2019-03-07 22:17:40 +01:00
Benjamin Berg
8d9365a973 core,wifi-p2p: Fix Wi-Fi P2P device type
The device type was set to the GType rather than a new value in the
NMDeviceType enum.

Add the corresponding enum entry, fix the device type and set the
routing priority to the same value as generic devices.
2019-03-07 22:17:09 +01:00
Thomas Haller
bb25a1c805 wireguard: merge branch 'th/wireguard-import'
https://github.com/NetworkManager/NetworkManager/pull/304
2019-03-07 17:54:38 +01:00
Thomas Haller
3990c92fbf wireguard: update TODO list for WireGuard devices 2019-03-07 17:54:25 +01:00