Commit Graph

24195 Commits

Author SHA1 Message Date
Thomas Haller
6f4b6985e8 NEWS: update header for future 1.22 release
Also, mark 1.20 as stable.
2019-08-10 09:43:18 +02:00
Thomas Haller
b32292003e settings: merge branch 'th/settings-improvements'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/224
2019-08-09 07:49:34 +02:00
Thomas Haller
4e36521d4c settings: return errno from nms_keyfile_nmmeta_write() for better logging
I encountered a failure in the log

    <trace> [1564647990.7822] keyfile: commit: deleting nmmeta file "/etc/NetworkManager/system-connections/35370b0b-e53b-42ea-9fe3-f1b1d552343b.nmmeta" failed
    <trace> [1564647990.7822] keyfile: commit: deleting nmmeta file "/etc/NetworkManager/system-connections/35370b0b-e53b-42ea-9fe3-f1b1d552343b.nmmeta" simulated

I think that was due to SELinux (rh #1738010).

Let nms_keyfile_nmmeta_write() return an errno code so we can log
more information about the failure.
2019-08-08 12:03:15 +02:00
Thomas Haller
b216abb012 shared,all: return boolean success from nm_utils_file_get_contents()
... and nm_utils_fd_get_contents() and nm_utils_file_set_contents().

Don't mix negative errno return value with a GError output. Instead,
return a boolean result indicating success or failure.

Also, optionally

  - output GError

  - set out_errsv to the positive errno (or 0 on success)

Obviously, the return value and the output arguments (contents, length,
out_errsv, error) must all agree in their success/failure result.
That means, you may check any of the return value, out_errsv, error, and
contents to reliably detect failure or success.

Also note that out_errsv gives the positive(!) errno. But you probably
shouldn't care about the distinction and use nm_errno_native() either
way to normalize the value.
2019-08-08 11:59:59 +02:00
Thomas Haller
1bad35061f shared: let nm_utils_file_set_contents() return a errno error code
nm_utils_file_set_contents() is a re-implementation of g_file_set_contents(),
as such it returned merely a boolean success value.

It's sometimes interesting to get the native error code. Let the function
deviate from glib's original g_file_set_contents() and return the error code
(as negative value) instead.

This requires all callers to change. Also, it's potentially a dangerous
change, as this is easy to miss.

Note that nm_utils_file_get_contents() also returns an errno, and
already deviates from g_file_get_contents() in the same way. This patch
resolves at least the inconsistency with nm_utils_file_get_contents().
2019-08-08 10:53:03 +02:00
Thomas Haller
041a952297 examples: improve usage/synposis for nm-update2.py and nm-add-connection2.py 2019-08-08 10:53:03 +02:00
Thomas Haller
244d8bf604 secret-agent: merge branch 'th/secret-agent-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/231
2019-08-08 10:12:17 +02:00
Thomas Haller
f662465948 secret-agent: rework secret-agent to better handle service shutdown
The secret-agent D-Bus API knows 4 methods: GetSecrets, SaveSecrets,
DeleteSecrets and CancelGetSecrets. When we cancel a GetSecrets
request, we must issue another CancelGetSecrets to tell the agent
that the request was aborted. This is also true during shutdown.
Well, technically, during shutdown we anyway drop off the bus and
it woudn't matter. In practice, I think we should get this right and
always cancel properly.

To better handle shutdown change the following:

- each request now takes a reference on NMSecretAgent. That means,
  as long as there are pending requests, the instance stays alive.
  The way to get this right during shutdown, is that NMSecretAgent
  registers itself via nm_shutdown_wait_obj_register() and
  NetworkManager is supposed to keep running as long as requests
  are keeping the instance alive.

- now, the 3 regular methods are cancellable (which means: we are
  no longer interested in the result). CancelGetSecrets is not
  cancellable, but it has a short timeout NM_SHUTDOWN_TIMEOUT_MS
  to handle this. We anyway don't really care about the result,
  aside logging and to be sure that the request fully completed.

- this means, a request (NMSecretAgentCallId) can now immediately
  be cancelled and destroyed, both when the request returns and
  when the caller cancels it. The exception is GetSecrets which
  keeps the request alive while waiting for CancelGetSecrets. But
  this is easily handled by unlinking the call-id and pass it on
  to the CancelGetSecrets callback.
  Previously, the NMSecretAgentCallId was only destroyed when
  the D-Bus call returns, even if it was cancelled earlier. That's
  unnecessary complicated.

- previously, D-Bus requests SaveSecrets and DeleteSecrets were not cancellable.
  That is a problem. We need to be able to cancel them in order to shutdown in
  time.

- use GDBusConnection instead of GDBusProxy. As most of the time, GDBusProxy
  provides features we don't use.

- again, don't log direct pointer values, but obfuscate the indentifiers.
2019-08-08 10:10:34 +02:00
Thomas Haller
52f9c8ecf3 secret-agent: use NMCListElem to track permissions in NMSecretAgent
I don't like GSList.
2019-08-08 10:07:55 +02:00
Thomas Haller
91364f4c0a secret-agent/trivial: rename dbus_connection field of NMSecretAgentPrivate 2019-08-08 10:07:55 +02:00
Thomas Haller
a010484c40 secret-agent: avoid log plain pointer values
This defeats ASLR. Obfuscate the pointers.
2019-08-08 10:07:55 +02:00
Thomas Haller
0dbb870f82 dbus-manager: drop unused private-socket functions from "nm-dbus-manager.c"
These functions are now unused. Drop them.

Also, if we ever reintroduce private unix socket, we sure won't use
GDBusProxy. Good riddance.
2019-08-08 10:07:55 +02:00
Thomas Haller
8a347dbd55 secret-agent: drop unused private-socket code from secret-agent
In the past, we had a private unix socket. That is long gone.
Drop the remains in "nm-secret-agent.c". The request here really
always comes from the main D-Bus connection.

Maybe the private unix socket makes sense and we might resurrect it one
day. But at that point it would be an entire rewrite and the existing
code is probably not useful either way. Drop it.
2019-08-08 10:07:55 +02:00
Thomas Haller
58e5e55f17 secret-agent: enable trace log messages
They seem useful for debugging. Don't only enable them --with-more-logging.
2019-08-08 10:07:55 +02:00
Thomas Haller
dda3289206 shared: add nm_c_list_elem_find_first() helper macro
- add nm_c_list_elem_find_first() macro that takes a predicate
  and returns the first match.

  This macro has a non-function-like behavior, which we often try to
  avoid because macros should behave like functions. In this case it's
  however convenient, so let's do it.
  Also, despite being non-function-like, it should be pretty hard to
  use wrongly.

- rename nm_c_list_elem_find_first() to nm_c_list_elem_find_first_ptr().
2019-08-08 10:07:15 +02:00
Thomas Haller
b80b25050f n-dhcp4: allocate memory of right size in n_dhcp4_client_probe_option_new()
Non-critical, as the allocated memory was larger than needed.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/224
2019-08-08 07:46:41 +02:00
Thomas Haller
1b59d752be firewall: refactor "nm-firewall-manager.c" to not use GDBusProxy
- Don't use GDBusProxy but plain GDBusConnection. NMFirewallManager
  is very simple, it doesn't use any of the features that GDBusProxy
  provides.

- make NMFirewallManagerCallId typedef a pointer to the opaque call-id
  struct, instead of the struct itself. It's confusing to have a
  variable that does not look like a pointer and assigning %NULL to
  it.

- internally drop the CBInfo typename and name the call-id variable
  constsistantly as "call_id".

- no need to keep the call-id struct alive after cancelling it. That
  simplifies the lifetime managment of the pending call because the
  completion callback is always invoked shortly before destroying
  the call-id.

- note that the caller is no longer allowed to cancel a call-id from
  inside the completion callback. That just complicates the
  implementation and is not necessary. Assert against that.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/230
2019-08-07 13:21:48 +02:00
Thomas Haller
7d3a05d493 cli/trivial: align property definitions with spaces and not with tabs
Our coding style is to indent with tabs, but align with spaces.
This is not about the coding style though, but about the code
looking broken when not using 4 spaces per tab (in fact, some code
there is aligned as if using 8 spaces and it's already inconsistent).

Realign with spaces.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/223
2019-08-06 15:46:12 +02:00
Thomas Haller
96339fa5ea release: bump version to 1.21.1-dev after 1.20.0 release
After 1.20.0 is released, merge it back into master so that
1.20.0 is part of the history of master. That means,
  $ git log --first-parent master
will also traverse 1.20.0 and 1.20-rc*.

Also bump the micro version to 1.21.1-dev to indicate that this is
after 1.20.0 is out.
2019-08-06 13:01:05 +02:00
Thomas Haller
c438f01b19 release: bump version to 1.20.0 2019-08-06 12:22:44 +02:00
Thomas Haller
fb49607de1 libnm/doc: add missing "Since: 1.20" comments
(cherry picked from commit e48089b039)
2019-08-06 12:22:16 +02:00
Thomas Haller
fa0c5a41c1 ifupdown: fix assertion during logging %NULL storage in load_eni_ifaces()
(cherry picked from commit ddb08e3602)
2019-08-06 12:22:15 +02:00
Thomas Haller
e48089b039 libnm/doc: add missing "Since: 1.20" comments 2019-08-06 12:16:29 +02:00
Thomas Haller
ddb08e3602 ifupdown: fix assertion during logging %NULL storage in load_eni_ifaces() 2019-08-06 12:10:37 +02:00
Thomas Haller
3cef1b98cc libnm/doc: add Since tag for %NM_SETTING_IP6_CONFIG_METHOD_DISABLED
(cherry picked from commit f988e85025)
2019-08-06 11:52:08 +02:00
Thomas Haller
9374aa5f2f NEWS: update 2019-08-06 11:51:17 +02:00
Thomas Haller
f988e85025 libnm/doc: add Since tag for %NM_SETTING_IP6_CONFIG_METHOD_DISABLED 2019-08-06 11:50:00 +02:00
Beniamino Galvani
47c772354e modem: fix memory leak
Fixes: 9b935fad9b ('modem: don't use GAsyncResult pattern for disconnecting modem')
(cherry picked from commit 22cd9e754b)
2019-08-06 09:17:10 +02:00
Beniamino Galvani
22cd9e754b modem: fix memory leak
Fixes: 9b935fad9b ('modem: don't use GAsyncResult pattern for disconnecting modem')
2019-08-06 08:35:01 +02:00
Beniamino Galvani
617ad31f39 build: merge branch 'bg/meson-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/226
2019-08-05 16:14:15 +02:00
Beniamino Galvani
7c2317a557 build: fix meson warning about 'install' arg in 'configure_file'
WARNING: Project targetting '>= 0.44.0' but tried to use feature
introduced in '0.50.0': install arg in configure_file

From the documentation:

 "install (added 0.50.0) When true, this generated file is installed
 during the install step, and install_dir must be set and not
 empty. When false, this generated file is not installed regardless of
 the value of install_dir. When omitted it defaults to true when
 install_dir is set and not empty, false otherwise."

The parameter can be omitted because install_dir is set.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/216
2019-08-05 16:05:30 +02:00
Beniamino Galvani
91b9b08e33 build: fix meson warning about wrong custom target argument
src/meson.build:294: WARNING: Custom target input 'NetworkManager'
can't be converted to File object(s).
This will become a hard error in the future.
2019-08-05 16:05:30 +02:00
Beniamino Galvani
00bb6cdb4f build: fix meson warning about path separator in target
Fix the following:

 WARNING: Target "nm-utils/tests/test-shared-general" has a path
 separator in its name.  This is not supported, it can cause
 unexpected failures and will become a hard error in the future.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/217
2019-08-05 16:05:30 +02:00
Beniamino Galvani
9fe2b6135b build: fix meson warning about invalid 'depends' keyword
Fix this:

 libnm/meson.build:215: WARNING: Passed invalid keyword argument
 "depends".
 WARNING: This will become a hard error in the future.
2019-08-05 16:05:30 +02:00
Beniamino Galvani
df5d76b0dc libnm-core: fix ifcfg-rh variable name for DHCPv6 hostname
Fixes: 2852b50945 ('ifcfg-rh: add DHCPV6_HOSTNAME and DHCPV6_SEND_HOSTNAME vars')
(cherry picked from commit 657b8b31b0)
2019-08-05 16:01:48 +02:00
Beniamino Galvani
657b8b31b0 libnm-core: fix ifcfg-rh variable name for DHCPv6 hostname
Fixes: 2852b50945 ('ifcfg-rh: add DHCPV6_HOSTNAME and DHCPV6_SEND_HOSTNAME vars')
2019-08-05 15:56:16 +02:00
Thomas Haller
66088a09b2 libnm: when stringifying policy routing rule place "not" specifier after "priority"
Otherwise, it just looks odd:

  "not priority 31265 from 0.0.0.0/0 fwmark 0xcb87 table 52103"

Better is:

  "priority 31265 not from 0.0.0.0/0 fwmark 0xcb87 table 52103"

The "not" specifier should come after the priority. It makes more sense
to read it that way. As far as parsing the string is concerned, the
order does not matter. So this change in behavior is no problem.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/228
2019-08-05 10:16:10 +02:00
Beniamino Galvani
e41bb8fc8e settings: fix memory leak
Fixes: d35d3c468a
(cherry picked from commit 956ffb7e96)
2019-08-05 10:11:08 +02:00
Thomas Haller
d4fabd728a cli: merge branch 'th/nmcli-add-and-activate-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/227
2019-08-05 10:11:01 +02:00
Thomas Haller
b298f2e605 cli: use cleanup macro for freeing AddAndActivateInfo
We should prefer the cleanup macors nm_auto*() because they express
ownership in code.

Also, they allow to return early without additional cleanup code.
That way we can refactor if-else blocks.

Also, in cases where we intentionally pass on the reference, we use
g_steal_pointer(), which literally spells out what happens in code.
2019-08-05 10:11:01 +02:00
Thomas Haller
cf6cd06422 cli: add helper function to create and initialize AddAndActivateInfo struct
Also use gslice allocator instead of malloc as the size of
AddAndActivateInfo is fixed and known beforehand.
2019-08-05 10:11:01 +02:00
Beniamino Galvani
956ffb7e96 settings: fix memory leak
Fixes: d35d3c468a
2019-08-05 09:36:12 +02:00
Thomas Haller
8b017dc2fb settings: fix registering AgentManager.RegisterWithCapabilities() twice
Fixes: 297d4985ab
(cherry picked from commit 1634fff1ad)
2019-08-03 18:36:15 +02:00
Thomas Haller
1634fff1ad settings: fix registering AgentManager.RegisterWithCapabilities() twice
Fixes: 297d4985ab
2019-08-03 18:33:55 +02:00
Thomas Haller
a3f9ab473b wireguard: fix use-after free in _peers_remove()
(cherry picked from commit 85c26341a2)
2019-08-03 12:28:33 +02:00
Thomas Haller
85c26341a2 wireguard: fix use-after free in _peers_remove() 2019-08-03 12:27:57 +02:00
Thomas Haller
8f2e3d1439 libnm: fix leak in NMSettingWireGuard's update_one_secret()
(cherry picked from commit eea8bbd9ae)
2019-08-03 11:29:41 +02:00
Thomas Haller
eea8bbd9ae libnm: fix leak in NMSettingWireGuard's update_one_secret() 2019-08-03 11:25:10 +02:00
Lubomir Rintel
377a775a2a merge: branch 'lr/nm-d-wifi-con-update'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/219
2019-08-02 23:00:55 +02:00
Lubomir Rintel
a4740fb82a cli: update the existing connection on "dev wifi connect"
If we find a matching connection, ensure it's exactly as we want it
before actually proceeding to activate it. Fixes this problem:

  # nmcli dev wifi connect "Network of Doom" password santa <-- bad
  Error: Connection activation failed: (7) Invalid secrets
  # nmcli dev wifi connect "Network of Doom" password satan <-- correct
  Error: Connection activation failed: (7) Invalid secrets

The password is now correct, but nmcli chose to re-activate the wrong
connection it created previously.
2019-08-02 23:00:26 +02:00