Commit graph

27861 commits

Author SHA1 Message Date
Beniamino Galvani
08d9341b0c merge: branch 'bg/dns-update-on-sigusr1'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/832
(cherry picked from commit a3306d538c)
2021-06-10 18:10:11 +02:00
Beniamino Galvani
cdc1e9ecff nmcli: invoke ReloadConnections() D-Bus method asynchronously
(cherry picked from commit 9d0aca6757)
2021-06-10 18:09:52 +02:00
Beniamino Galvani
9d15ae640d nmcli: invoke Reload() D-Bus method asynchronously
Invoke Reload() asynchronously and run the main loop. In this way, the
polkit agent built into nmcli can be used to authenticate the reload
request.

Fixes: 5afcf9c045 ('cli: add 'general reload' command')
(cherry picked from commit 1d82c39bfa)
2021-06-10 18:09:03 +02:00
Beniamino Galvani
ecda9fb41a libnm-glib-aux: add nm_dbus_call()
Add nm_dbus_call() to get a D-Bus connection and call a method
asynchronously.

(cherry picked from commit 126ee6a1e8)
2021-06-10 18:08:28 +02:00
Beniamino Galvani
e18f03a34a man: document the 'nmcli general reload' command
(cherry picked from commit 43fc984989)
2021-06-10 18:08:26 +02:00
Beniamino Galvani
d1729ac5e8 core: force emission of DNS_CONFIG_CHANGED signal on SIGUSR1
If the configuration contains dns=none and resolv.conf is updated
through a dispatcher script, currently there is no way to tell NM that
the content of resolv.conf changed, so that it can restart a hostname
resolution.

Use SIGUSR1 (and SIGHUP) for that.

(cherry picked from commit fa1f628bce)
2021-06-10 18:08:24 +02:00
Thomas Haller
f8624ea2e5
contrib/scripts: use "main" branch name in "checkpatch-feature-branch.sh"
(cherry picked from commit 172dace30d)
2021-06-10 17:48:07 +02:00
Thomas Haller
1b97be1f34
bluez: fix leak of private data "conn_data_elems" in NMBluezManager
Found by valgrind.

Fixes: 4154d9618c ('bluetooth: refactor BlueZ handling and let NMBluezManager cache ObjectManager data')
(cherry picked from commit 6813a4fe75)
(cherry picked from commit a25c577556)
2021-06-10 16:03:20 +02:00
Thomas Haller
62d9c702b2
supplicant: fix leaking handle in nm_supplicant_manager_create_interface()
Found by valgrind.

Fixes: b83f07916a ('supplicant: large rework of wpa_supplicant handling')
(cherry picked from commit 01df4a5ad0)
(cherry picked from commit 80a8a5d16d)
2021-06-10 16:03:20 +02:00
Wade Berrier
79b2105759
wifi: fix WPS PBC string typo
Fixes: b83f07916a ('supplicant: large rework of wpa_supplicant handling')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/845
(cherry picked from commit 3839db5191)
2021-06-04 21:32:57 +02:00
Thomas Haller
1192e7bbba
libnm: fix logic and double free in nm_vpn_service_plugin_read_vpn_details()
"val" and "key" are now marked as nm_auto. They are freed at the end,
and we should not free them before breaking the loop (at least not,
without also clearing the variables).

