Commit graph

24693 commits

Author SHA1 Message Date
Antonio Cardace
5fb293cfc6 nmcli: remove interface length check in nmcli
nmcli should not perform checks on the interface name length,
this kind of operations should only be performed by the NetworkManager
daemon and not be duplicated inside cli applications.

(cherry picked from commit 15a8595575)
2020-02-17 17:25:52 +01:00
Antonio Cardace
816aacc4c2 nm-device-factory: remove ifname check as it prevents activating OVS connections
(cherry picked from commit 0cac094c93)
2020-02-17 17:25:52 +01:00
Antonio Cardace
e52fccb0d0 nm-dhcp-client: use nm_assert() to check ifname
so that it gets compiled out in production builds, this check is
carried out anyway when the connection is created.

(cherry picked from commit 9e27252c27)
2020-02-17 17:25:52 +01:00
Thomas Haller
91b2be2e1b all: merge branch 'th/ra-timeout'
https://bugzilla.redhat.com/show_bug.cgi?id=1801158

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

(cherry picked from commit 4c993f6bbb)
2020-02-17 15:12:30 +01:00
Thomas Haller
8d04ae1e84 version: add NM_VERSION_1_22_8/NM_AVAILABLE_IN_1_22_8 macros 2020-02-17 15:06:10 +01:00
Thomas Haller
f259b4b6c0 ndisc: implement "ipv6.ra-timeout" property
(cherry picked from commit 9dde86d02c)
2020-02-17 15:06:10 +01:00
Thomas Haller
1f4c8a0f54 ndisc: rename NM_NDISC_RA_TIMEOUT signal to NM_NDISC_RA_TIMEOUT_SIGNAL
We will add a property NM_NDISC_RA_TIMEOUT for which this name is better
suited. The problem is really that our convention for object properties
and signals defines have no prefix to indicate whether it's a property
or a signal.

Rename.

(cherry picked from commit 10f0253f2e)
2020-02-17 15:06:10 +01:00
Thomas Haller
7c86bc9c97 ndisc: improve logging message with nm_ndisc_start() and minor cleanup
(cherry picked from commit b2e30b3c9a)
2020-02-17 15:06:10 +01:00
Thomas Haller
c1b640da2d libnm,cli,ifcfg-rh: add ipv6.ra-timeout configuration option
(cherry picked from commit de4aeb34e3)
2020-02-17 15:06:10 +01:00
Thomas Haller
8985917c9e cli: add support for "ipv6.dhcp-timeout" property
It was internally supported, but not by nmcli.

(cherry picked from commit 0d8f55a1cb)
2020-02-17 15:06:10 +01:00
Thomas Haller
60ef3a3e59 ifcfg-rh: belatedly add support for "ipv6.dhcp-timeout" setting
(cherry picked from commit 843c546b84)
2020-02-17 15:06:10 +01:00
Thomas Haller
fe6c3f0867 ifcfg-rh: fix potential crash with variadic argument make_ip6_setting()
It is undefined behavior and can lead to crashes or memory corruption.
In practice, this only had an issue on Big Endian systems.

Fixes: fdbf4ae5e6 ('ifcfg-rh: add IPV4_DHCP_TIMEOUT key for ipv4.dhcp-timeout property')
(cherry picked from commit 9b82d29f5f)
2020-02-17 15:06:10 +01:00
Thomas Haller
7751f853c3 ifcfg-rh: inline unnecessary function write_ip6_setting_dhcp_hostname()
If a function is only called once, it may not help to simplify the code
but make it more complicated. It would only simplify the code, if it
had a clear, distinct purpose. That isn't the case here. Also, the
IPv4 writer doesn't have such a function either. Drop and inline it.

(cherry picked from commit d06092acbd)
2020-02-17 15:06:10 +01:00
Thomas Haller
2ed1a6803e device: don't schedule grace timeout if dhcp-timeout is infinity
It feels wrong to schedule a timeout with G_MAXUINT32, if we actually
disabled the timeout. Of course, in practice there should be little
difference.

