summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* platform/netlink: mark nested netlink attribute with NLA_F_NESTEDth/platform-netlink-nested-flagThomas Haller2019-07-231-1/+1
| | | | | | | | | | | | | | | | | | | Kernel 5.2 is starting to add more strict checking for the netlink message. In particular, for certain API it checks now that NLA_F_NESTED flag is set for nested attributes ([1]). Note that libnl3 does not ever set this flag, and since our netlink implementation is copied from there, certain netlink messages are now rejected as invalid. On the other hand, libmnl always adds this flag ([2]). So we should do that as well. In particular, this affects the WireGuard netlink API ([3]). [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b424e432e770d6dd572765459d5b6a96a19c5286 [2] https://git.netfilter.org/libmnl/tree/src/attr.c?id=5937dfcb0185f5cb9cf275992ea701ec4e619d9c#n535 [3] https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/212
* libnm,core: Add ConnectivityCheckUri property and accessorsIain Lane2019-07-228-2/+61
| | | | | | | So that applications like GNOME Shell can hit the same URI to show the captive portal login page. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/209
* device: free temporary typename with iface variableMarco Trevisan (Treviño)2019-07-221-3/+4
| | | | | | | | | | | | To create a disambiguated name for some Bluetooth devices we use its type name with iface, however this value is allocated but never free'd when passed to g_strdup_printf. So use instead a temporary variable and free it once done. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/208 Fixes: 8bbda5cdff0f7f04d3b5863edfdba335dab4c7f8
* libnm,core: support more "arp_validate" bond optionsThomas Haller2019-07-181-2/+2
| | | | | | https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/bonding.txt?id=22051d9c4a57d3b4a8b5a7407efc80c71c7bfb16#n306 https://bugzilla.redhat.com/show_bug.cgi?id=1730793
* settings: add more trace logging for auto-default (default wired) connectionsThomas Haller2019-07-171-0/+11
| | | | | Automatically creating profiles is suprising. Add more logging to understand what's happening.
* device: move check for config "no-auto-default" to NMDevice's ↵Thomas Haller2019-07-172-3/+3
| | | | | | | | new_default_connection() Only NMDeviceEthernet implements new_default_connection(). Anyway, it makes only sense to do this precheck by the caller first, and not by each implementation.
* settings: write tombstones when deleting connection with duplicate files on diskThomas Haller2019-07-171-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create such duplicate files: UUID=0df1bac3-1131-42d4-8893-4492d5424d11 rm -f /etc/NetworkManager/system-connections/x[12] rm -f /{etc,run}/NetworkManager/system-connections/"$UUID".nmmeta printf -v C "[connection]\nuuid=$UUID\ntype=ethernet\nautoconnect=false" echo "$C" > /etc/NetworkManager/system-connections/x1 echo "$C" > /etc/NetworkManager/system-connections/x2 chmod 600 /etc/NetworkManager/system-connections/x[12] touch /etc/NetworkManager/system-connections/x2 ls -l --full-time /etc/NetworkManager/system-connections/x[12] /{etc,run}/NetworkManager/system-connections/"$UUID".nmmeta 2>/dev/null nmcli connection reload nmcli -f all connection show | grep $UUID Now, we have x2 file loaded, and x1 is shadowed. When we delete x2, we probably don't want to delete the hidden x1 file. What previously happend was that when calling nmcli connection delete $UUID the command would hang because the profile wasn't really deleted: <trace> [1563355597.3671] keyfile: commit: deleted "/etc/NetworkManager/system-connections/x2", profile 0df1bac3-1131-42d4-8893-4492d5424d11 (deleted from disk) <trace> [1563355597.3672] settings: storage[0df1bac3-1131-42d4-8893-4492d5424d11,91e13003dd84928f/keyfile]: change event for dropping profile (file "/etc/NetworkManager/system-connections/x2") <trace> [1563355597.3672] settings: update[0df1bac3-1131-42d4-8893-4492d5424d11]: updating connection "x1" (2b798d30d43b0daf/keyfile) <debug> [1563355597.3674] ++ connection 'update connection' (0x55a167693ee0/NMSimpleConnection/"802-3-ethernet" < 0x55a16762e580/NMSimpleConnection/"802-3-ethernet") [/org/freedesktop/NetworkManager/Settings/41]: <debug> [1563355597.3675] ++ connection [ 0x55a16782a400 < 0x55a16762c350 ] <debug> [1563355597.3675] ++ connection.id = 'x1' < 'x2' <info> [1563355597.3680] audit: op="connection-delete" uuid="0df1bac3-1131-42d4-8893-4492d5424d11" name="x1" pid=32077 uid=0 result="success" instead, we need to write a tombstone: <trace> [1563359300.2910] keyfile: commit: deleted "/etc/NetworkManager/system-connections/x2", profile 0df1bac3-1131-42d4-8893-4492d5424d11 (deleted from disk) <trace> [1563359300.2911] settings: storage[0df1bac3-1131-42d4-8893-4492d5424d11,0c12620295ac7f83/keyfile]: change event for dropping profile (file "/etc/NetworkManager/system-connections/> <trace> [1563359300.2912] keyfile: commit: writing nmmeta symlink "/etc/NetworkManager/system-connections/0df1bac3-1131-42d4-8893-4492d5424d11.nmmeta" (pointing to "/dev/null") succeeded <trace> [1563359300.2912] settings: storage[0df1bac3-1131-42d4-8893-4492d5424d11,02a430e6ee52358d/keyfile]: change event for hiding profile (file "/etc/NetworkManager/system-connections/0d> <trace> [1563359300.2912] settings: update[0df1bac3-1131-42d4-8893-4492d5424d11]: delete connection "x2" (02a430e6ee52358d/keyfile) <debug> [1563359300.2914] Deleting secrets for connection /org/freedesktop/NetworkManager/Settings (x2) <trace> [1563359300.2915] dbus-object[13d79ec95177f9eb]: unexport: "/org/freedesktop/NetworkManager/Settings/54" <trace> [1563359300.2916] settings-connection[13d79ec95177f9eb,0df1bac3-1131-42d4-8893-4492d5424d11]: update settings-connection flags to none (was visible) <info> [1563359300.2917] audit: op="connection-delete" uuid="0df1bac3-1131-42d4-8893-4492d5424d11" name="x2" pid=22572 uid=0 result="success" <debug> [1563359300.2918] settings-connection[13d79ec95177f9eb,0df1bac3-1131-42d4-8893-4492d5424d11]: disposing and of course after a `nmcli connection reload` the profile stays hidden: <trace> [1563359412.0355] settings: storage[0df1bac3-1131-42d4-8893-4492d5424d11,e45535721abb092a/keyfile]: change event with connection "x1" (file "/etc/NetworkManager/system-connections/x1") <trace> [1563359412.0355] settings: storage[0df1bac3-1131-42d4-8893-4492d5424d11,02a430e6ee52358d/keyfile]: change event for hiding profile (file "/etc/NetworkManager/system-connections/0df1bac3-1131-42d4-8893-4492d5424d11.nmmeta")
* settings: add nm_settings_plugin_cmp_by_priority() functionThomas Haller2019-07-173-22/+35
| | | | | | Initially I thought I would use this somewhere else. Didn't do so far, but this seems a useful function to have on its own because also NMSettings is concerned about the relative priority of plugins.
* settings: fix prefering newer keyfile/ifcfg-rh files with duplicate UUIDsThomas Haller2019-07-172-4/+4
|
* settings: fix wrong assertion in keyfiles _storages_consolidate()Thomas Haller2019-07-172-2/+2
| | | | The storage may also contain a tombstone, and have no connection to steal.
* settings: merge branch 'th/settings-delegate-storage'Thomas Haller2019-07-1763-3389/+6579
|\ | | | | | | | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1674545 https://bugzilla.gnome.org/show_bug.cgi?id=772414 https://bugzilla.gnome.org/show_bug.cgi?id=744711 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/189
| * settings: rework tracking settings connections and settings pluginsThomas Haller2019-07-1658-3250/+6358
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Completely rework how settings plugin handle connections and how NMSettings tracks the list of connections. Previously, settings plugins would return objects of (a subtype of) type NMSettingsConnection. The NMSettingsConnection was tightly coupled with the settings plugin. That has a lot of downsides. Change that. When changing this basic relation how settings connections are tracked, everything falls appart. That's why this is a huge change. Also, since I have to largely rewrite the settings plugins, I also added support for multiple keyfile directories, handle in-memory connections only by keyfile plugin and (partly) use copy-on-write NMConnection instances. I don't want to spend effort rewriting large parts while preserving the old way, that anyway should change. E.g. while rewriting ifcfg-rh, I don't want to let it handle in-memory connections because that's not right long-term. -- If the settings plugins themself create subtypes of NMSettingsConnection instances, then a lot of knowledge about tracking connections moves to the plugins. Just try to follow the code what happend during nm_settings_add_connection(). Note how the logic is spread out: - nm_settings_add_connection() calls plugin's add_connection() - add_connection() creates a NMSettingsConnection subtype - the plugin has to know that it's called during add-connection and not emit NM_SETTINGS_PLUGIN_CONNECTION_ADDED signal - NMSettings calls claim_connection() which hocks up the new NMSettingsConnection instance and configures the instance (like calling nm_settings_connection_added()). This summary does not sound like a lot, but try to follow that code. The logic is all over the place. Instead, settings plugins should have a very simple API for adding, modifying, deleting, loading and reloading connections. All the plugin does is to return a NMSettingsStorage handle. The storage instance is a handle to identify a profile in storage (e.g. a particular file). The settings plugin is free to subtype NMSettingsStorage, but it's not necessary. There are no more events raised, and the settings plugin implements the small API in a straightforward manner. NMSettings now drives all of this. Even NMSettingsConnection has now very little concern about how it's tracked and delegates only to NMSettings. This should make settings plugins simpler. Currently settings plugins are so cumbersome to implement, that we avoid having them. It should not be like that and it should be easy, beneficial and lightweight to create a new settings plugin. Note also how the settings plugins no longer care about duplicate UUIDs. Duplicated UUIDs are a fact of life and NMSettings must handle them. No need to overly concern settings plugins with that. -- NMSettingsConnection is exposed directly on D-Bus (being a subtype of NMDBusObject) but it was also a GObject type provided by the settings plugin. Hence, it was not possible to migrate a profile from one plugin to another. However that would be useful when one profile does not support a connection type (like ifcfg-rh not supporting VPN). Currently such migration is not implemented except for migrating them to/from keyfile's run directory. The problem is that migrating profiles in general is complicated but in some cases it is important to do. For example checkpoint rollback should recreate the profile in the right settings plugin, not just add it to persistent storage. This is not yet properly implemented. -- Previously, both keyfile and ifcfg-rh plugin implemented in-memory (unsaved) profiles, while ifupdown plugin cannot handle them. That meant duplication of code and a ifupdown profile could not be modified or made unsaved. This is now unified and only keyfile plugin handles in-memory profiles (bgo #744711). Also, NMSettings is aware of such profiles and treats them specially. In particular, NMSettings drives the migration between persistent and non-persistent storage. Note that a settings plugins may create truly generated, in-memory profiles. The settings plugin is free to generate and persist the profiles in any way it wishes. But the concept of "unsaved" profiles is now something explicitly handled by keyfile plugin. Also, these "unsaved" keyfile profiles are persisted to file system too, to the /run directory. This is great for two reasons: first of all, all profiles from keyfile storage in fact have a backing file -- even the unsaved ones. It also means you can create "unsaved" profiles in /run and load them with `nmcli connection load`, meaning there is a file based API for creating unsaved profiles. The other advantage is that these profiles now survive restarting NetworkManager. It's paramount that restarting the daemon is as non-disruptive as possible. Persisting unsaved files to /run improves here significantly. -- In the past, NMSettingsConnection also implemented NMConnection interface. That was already changed a while ago and instead users call now nm_settings_connection_get_connection() to delegate to a NMSimpleConnection. What however still happened was that the NMConnection instance gets never swapped but instead the instance was modified with nm_connection_replace_settings_from_connection(), clear-secrets, etc. Change that and treat the NMConnection instance immutable. Instead of modifying it, reference/clone a new instance. This changes that previously when somebody wanted to keep a reference to an NMConnection, then the profile would be cloned. Now, it is supposed to be safe to reference the instance directly and everybody must ensure not to modify the instance. nmtst_connection_assert_unchanging() should help with that. The point is that the settings plugins may keep references to the NMConnection instance, and so does the NMSettingsConnection. We want to avoid cloning the instances as long as they are the same. Likewise, the device's applied connection can now also be referenced instead of cloning it. This is not yet done, and possibly there are further improvements possible. -- Also implement multiple keyfile directores /usr/lib, /etc, /run (rh #1674545, bgo #772414). It was always the case that multiple files could provide the same UUID (both in case of keyfile and ifcfg-rh). For keyfile plugin, if a profile in read-only storage in /usr/lib gets modified, then it gets actually stored in /etc (or /run, if the profile is unsaved). -- While at it, make /etc/network/interfaces profiles for ifupdown plugin reloadable. -- https://bugzilla.gnome.org/show_bug.cgi?id=772414 https://bugzilla.gnome.org/show_bug.cgi?id=744711 https://bugzilla.redhat.com/show_bug.cgi?id=1674545
| * settings/trivial: rename nm_keyfile_loaded_uuid_*() API to nm_keyfile_nmmeta_*()Thomas Haller2019-07-163-72/+72
| | | | | | | | | | | | The file got a wider scope to contain generic meta data about profiles. Rename the internal API to reflect that (and be consistend with the naming of the files).
| * settings: change filename for per-connection metadata (previously UUID ↵Thomas Haller2019-07-165-54/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nm-loaded symlinks) We may want to store meta-data for a profile to disk. The immediate need are "tombstones": markers that the particular UUID is shadowed and the profile does not exist (despite being in read-only location). Change the filename of these symlinks from ".loaded-${UUID}.nmconnection" to "${UUID}.nmmeta" The leading dot is not desirable as tools tend to hide such files. Use a different scheme for the filename that does not have the leading dot. Note that nm_keyfile_utils_ignore_filename() would also ignore ".nmmeta" as not a valid keyfile. This is just what we want, and influences the choice of this file suffix. Also, "nmmeta" is a better name, because this name alludes that there is a wider use for the file: namely to have addtional per-profile metadata. That is regardless that the upcoming first use will be only to store symlinks to "/dev/null" to indicate the tombstones. Note that per-profile metadata is not new. Currently we write the files /var/lib/NetworkManager/{seen-bssids,timestamps} that have a similar purpose. Maybe the content from these files could one day be migrated to the ".nmmeta" file. The naming scheme would make it suitable.
| * settings/keyfile: output "struct stat" from nms_keyfile_loaded_uuid_read()Thomas Haller2019-07-163-5/+8
| | | | | | | | | | We already stat() the file, so optionally return the stat result to the caller.
| * settings: add audit-logging for connection load and reloadThomas Haller2019-07-163-6/+32
| |
| * core: reapply changes to profile to all devicesThomas Haller2019-07-161-11/+6
| | | | | | | | | | Profiles can now be "connection.multi-connect" multiple, so we should look at all devices.
| * libnm: accept %NULL argument in nmtst_connection_assert_unchanging()Thomas Haller2019-07-161-0/+3
| | | | | | | | It's just more convenient, as it saves us the %NULL check.
| * libnm: add nm_key_file_get_boolean() helperThomas Haller2019-07-162-0/+39
| |
| * shared: suppress -Werror=stringop-overflow= warning in nm_strndup_a()Thomas Haller2019-07-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nm_strndup_a() uses strncpy() because we want the behavior of clearing out the memory after the first NUL byte. But that can cause a compiler warning: CC src/settings/plugins/keyfile/libNetworkManager_la-nms-keyfile-utils.lo In file included from ../../shared/nm-default.h:279, from ../../src/settings/plugins/keyfile/nms-keyfile-utils.c:20: In function ‘_nm_strndup_a_step’, inlined from ‘nms_keyfile_loaded_uuid_is_filename’ at ../../src/settings/plugins/keyfile/nms-keyfile-utils.c:65:9: ../../shared/nm-glib-aux/nm-macros-internal.h:1661:3: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=] 1661 | strncpy (s, str, len); | ^~~~~~~~~~~~~~~~~~~~~ ../../src/settings/plugins/keyfile/nms-keyfile-utils.c: In function ‘nms_keyfile_loaded_uuid_is_filename’: ../../src/settings/plugins/keyfile/nms-keyfile-utils.c:48:8: note: length computed here 48 | len = strlen (filename); | ^~~~~~~~~~~~~~~~~ It's true that the len argument of _nm_strndup_a_step() depends on the string length of the source string. But in this case it's safe, because we checked that the destination buffer is exactly the right size too. By that reasoning we should use memcpy() or strcpy(), but both are unsuitable. That is because we want nm_strndup_a() to behave like strndup(), which means we need to handle cases where the len argument is larger than the string length of the source string. That is, we want always to return a buffer of size len+1, but we want to copy only the characters up to the first NUL byte, and clear out the rest. That's what strncpy() does for us. Silence the warning.
| * device: fix reapplying changes to connection ID and UUIDThomas Haller2019-07-161-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | 4 properties are not really relevant for an already activated connection or it makes not sense to change them. These are connection.id, connection.uuid, connection.autoconnect and connection.stable-id. For convenience, we allow to reapply these. This way, one can take a different setting (e.g. with a different connection.id or connection.uuid) and reapply them, but such changes are silently ignored. However this was done wrongly. Instead of reverting the change to the new applied connection, we would change the input connection. This is bad, for example with nmcli connection up uuid cb922f18-e99a-49c6-b200-1678b5070a82 nmcli connection modify cb922f18-e99a-49c6-b200-1678b5070a82 con-name "bogus" nmcli device reapply eth0 the last re-apply would reset the settings-connection's connection ID to what was before, while accepting the new name on the applied-connection (while it should have been rejected). Fixes: bf3b3d444c77 ('device: avoid changing immutable properties during reapply')
* rules: merge branch 'th/routing-rule-suppress-prefixlength'Thomas Haller2019-07-1610-138/+337
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/202
| * policy-routing: take ownership of externally configured rulesThomas Haller2019-07-165-28/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IP addresses, routes, TC and QDiscs are all tied to a certain interface. So when NetworkManager manages an interface, it can be confident that all related entires should be managed, deleted and modified by NetworkManager. Routing policy rules are global. For that we have NMPRulesManager which keeps track of whether NetworkManager owns a rule. This allows multiple connection profiles to specify the same rule, and NMPRulesManager can consolidate this information to know whether to add or remove the rule. NMPRulesManager would also support to explicitly block a rule by tracking it with negative priority. However that is still unused at the moment. All that devices do is to add rules (track with positive priority) and remove them (untrack) once the profile gets deactivated. As rules are not exclusively owned by NetworkManager, NetworkManager tries not to interfere with rules that it knows nothing about. That means in particular, when NetworkManager starts it will "weakly track" all rules that are present. "weakly track" is mostly interesting for two cases: - when NMPRulesManager had the same rule explicitly tracked (added) by a device, then deactivating the device will leave the rule in place. - when NMPRulesManager had the same rule explicitly blocked (tracked with negative priority), then it would restore the rule when that block gets removed (as said, currently nobody actually does this). Note that when restarting NetworkManager, then the device may stay and the rules kept. However after restart, NetworkManager no longer knows that it previously added this route, so it would weakly track it and never remove them again. That is a problem. Avoid that, by whenever explicitly tracking a rule we also make sure to no longer weakly track it. Most likely this rule was indeed previously managed by NetworkManager. If this was really a rule added by externally, then the user really should choose distinct rule priorities to avoid such conflicts altogether.
| * libnm,core: add support for "suppress_prefixlength" rule attributeThomas Haller2019-07-165-107/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WireGuard's wq-quick configures such rules to avoid routing loops. While we currently don't have an automatic solution for this, at least we should support it via explicit user configuration. One problem is that suppress_prefixlength is relatively new and kernel might not support this attribute. That can lead to odd results, because the NetworkManager is valid but it cannot be configured on the current kernel. But this is a general problem, and we would require a general solution. The solution cannot be to only support rule attributes that are supported by the oldest possible kernel. It's not clear how much of a problem there really is, or which general solution is required (if any).
| * libnm: accept special table names for policy-routingThomas Haller2019-07-161-3/+12
|/ | | | | | | | | | | | | | | | | | | The tables "main", "local", and "default" have well known names. Accept them as aliases when parsing the string representation of the rule. Note that iproute2 also considers /etc/iproute2/rt_tables for table names. In particular, that allows a user to re-map the well-known names like "main" to a different table. We never honor that file, and "main" always means table 254. Note that this only affects how we parse the string representation for rules. As the representation is neither unique nor enforced to be normalized, being more graceful here is no problem. The point is of course that the user possibly has existing iproute2 scripts that use such keyword. This makes it simpler to copy & paste the rule.
* contrib/rpm: disable rp_filter in config-connectivity-redhatLubomir Rintel2019-07-153-0/+24
| | | | | | | | RHEL ships with a rp_filter and can't change that for historic reasons. That's unfortunate, because it breaks the connectivity checking. Let's override it if the connectivity checking package is installed. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/185
* dhcp-listener: keep reference to NMDBusManager singletonThomas Haller2019-07-151-6/+7
| | | | | | | | | When subscribing a signal to a singleton, we should ensure that the source object stays alive. Take a reference. This is also right in this case, because NMDBusManager (and its dependencies) should never use NMDhcpListener. So, there is a clear direction of who references who.
* ovs/interface: actually allow dpdk type interfacesLubomir Rintel2019-07-151-0/+1
| | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/203
* ovs/ovsdb: correctly set the dpdk-devargs optionLubomir Rintel2019-07-151-1/+1
| | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/203
* po: update Brazilian Portuguese (pt_BR) translationRafael Fontenelle2019-07-151-1843/+1912
| | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/204/
* gitlab-ci: workaround build failure in Debian:sid due to iproute2 issueThomas Haller2019-07-121-0/+4
| | | | | | | | | | | | | Our platform unit tests try to add an IP tunnel using iproute2. That fails with "add tunnel "ip6tnl0" failed: File exists" This is a bug in iproute2-5.2.0, see [1]. Workaround the issue by downgrading the package. [1] https://www.spinics.net/lists/netdev/msg584916.html
* gitlab-ci: add manual build step to test on ubuntu:rolling and ubuntu:develThomas Haller2019-07-121-0/+12
| | | | | | | | | | Rolling is the latest release (regardless of whether LTS), currently that would be 19.04. Devel is the next release, currently that would be 19.10. Add manual build steps to trigger those builds so we can manually verify that they pass.
* build: dist test file "test-tpm2wrapped-key.pem"Thomas Haller2019-07-111-0/+1
| | | | Fixes: 107ba8e00ca5 ('libnm/crypto: accept TPM2-wrapped PEM keys')
* libnm/crypto: merge branch 'tpm2-key'Thomas Haller2019-07-103-3/+76
|\ | | | | | | https://mail.gnome.org/archives/networkmanager-list/2019-July/msg00002.html
| * libnm/crypto: accept TPM2-wrapped PEM keysDaniel Kobras2019-07-103-3/+76
|/ | | | | | | | | Some tools that NM can interact with (eg. openconnect) have added automated support to handle TPM2-wrapped PEM keys as drop-in replacements for ordinary key files. Make sure that NM doesn't reject these keys upfront. We cannot reliably assume NM to be able to unwrap and validate the key. Therefore, accept any key as long as the PEM header and trailer look ok.
* clients/metta-setting-desc: allow "system" and "dpdk" ovs interface typesLubomir Rintel2019-07-101-1/+1
| | | | These are valid, but were missing.
* core,libnm: merge branch 'th/various-settings-cleanup-5'Thomas Haller2019-07-1015-520/+823
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/199
| * libnm,cli,ifcfg-rh: add connection:wait-device-timeout propertyThomas Haller2019-07-1011-516/+781
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Initscripts already honor the DEVTIMEOUT variable (rh #1171917). Don't make this a property only supported by initscripts. Every useful property should also be supported by keyfile and it should be accessible via D-Bus. Also, I will soon drop NMSIfcfgConnection, so handling this would require extra code. It's easier when DEVTIMEOUT is a regular property of the connection profile. The property is not yet implemented. ifcfg-rh still uses the old implementation, and keyfile is not yet adjusted. Since both keyfile and ifcfg-rh will both be rewritten soon, this property will be implemented then.
| * core: use nm_c_list_elem_free_steal() in _delete_volatile_connection_all ()Thomas Haller2019-07-101-3/+1
| |
| * shared: add NM_CMP_DIRECT_STRCMP() macroThomas Haller2019-07-101-0/+3
| |
| * shared: optimize nm_utils_error_set() for string literalsThomas Haller2019-07-101-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there is only one argument, we can assume this is a plain string. That is especially the case, because g_set_error() is G_GNUC_PRINTF() and would warn if this would be a format string with missing parameters. This is for convenience. Previously, one was compelled to explicitly choose between nm_utils_error_set_literal() and nm_utils_error_set(). Now, it automatically chooses. Note that there are a few things that won't work, like nm_utils_error_set (error, code, "bogus %u escape"); But that's good. You get a compiler warning (as you used to) and it's clear in this case you really need nm_utils_error_set_literal().
| * shared: add nm_pdirect_hash()/nm_pdirect_equal()Thomas Haller2019-07-102-0/+31
|/ | | | | | | | | This follows a pointer to a pointer and compares them. In a sense it's like nm_pstr_*(), which follow a pointer to a string. However, these functions use direct pointer comparison. The purpose is when you hash a key that has as first field a pointer value (and then compare them by pointer equality).
* gitlab-ci: enable test build on Debian 10 (buster)Thomas Haller2019-07-101-0/+5
|
* po: fix a typo in the French translationLuclu72019-07-101-2/+2
| | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/200
* core: fix mangling static IPv6 routes in nm_ip6_config_merge_setting()Thomas Haller2019-07-091-1/+1
| | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1727193 Fixes: 433d2f8659e3 ('core: merge IPv4 and IPv6 version of _nm_ip_config_merge_route_attributes()')
* man: update nm-openswitch exampleFrancesco Giudici2019-07-091-2/+2
| | | | | | | | | | | | | | Seems that a quite common openswitch basic configuration consist of a one bridge, one port and one interface, all with the same interface name. When performing such configuration in NetworkManager you need to specify the slave-type for the ovs-interface, otherwise the master interface specified there may match the bridge interface, resulting in an error. So, let's specify the slave-type for the ovs-interface, so that the example will work also when the same interface name is specified for both the ovs-bridge and the ovs-port. https://bugzilla.redhat.com/show_bug.cgi?id=1638038
* platform/tests: relax check for accepting platform signalsThomas Haller2019-07-091-1/+1
| | | | | | | | | | | | | | nmtst: initialize nmtst_get_rand() with NMTST_SEED_RAND=0 /link/bogus: OK /link/loopback: OK /link/internal: OK /link/external: OK /link/software/bridge: OK /link/software/bond: OK /link/software/team: NMPlatformSignalAssert: ../src/platform/tests/test-link.c:331, test_slave(): failure to accept signal [0,2] times: 'link-changed-changed' ifindex 15 (3 times received) --- stderr --- /builds/NetworkManager/NetworkManager/tools/run-nm-test.sh: line 264: 106682 Trace/breakpoint trap --quiet --error-exitcode= --leak-check=full --gen-suppressions=all --num-callers=100 --log-file= The test failed. Also check the valgrind log at '/builds/NetworkManager/NetworkManager/build/src/platform/tests/test-link-linux.valgrind-log'
* libnm/crypto: use memmem() instead of naive O(n*m) search in find_tag()Thomas Haller2019-07-081-12/+14
|
* settings: fix a reversed conditional in have_connection_for_device()Lubomir Rintel2019-07-081-1/+1
| | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1727411 Fixes: be0018382d4d ('settings: in have_connection_for_device() first skip over irrelevant connection types')
* build: add missing dependency for shared/systemd/src/sharedBeniamino Galvani2019-07-081-9/+10
| | | | | | | | | | | | In file included from ./shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h:21, from shared/systemd/src/shared/dns-domain.c:3: ./shared/nm-default.h:106:10: fatal error: config-extra.h: No such file or directory #include "config-extra.h" ^~~~~~~~~~~~~~~~ compilation terminated. make[1]: *** [Makefile:12933: shared/systemd/src/shared/libnm_systemd_shared_la-dns-domain.lo] Error 1 Fixes: 7d3098ff90ec ('systemd: add dns-domain utils to systemd static library')