Fixes: 02dbba49d6 ('libnm: fix leak in nm_vpn_service_plugin_read_vpn_details()')
(cherry picked from commit 62c1944e7d)
2021-06-04 21:31:51 +02:00
Thomas Haller
02fe804f32
libnm: fix leak in nm_vpn_service_plugin_read_vpn_details()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772):
  NetworkManager-1.31.3/src/libnm-client-impl/nm-vpn-service-plugin.c:814: alloc_fn: Storage is returned from allocation function "g_string_new".
  NetworkManager-1.31.3/src/libnm-client-impl/nm-vpn-service-plugin.c:814: var_assign: Assigning: "key" = storage returned from "g_string_new(line->str + strlen("DATA_KEY="))".
  NetworkManager-1.31.3/src/libnm-client-impl/nm-vpn-service-plugin.c:815: var_assign: Assigning: "str" = "key".
  NetworkManager-1.31.3/src/libnm-client-impl/nm-vpn-service-plugin.c:855: leaked_storage: Variable "str" going out of scope leaks the storage it points to.
  NetworkManager-1.31.3/src/libnm-client-impl/nm-vpn-service-plugin.c:855: leaked_storage: Variable "key" going out of scope leaks the storage it points to.
  #  853|           NM_SET_OUT(out_secrets, g_steal_pointer(&secrets));
  #  854|       }
  #  855|->     return success;
  #  856|   }
  #  857|

Fixes: 3dfb72b926 ('service-plugin: allow continuations in the auth-dialog protocol')
(cherry picked from commit 02dbba49d6)
2021-06-04 21:31:50 +02:00
Thomas Haller
17a3d19478
glib-aux: add nm_clear_g_string() helper
Since g_string_free() takes an additional argument,
it's not direclty usable with nm_clear_pointer(ptr, g_string_free);

As workaround, add nm_clear_g_string() helper.

(cherry picked from commit 8da91cd85f)
2021-06-04 21:31:50 +02:00
Thomas Haller
2e5c4abc8c
cli: fix leak in print_wifi_connection()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772): [#def297] [important]
  NetworkManager-1.31.3/src/nmcli/devices.c:4610: alloc_fn: Storage is returned from allocation function "nm_utils_ssid_to_utf8".
  NetworkManager-1.31.3/src/nmcli/devices.c:4610: var_assign: Assigning: "ssid" = storage returned from "nm_utils_ssid_to_utf8(g_bytes_get_data(ssid_bytes, NULL), g_bytes_get_size(ssid_bytes))".
  NetworkManager-1.31.3/src/nmcli/devices.c:4612: noescape: Resource "ssid" is not freed or pointed-to in "g_print".
  NetworkManager-1.31.3/src/nmcli/devices.c:4642: noescape: Resource "ssid" is not freed or pointed-to in "string_append_mecard".
  NetworkManager-1.31.3/src/nmcli/devices.c:4654: leaked_storage: Variable "ssid" going out of scope leaks the storage it points to.
  # 4652|
  # 4653|       g_print("\n");
  # 4654|-> }
  # 4655|
  # 4656|   static gboolean

Fixes: 7061341a41 ('cli: add "nmcli d wifi show"')
(cherry picked from commit e5f37477c0)
2021-06-04 21:30:49 +02:00
Thomas Haller
411af76312
libnm: fix leak in nm_utils_tc_tfilter_from_str()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772):
  NetworkManager-1.31.3/src/libnm-core-impl/nm-utils.c:2772: alloc_fn: Storage is returned from allocation function "nm_utils_tc_action_from_str".
  NetworkManager-1.31.3/src/libnm-core-impl/nm-utils.c:2772: var_assign: Assigning: "action" = storage returned from "nm_utils_tc_action_from_str(extra_opts, error)".
  NetworkManager-1.31.3/src/libnm-core-impl/nm-utils.c:2785: leaked_storage: Variable "action" going out of scope leaks the storage it points to.
  # 2783|       tfilter = nm_tc_tfilter_new(kind, parent, error);
  # 2784|       if (!tfilter)
  # 2785|->         return NULL;
  # 2786|
  # 2787|       nm_tc_tfilter_set_handle(tfilter, handle);