(cherry picked from commit 4c101f36ec)
2020-02-17 15:06:10 +01:00
Thomas Haller
bd02523b6b device/trivial: rename get_dhcp_timeout() virtual function to have a unique name
This is C, we have almost no IDE support. And ctags/cscope is much more
helpful if we use unique names.

Don't use the get_dhcp_timeout() name, because that is already used in
"src/devices/nm-device.c" already. Rename.

(cherry picked from commit be4129bb2d)
2020-02-17 15:06:10 +01:00
Thomas Haller
fb1b8de4d7 libnm/doc: explain values for dhcp-timeout setting
(cherry picked from commit e34db042af)
2020-02-17 15:06:10 +01:00
Antonio Cardace
a2a2bf5206 man: fix missing tag
(cherry picked from commit 1ccdce0c1d)
2020-02-17 14:35:15 +01:00
Antonio Cardace
83d5368a19 man: add dnsmasq option documentation on added dns servers
(cherry picked from commit 7ef684b1b3)
2020-02-17 14:35:09 +01:00
Thomas Haller
501893c4bc man: document connectivity.enabled option in NetworkManager.conf manual
(cherry picked from commit 655e1aa97f)
2020-02-17 14:34:59 +01:00
Thomas Haller
99caa0c28f doc: clarify default values for ipv4.mdns and ipv4.llmnr settings
LLMNR and mDNS settings can have their global default value configured
in "NetworkManager.conf".

Global default values should work the way that all regular values of the property
can be configured explicitly in the connection profile. The special "default" value
only indicates to allow lookup of the global default, but it should not have a
meaning of its own.

Note that if mDNS/LLMNR settings are left unspecified, we will set the
argument to SetLinkMulticastDNS() and SetLinkLLMNR() functions to "",
which means that systemd-resolved decides on a default. Also, depending
on the DNS plugin, the default value differs. This is all fine however.
In this case, the ultimate default value depends on other things (like
the DNS plugin), but each possible value is in fact explicitly
configurable. We also do that for "ipv6.ip6-privacy".

Anyway, cleanup the documentation a bit and try to better explain what
the default is.

(cherry picked from commit 3d07708f59)
2020-02-17 13:47:25 +01:00
Beniamino Galvani
3a43575539 libnm-core: fix documentation of dns-priority property
Clarify that VPNs are considered first in case of same priority, and
also that it's the *best* default route that matters.

(cherry picked from commit bf4b53d453)
2020-02-12 11:10:20 +01:00
Beniamino Galvani
2be04221de dhcp: merge branch 'bg/nettools-request-free'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/409
(cherry picked from commit 2e53fd4561)
2020-02-11 09:28:39 +01:00
Beniamino Galvani
9a1bbef1b4 dhcp: nettools: move to failed state if event dispatch fails
(cherry picked from commit 45521b1b38)
2020-02-11 09:28:27 +01:00
Beniamino Galvani
14aadaadf2 n-dhcp4: avoid double free of NDhcp4Outgoing
n_dhcp4_c_connection_start_request() should take ownership of the
request only on success. On failure the request is freed by the
caller.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/355
(cherry picked from commit 43016d6ebd)
2020-02-11 09:28:26 +01:00
Beniamino Galvani
0bd30d8da0 team: merge branch 'bg/team-race-rh1798947'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/410
https://bugzilla.redhat.com/show_bug.cgi?id=1798947
(cherry picked from commit a119dac998)
2020-02-11 09:21:46 +01:00
Beniamino Galvani
a0c209b653 team: ignore bus name appearance when killing teamd
If we are currently killing teamd, we are not interested in knowing
when it becomes ready.

(cherry picked from commit 554e9be5b0)
2020-02-11 09:21:35 +01:00
Beniamino Galvani
77635adb50 team: ignore bus name appearance if we can't determine process id
If the GetConnectionUnixProcessID() call fails, the process that
registered on the bus has died and we should ignore the name
appearance event.

(cherry picked from commit e94d76382c)
2020-02-11 09:21:33 +01:00
Thomas Haller
dbd7083881 libnm: merge branch 'th/libnm-active-connection-delay-ready'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/405