Fixes: de41c45e61 ('libnm-core: add functionality for dealing with tc-style traffic filter specifiers')
(cherry picked from commit 3cd56e92d4)
2021-06-04 21:29:21 +02:00
Thomas Haller
1216fd855c
libnm: add nm_auto_unref_tc_action cleanup macro for NMTCAction
(cherry picked from commit 272119d925)
2021-06-04 21:29:21 +02:00
Thomas Haller
ddcc754d0f
libnm: fix error handling in NMVpnPluginOld's _connect_generic()
Also Coverity found that something is wrong here:

   Error: FORWARD_NULL (CWE-476): [#def361]
   NetworkManager-1.31.5/src/libnm-client-impl/nm-vpn-plugin-old.c:441: var_compare_op: Comparing "connection" to null implies that "connection" might be null.
   NetworkManager-1.31.5/src/libnm-client-impl/nm-vpn-plugin-old.c:489: var_deref_model: Passing null pointer "connection" to "g_object_unref", which dereferences it.
   #  487|       }
   #  488|
   #  489|->     g_object_unref(connection);
   #  490|   }
   #  491|

Fixes: 6793a32a8c ('libnm: port to GDBus')
(cherry picked from commit e56f126071)
2021-06-04 21:26:57 +02:00
Thomas Haller
0b8cf38b68
dhcp: fix nm_dhcp_lease_data_parse_cstr() to correctly detect NUL chars
Fixes: 784932550c ('dhcp/nettools: validate and normalize Host Name Option (12)')
(cherry picked from commit 881b42c454)
2021-06-04 21:26:40 +02:00
Thomas Haller
03914cbf2d
keyfile: fix comparison in nms_keyfile_nmmeta_read()
"uuid" is returned from nms_keyfile_nmmeta_check_filename(),
and contains "$UUID.nmmeta". We must compare only the first
"uuid_len" bytes.

Fixes: 064544cc07 ('settings: support storing "shadowed-storage" to .nmmeta files')
(cherry picked from commit 7e8e6836e0)
2021-06-04 21:26:31 +02:00
Thomas Haller
d2d343289d
systemd/tests: avoid using g_free() with buffers allocated with malloc() in _test_unbase64mem_mem()
Coverity says:

  Error: ALLOC_FREE_MISMATCH (CWE-762):
  NetworkManager-1.31.3/src/core/tests/test-systemd.c:261: alloc: Allocation of memory which must be freed using "free".
  NetworkManager-1.31.3/src/core/tests/test-systemd.c:274: free: Calling "_nm_auto_g_free" frees "exp2_arr" using "g_free" but it should have been freed using "free".
  #  272|           g_assert_cmpmem(expected_arr, expected_len, exp3_arr, exp3_len);
  #  273|       }
  #  274|-> }
  #  275|
  #  276|   #define _test_unbase64mem(base64, expected_str) \

  Error: ALLOC_FREE_MISMATCH (CWE-762):
  NetworkManager-1.31.3/src/core/tests/test-systemd.c:270: alloc: Allocation of memory which must be freed using "free".
  NetworkManager-1.31.3/src/core/tests/test-systemd.c:274: free: Calling "_nm_auto_g_free" frees "exp3_arr" using "g_free" but it should have been freed using "free".
  #  272|           g_assert_cmpmem(expected_arr, expected_len, exp3_arr, exp3_len);
  #  273|       }
  #  274|-> }
  #  275|
  #  276|   #define _test_unbase64mem(base64, expected_str) \

Fixes: 0298d54078 ('systemd: expose unbase64mem() as nm_sd_utils_unbase64mem()')
(cherry picked from commit 44abe6d661)
2021-06-04 21:25:39 +02:00
Thomas Haller
3e2e7e58b1
dhcp/systemd: avoid using g_free() with buffers allocated with malloc() in lease_to_ip4_config()()
Coverity says:

  Error: ALLOC_FREE_MISMATCH (CWE-762):
  NetworkManager-1.31.3/src/core/dhcp/nm-dhcp-systemd.c:234: alloc: Allocation of memory which must be freed using "free".
  NetworkManager-1.31.3/src/core/dhcp/nm-dhcp-systemd.c:447: free: Calling "_nm_auto_g_free" frees "routes" using "g_free" but it should have been freed using "free".
  #  445|       }
  #  446|       NM_SET_OUT(out_options, g_steal_pointer(&options));
  #  447|->     return g_steal_pointer(&ip4_config);
  #  448|   }
  #  449|

Fixes: acc0d79224 ('systemd: merge branch 'systemd' into master')
(cherry picked from commit 64985beef8)
2021-06-04 21:22:17 +02:00
Thomas Haller
4f5cd076ab
libnmc-base:fix leak in NMSecretAgentSimple's request_secrets_from_ui()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772): [#def271] [important]
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:874: alloc_fn: Storage is returned from allocation function "nm_utils_ssid_to_utf8".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:874: var_assign: Assigning: "ssid_utf8" = storage returned from "nm_utils_ssid_to_utf8(g_bytes_get_data(ssid, NULL), g_bytes_get_size(ssid))".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:877: noescape: Resource "ssid_utf8" is not freed or pointed-to in "g_strdup_printf".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:882: leaked_storage: Variable "ssid_utf8" going out of scope leaks the storage it points to.
  #  880|
  #  881|           if (!add_wireless_secrets(request, secrets))
  #  882|->             goto out_fail;
  #  883|       } else if (nm_connection_is_type(request->connection, NM_SETTING_WIRED_SETTING_NAME)) {
  #  884|           title = _("Wired 802.1X authentication");

  Error: RESOURCE_LEAK (CWE-772): [#def272] [important]
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:874: alloc_fn: Storage is returned from allocation function "nm_utils_ssid_to_utf8".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:874: var_assign: Assigning: "ssid_utf8" = storage returned from "nm_utils_ssid_to_utf8(g_bytes_get_data(ssid, NULL), g_bytes_get_size(ssid))".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:877: noescape: Resource "ssid_utf8" is not freed or pointed-to in "g_strdup_printf".
  NetworkManager-1.31.3/src/libnmc-base/nm-secret-agent-simple.c:883: leaked_storage: Variable "ssid_utf8" going out of scope leaks the storage it points to.
  #  881|           if (!add_wireless_secrets(request, secrets))
  #  882|               goto out_fail;
  #  883|->     } else if (nm_connection_is_type(request->connection, NM_SETTING_WIRED_SETTING_NAME)) {
  #  884|           title = _("Wired 802.1X authentication");
  #  885|           msg   = g_strdup_printf(_("Secrets are required to access the wired network %s"),

Fixes: 3fbabde4c3 ('libnm-core: replace GByteArray with pointer + length in some APIs')
(cherry picked from commit 2c628e4762)
2021-06-04 21:22:08 +02:00
Thomas Haller
0a011690c4
libnmt-newt: fix leak in nmt_newt_button_build_component()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772): [#def274] [important]
  NetworkManager-1.31.3/src/libnmt-newt/nmt-newt-button.c:118: alloc_fn: Storage is returned from allocation function "g_strdup_printf".
  NetworkManager-1.31.3/src/libnmt-newt/nmt-newt-button.c:118: var_assign: Assigning: "label" = storage returned from "g_strdup_printf(" <%s>", priv->label)".
  NetworkManager-1.31.3/src/libnmt-newt/nmt-newt-button.c:119: noescape: Resource "label" is not freed or pointed-to in "nmt_newt_locale_from_utf8".
  NetworkManager-1.31.3/src/libnmt-newt/nmt-newt-button.c:125: leaked_storage: Variable "label" going out of scope leaks the storage it points to.
  #  123|       }
  #  124|
  #  125|->     return co;
  #  126|   }
  #  127|

Fixes: 3bda3fb60c ('nmtui: initial import of nmtui')
(cherry picked from commit 853f411567)
2021-06-04 21:21:52 +02:00
Thomas Haller
3ab2398dda
dhcp/nettools: fix crash with empty DHCP option 40 (NIS domain name)
nm_utils_buf_utf8safe_escape() returns NULL for an empty string.

Fixes: 6c8a9e8bd6 ('dhcp/nettools: validate nis-domain option (40) differently')
(cherry picked from commit 2d0ac5f5fe)
2021-06-04 20:52:36 +02:00
Thomas Haller
a4d2106ace
wifi: fix parsing Microsoft Network Cost IE
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/734

Fixes: 5307b1ed73 ('wifi: guess metered flag based on Network Cost information element')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/879
(cherry picked from commit 8327312c51)
2021-06-04 20:52:25 +02:00
Thomas Haller
0392743c48
core: fix leak in _config_data_get_main_auth_polkit()
Found by Coverity:

  Error: RESOURCE_LEAK (CWE-772):
  NetworkManager-1.31.3/src/core/nm-config-data.c:450: alloc_fn: Storage is returned from allocation function "nm_config_data_get_value".
  NetworkManager-1.31.3/src/core/nm-config-data.c:450: var_assign: Assigning: "str" = storage returned from "nm_config_data_get_value(self, "main", "auth-polkit", (enum [unnamed type of NMConfigGetValueFlags])6)".
  NetworkManager-1.31.3/src/core/nm-config-data.c:454: noescape: Resource "str" is not freed or pointed-to in "nm_auth_polkit_mode_from_string".
  NetworkManager-1.31.3/src/core/nm-config-data.c:465: leaked_storage: Variable "str" going out of scope leaks the storage it points to.
  #  463|           NM_SET_OUT(out_invalid_config, FALSE);
  #  464|
  #  465|->     return auth_polkit_mode;
  #  466|   }
  #  467|

Fixes: 6d7446e52f ('core: add main.auth-polkit option "root-only"')
(cherry picked from commit ceaa1c369f)
2021-06-04 20:33:45 +02:00
Thomas Haller
d9bcba347b
firewall: fix adding duplicate iptables rules for shared mode
nm_act_request_set_shared() already calls nm_utils_share_rules_apply().
Calling it twice, is pretty bad because during deactivate we will only
remove one of each duplicate rule.

Fixes: 701654b930 ('core: refactor tracking of shared-rules to use NMUtilsShareRules')
(cherry picked from commit 60744889e2)
2021-06-04 20:32:31 +02:00
Thomas Haller
e8de0433c2
cli: fix RETURN_STR_EMPTYUNSET() macro for printing handle_emptyunset string
This was currently unused, because actually no property of type string
had handle_emptyunuset set.

Fixes: e9ee4e39f1 ('cli: handle string properties that can both be empty and %NULL')
(cherry picked from commit 2c37a34d53)
2021-06-04 20:21:52 +02:00
Wen Liang
2f42c781ed bond: support tlb_dynamic_lb in balance-alb mode
In kernel, `tlb_dynamic_lb` is supported to configure in bonding mode
`balance-alb`. Therefore, add the support in NetworkManager to avoid
undesirable limitation.

Kernel previously had such limitation and it was removed in
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e79c1055749e3183a2beee04a24da378623329c5.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>

https://bugzilla.redhat.com/show_bug.cgi?id=1959934

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/868
(cherry picked from commit 18839361ac)
2021-06-03 14:32:26 +02:00
Beniamino Galvani
d0b0c65905
manager: fix assertion failure in active_connection_find()
Active-connections in the async_op_lst are not guaranteed to have a
settings-connection. In particular, the settings-connection for an
AddAndActivate() AC is set only after the authorization succeeds. Use
the non-asserting variant of the function to fix the following
failure:

 nm_active_connection_get_settings_connection: assertion 'sett_conn' failed

 1    _g_log_abort()
 2    g_logv()
 3    g_log()
 4    _nm_g_return_if_fail_warning.constprop.14()
 5    nm_active_connection_get_settings_connection()
 6    active_connection_find()
 7    _get_activatable_connections_filter()
 8    nm_settings_get_connections_clone()
 9    nm_manager_get_activatable_connections()
 10   auto_activate_device_cb()
 11   g_idle_dispatch()
 12   g_main_context_dispatch()
 13   g_main_context_iterate.isra.21()
 14   g_main_loop_run()
 15   main()

Fixes: 33b9fa3a3c ('manager: Keep volatile/external connections while referenced by async_op_lst')

https://bugzilla.redhat.com/show_bug.cgi?id=1933719
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/834
(cherry picked from commit 23cc0bf335)
2021-06-02 15:39:13 +02:00
Beniamino Galvani
3f1426c765 core: merge branch 'bg/rh1955101'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/855
https://bugzilla.redhat.com/show_bug.cgi?id=1955101

(cherry picked from commit a7cf9046d3)
2021-05-19 15:43:36 +02:00
Beniamino Galvani
a39517466b ovs: block auto activation of ovs-interfaces until ovsdb is ready
Otherwise the device tries to activate too early and fails.

(cherry picked from commit a3f35ea5cc)
2021-05-19 15:43:36 +02:00
Beniamino Galvani
fc611f6047 manager: fix active_connection_find()
Commit 33b9fa3a3c ("manager: Keep volatile/external connections
while referenced by async_op_lst") changed active_connection_find() to
also return active connections that are not yet activating but are
waiting authorization.

This has side effect for other callers of the function. In particular,
_get_activatable_connections_filter() should exclude only ACs that are
really active, not those waiting for authorization.

Otherwise, in ensure_master_active_connection() all the ACs waiting
authorization are missed and we might fail to find the right master
AC.

Add an argument to active_connection_find to select whether include
ACs waiting authorization.

Fixes: 33b9fa3a3c ('manager: Keep volatile/external connections while referenced by async_op_lst')

https://bugzilla.redhat.com/show_bug.cgi?id=1955101
(cherry picked from commit e694f2cec1)
2021-05-19 15:43:35 +02:00
Beniamino Galvani
57dd1281fa core: merge branch 'bg/assume'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/852

(cherry picked from commit aeea0203b4)
2021-05-14 18:23:46 +02:00
Beniamino Galvani
18022299bf core: don't reset assume state too early
If the device is still unmanaged by platform-init (which means that
udev didn't emit the event for the interface) when the device gets
realized, we currently clear the assume state. Later, when the device
becomes managed, NM is not able to properly assume the device using
the UUID.

This situation arises, for example, when NM already configured the
device in initrd; after NM is restarted in the real root, udev events
can be delayed causing this race condition.

Among all unamanaged flags, platform-init is the only one that can be
delayed externally. We should not clear the assume state if the device
has only platform-init in the unmanaged flags.

(cherry picked from commit 3c4450aa4d)
2021-05-14 18:23:45 +02:00
Beniamino Galvani
efe8046c1d managed: remove unneeded call to nm_device_assume_state_reset()
_set_state_full() in NMDevice already calls
nm_device_assume_state_reset() when the device reaches state >
DISCONNECTED.

(cherry picked from commit 5dc6d73243)
2021-05-14 18:23:44 +02:00
Beniamino Galvani
943aa1a858 device: add NM_UNMANAGED_ALL
(cherry picked from commit f244aa6907)
2021-05-14 18:23:44 +02:00
Thomas Haller
0e560605ad
dhcpcd: merge branch 'th/dhcpcd-kill-em-all'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/726

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/856

(cherry picked from commit 5f939cc1cb)
2021-05-14 10:36:21 +02:00
Thomas Haller
6c0e7922c2
dhcpcd: fix killing all processes
With kill(), the PID -1 means to send a signal to all processes.
nm_dhcp_client_get_pid() can return -1, if no PID is set. This
must be handled.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/726

Fixes: a2abd15fe0 ('DHCP: Support dhcpcd-9.x')
(cherry picked from commit 80ced3f1fb)
2021-05-14 10:36:20 +02:00
Thomas Haller
7751177474
dhcp: assert that pid_t is signed for NMDhcpClient
Probably pid_t is always signed, because kill() documents that
negative values have a special meaning (technically, C would
automatically cast negative signed values to an unsigned pid_t type
too).

Anyway, NMDhcpClient at several places uses -1 as special value for "no
pid". At the same time, it checks for valid PIDs with "pid > 1". That
only works if pid_t is signed.

Add a static assertion for that.

(cherry picked from commit 92bfe09724)
2021-05-14 10:36:20 +02:00
Beniamino Galvani
8444188c49 dhcp: nettools: support option 249 (Microsoft Classless Static Route)
From [1]:

  The length and the data format for the Microsoft Classless Static
  Route Option are exactly the same as those specified for the
  Classless Static Route Option in [RFC3442]; the only difference is
  that Option Code 249 should be used instead of or in addition to
  Option Code 121.

Use routes from option 249 when option 121 is not present, as already
done by the dhclient backend.

[1] https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dhcpe/f9c19c79-1c7f-4746-b555-0c0fc523f3f9

https://bugzilla.redhat.com/show_bug.cgi?id=1959461
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/851
(cherry picked from commit e320beb330)
2021-05-14 09:28:25 +02:00
Beniamino Galvani
da0c6dbc93 merge: branch 'bg/rh1945282' into main
https://bugzilla.redhat.com/show_bug.cgi?id=1945282
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/803

(cherry picked from commit 1186d5e5cd)
2021-04-29 11:29:43 +02:00
Beniamino Galvani
5279b85e02 manager: ensure auto default connection is deleted when a veth goes away
When the link goes away the manager keeps software devices alive as
unrealized because there is still a connection for them.

If the device is software and has a NM-generated connection, keeping
the device alive means that also the generated connection stays
alive. The result is that both stick around forever even if there is
no longer a kernel link.

Add a check to avoid this situation.

https://bugzilla.redhat.com/show_bug.cgi?id=1945282

Fixes: cd0cf9229d ('veth: add support to configure veth interfaces')
(cherry picked from commit d19773ecd4)
2021-04-29 11:29:42 +02:00
Beniamino Galvani
8cfbb73294 device: take reference to device object before 'delete_on_deactivate'
It's not clear why currently a weak reference is needed.

(cherry picked from commit a42682d44f)
2021-04-29 11:29:41 +02:00
Beniamino Galvani
6715a00e08 release: bump version to 1.30.5 (development) 2021-04-19 13:48:19 +02:00
Beniamino Galvani
a3e45da9f9 release: bump version to 1.30.4 2021-04-19 13:48:18 +02:00
Beniamino Galvani
c424e06485 NEWS: update 2021-04-19 10:44:55 +02:00
Beniamino Galvani
40ea37e7f7 dhcp: set TERMINATED state when the client is stopped
NM_DHCP_STATE_DONE is for when the client reports that it is shutting
down. If we manually stop it, we should set the TERMINATED state, so
that NMDevice doesn't start a grace period waiting for a renewal.

This fixes the:

 device (enp1s0): DHCPv4: trying to acquire a new lease within 90 seconds

message printed when NM is shutting down.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/802
(cherry picked from commit 4784c7dccd)
2021-04-14 11:55:55 +02:00
Thomas Haller
950b7d573b
libnm: fix nm_device_set_autoconnect() to use correct D-Bus property name
Fixes: ce0e898fb4 ('libnm: refactor caching of D-Bus objects in NMClient')
(cherry picked from commit 6b64fac06d)
2021-04-12 15:52:24 +02:00
Beniamino Galvani
5eadbb29c7 Revert "initrd: set the bootif MAC in existing connection with ifname"
This reverts commit 389575a6b1.

When the command line contains BOOTIF and there is another ip=
argument specifying an interface name, we can follow 2 approaches:

 a) BOOTIF creates a new distinct connection with DHCP
    (the behaviour before the commit)

 b) the connection generated for ip= will be also be bound to the
    BOOTIF MAC (the behavior introduced by the commit)

Restore a) because we can't be sure that the MAC address refers to the
same interface. In that case it's preferable to generate a different
connection.

https://bugzilla.redhat.com/show_bug.cgi?id=1915493#c35
(cherry picked from commit c21d4ce125)
2021-03-26 07:33:40 +01:00