(cherry picked from commit 2d3a1af5d6)
2020-02-10 19:04:46 +01:00
Thomas Haller
60877600c5 libnm: hide NMActiveConnection until NMRemoteConnection is ready
Generally, libnm's NMClient cache only wants to expose NMObjects that
are fully initalized. Most objects don't require anything special,
except NMRemoteConnection which waits for the GetSettings() call to complete.

NMObjects reference each other. For example, NMActiveConnection
references NMDevice and NMRemoteConnection. There is a desire that an
object is only ready, if the objects that it references are ready too.
In practice that is not done, because usually every objects references
other objects, that means all objects would be declared as non-ready
as long as any of them is still initializing. That does not seem
desirable. Instead, most objects (except NMRemoteConnection and now
NMActiveConnection) are considered ready and visible, once their first
notification completes. In case the objects reference any object that is
not yet ready, the references is NULL (but the source object is visible
already). This is also done this way, to cope with cycles where
objects reference each other. In practice, such cycles should not be
exposed by NetworkManager. However, libnm should be robust against that.

This has the undesired effect that when you call AddAndActivate(), then
the NMActiveConnection might already be visible while its
NMRemoteConnection isn't. That means, ac.get_connection() will
initially return NULL, until the remote connection becomes ready.
Also add a special handling that NMActiveConnection waits for their
NMRemoteConnection to be ready, before being ready itself.

Fixes: ce0e898fb4 ('libnm: refactor caching of D-Bus objects in NMClient')
(cherry picked from commit 425412a363)
2020-02-10 19:04:46 +01:00
Thomas Haller
ef09aac69b libnm: minor cleanup of libnm trace logging
(cherry picked from commit 6b745e0725)
2020-02-10 19:04:46 +01:00
Beniamino Galvani
ff7545704e n-dhcp4: fix initialization of the 'secs' DHCP header field
Due to wrong type conversions, the value was always zero.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/341
(cherry picked from commit df6129d93a)
2020-02-10 16:41:07 +01:00
Thomas Haller
68fa338e34 contrib/REQUIRED_PACKAGES: fix script to work without GNU which installed
`which` is convenient, but not installed in Fedora container images.
Fix detection of whether to use `dnf` or `yum`.

(cherry picked from commit 5cc8ca4038)
2020-02-10 13:35:49 +01:00
Thomas Haller
27664ff425 contrib/REQUIRED_PACKAGES: ignore for non-existing packages "dbus-python", "pygobject3-base" on Fedora 32
These packages no longer exist on Fedora 32 and dnf fails due to
that. Ignore such errors.

(cherry picked from commit bdd45e6afa)
2020-02-10 13:35:48 +01:00
Thomas Haller
3632a0162a platform: merge branch 'th/platform-ethtool-gcc10-warnings'
(cherry picked from commit e658938ac5)
2020-02-10 13:34:33 +01:00
Thomas Haller
c1417087c8 platform: fix GCC warning about zero-length array in nmp_utils_ethtool_get_permanent_address()
GCC 10 complains about accesses to elements of zero-length arrays that
overlap other members of the same object:

  src/platform/nm-platform-utils.c: In function ‘nmp_utils_ethtool_get_permanent_address’:
  src/platform/nm-platform-utils.c:854:29: error: array subscript 0 is outside the bounds of an interior zero-length array ‘__u8[0]’ {aka ‘unsigned char[0]’} [-Werror=zero-length-bounds]
    854 |  if (NM_IN_SET (edata.e.data[0], 0, 0xFF)) {
  ./shared/nm-glib-aux/nm-macros-internal.h:731:20: note: in definition of macro ‘_NM_IN_SET_EVAL_N’

Fix this warning.

(cherry picked from commit d892a35395)
2020-02-10 13:34:33 +01:00
Thomas Haller
286bb2f029 platform: fix GCC warning about zero-length array in ethtool_get_stringset()
GCC 10 complains about accesses to elements of zero-length arrays that
overlap other members of the same object:

 src/platform/nm-platform-utils.c: In function ‘ethtool_get_stringset’:
 src/platform/nm-platform-utils.c:355:27: error: array subscript 0 is outside the bounds of an interior zero-length array ‘__u32[0]’ {aka ‘unsigned int[0]’} [-Werror=zero-length-bounds]
   355 |  len = sset_info.info.data[0];
       |        ~~~~~~~~~~~~~~~~~~~^~~
 In file included from src/platform/nm-platform-utils.c:12:
 /usr/include/linux/ethtool.h:647:8: note: while referencing ‘data’
   647 |  __u32 data[0];
       |        ^~~~

Fix this warning.

(cherry picked from commit 16e1e44c5e)
2020-02-10 13:34:33 +01:00
Thomas Haller
273fcf51bd Revert "platform: fix GCC warning about zero-lenght array (2)"
This reverts commit 5076fc0ca0.

(cherry picked from commit 0931c4f2ea)
2020-02-10 13:34:33 +01:00
Thomas Haller
f140e21689 Revert "platform: fix GCC warning about zero-lenght array (1)"
I think this solution is not right, because "char buf" is not guaranteed
to have the correct alignment. Revert, and solve it differently.

This reverts commit 6345a66153.

(cherry picked from commit 1fd7e45139)
2020-02-10 13:34:33 +01:00
Beniamino Galvani
a1b0edd24b ovs: wait that link disappears before continuing with deactivation
When we deactivate a virtual device, we usually schedule the deletion
of the link in an idle handler. That action will be executed at a
later time when the device is already in the disconnected state.

Similarly, for ovs interfaces we send the deletion command to the
ovsdb and then proceed to the disconnected state.

However, in the first case there is the guarantee that the link will
be deleted at some point, while for ovs interfaces it may happen that
ovs decides to reuse the same link if there is an addition
queued. Since reusing the same link confuses NM, let's implement
deactivate_async() for ovs-interfaces and wait that the link actually
goes away before proceeding.

https://bugzilla.redhat.com/show_bug.cgi?id=1782701
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/402
(cherry picked from commit 623a1e1f99)
2020-02-05 22:32:52 +01:00
Beniamino Galvani
047ab7f4af shared: redefine G_SOURCE_FUNC
G_SOURCE_FUNC has attribute GLIB_AVAILABLE_MACRO_IN_2_58, which means
that the compiler will emit a warning when GLIB_VERSION_MAX_ALLOWED <
GLIB_VERSION_2_58. We currently define GLIB_VERSION_MAX_ALLOWED as
GLIB_VERSION_2_40. Redefine the macro to fix the following build error
when using glib >= 2.63.5 (the version in which the attribute was
added):

  CC       shared/nm-glib-aux/libnm_glib_aux_la-nm-shared-utils.lo
 shared/nm-glib-aux/nm-shared-utils.c: In function ‘nm_g_unix_fd_source_new’:
 shared/nm-glib-aux/nm-shared-utils.c:3679:13: error: Not available before  [-Werror]
  3679 |  g_source_set_callback (source, G_SOURCE_FUNC (source_func), user_data, destroy_notify);

Fixes: 9c5741ccd2 ('shared/nm-glib: add compat implementation for G_SOURCE_FUNC()')
(cherry picked from commit 7f801685b2)
2020-02-05 14:33:11 +01:00
Beniamino Galvani
8d900b5bec merge: branch 'bg/gcc10'
Fix build using GCC 10.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/406
(cherry picked from commit 9a971849b5)
2020-02-03 15:32:55 +01:00
Beniamino Galvani
972b0db460 n-dhcp4: fix uninitialized variable
Properly initialize 'overload' when the space in the file section
ends.

 shared/n-dhcp4/src/n-dhcp4-outgoing.c: In function ‘n_dhcp4_outgoing_append’:
 shared/n-dhcp4/src/n-dhcp4-outgoing.c:198:17: error: ‘overload’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

(cherry picked from commit b2620e798a)
2020-02-03 15:32:03 +01:00
Beniamino Galvani
1bb93b7289 clients: add missing 'extern' keyword
(cherry picked from commit 482e5f04ea)
2020-02-03 15:31:31 +01:00
Beniamino Galvani
c02b0181cf platform: fix GCC warning about zero-lenght array (2)
GCC 10 complains about accesses to elements of zero-length arrays that
overlap other members of the same object:

  src/platform/nm-platform-utils.c: In function ‘nmp_utils_ethtool_get_permanent_address’:
  src/platform/nm-platform-utils.c:854:29: error: array subscript 0 is outside the bounds of an interior zero-length array ‘__u8[0]’ {aka ‘unsigned char[0]’} [-Werror=zero-length-bounds]
    854 |  if (NM_IN_SET (edata.e.data[0], 0, 0xFF)) {
  ./shared/nm-glib-aux/nm-macros-internal.h:731:20: note: in definition of macro ‘_NM_IN_SET_EVAL_N’

Fix this warning.

(cherry picked from commit 5076fc0ca0)
2020-02-03 15:31:30 +01:00
Beniamino Galvani
a7c1b324fd platform: fix GCC warning about zero-lenght array (1)
GCC 10 complains about accesses to elements of zero-length arrays that
overlap other members of the same object:

 src/platform/nm-platform-utils.c: In function ‘ethtool_get_stringset’:
 src/platform/nm-platform-utils.c:355:27: error: array subscript 0 is outside the bounds of an interior zero-length array ‘__u32[0]’ {aka ‘unsigned int[0]’} [-Werror=zero-length-bounds]
   355 |  len = sset_info.info.data[0];
       |        ~~~~~~~~~~~~~~~~~~~^~~
 In file included from src/platform/nm-platform-utils.c:12:
 /usr/include/linux/ethtool.h:647:8: note: while referencing ‘data’
   647 |  __u32 data[0];
       |        ^~~~

Fix this warning.

(cherry picked from commit 6345a66153)
2020-02-03 15:31:28 +01:00
Beniamino Galvani
311872ddca build: use -fcommon when building libnm-core
Building with GCC 10 gives the following error:

 multiple definition of_nm_jansson_json_object_iter_key';
 libnm/.libs/liblibnm.a(libnm_core_la-nm-json.o):/builddir/build/BUILD/NetworkManager-1.23.1/libnm-core/nm-json.c:24: first defined here /usr/bin/ld:
 libnm/.libs/liblibnm.a(libnm_core_la-nm-team-utils.o):/usr/include/jansson.h:202: multiple definition of _nm_jansson_json_object_iter';

This happens because GCC 10 defaults to -fno-common and so multiple
definitions of the same global variable are not merged together.

_nm_jansson_json_* symbols are defined in nm-json.c as void pointers
and, due to the following macros in nm-json.h:

 #define json_object_iter_next   (*_nm_jansson_json_object_iter_next)
 ...

the function declaration in jansson.h:

 void *json_object_iter_next(json_t *object, void *iter);

becomes a global variable as well:

 void *(*_nm_jansson_json_object_iter_next)(json_t *object, void *iter);

So, the symbol is present in nm-json.o and all other object files that
include nm-json.h, and -fcommon is required. Without it, it would be
necessary to define the symbols only in one place (for example,
nm-json.c), but then static inline functions from the jannson.h header
would still refer to the original (missing) jansson functions.

For the moment, just use -fcommon.

(cherry picked from commit d2d6a68697)
2020-02-03 15:31:19 +01:00
Beniamino Galvani
7ba2040caa all: remove wrong CURL option initialization
curl_multi_setopt() accepts CURLMOPT_* options, not CURLOPT_*
ones. Found by GCC 10:

clients/cloud-setup/nm-http-client.c:700:38: error: implicit conversion from ‘enum <anonymous>’ to ‘CURLMoption’ [-Werror=enum-conversion]
  700 |    curl_multi_setopt (priv->mhandle, CURLOPT_VERBOSE, 1);

Fixes: 69f048bf0c ('cloud-setup: add tool for automatic IP configuration in cloud')
(cherry picked from commit c11ac34f4c)
2020-02-03 15:31:18 +01:00
Antonio Cardace
4e756b1f44 release: bump version to 1.22.7 (development) 2020-01-31 10:46:12 +01:00
Antonio Cardace
5966766b65 release: bump version to 1.22.6 2020-01-31 10:46:12 +01:00
Antonio Cardace
81913280ef release: update NEWS 2020-01-31 10:46:07 +01:00