Commit graph

27969 commits

Author SHA1 Message Date
Thomas Haller
1794d80028
libnm: mark option parameters for nm_setting_wired_get_num_s390_options() as (allow-none) 2021-03-16 09:55:48 +01:00
Thomas Haller
dccfe1df34
libnm: use nm_utils_strv_find_binary_search() in valid_s390_opts_check() 2021-03-16 09:55:48 +01:00
Thomas Haller
b9d73cfb2d
libnm: only check once for valid static array in valid_s390_opts_check()
No need to check every time. The buffer is a const global buffer,
so checking it once is enough.
2021-03-16 09:55:48 +01:00
Thomas Haller
80c98b60da
libnm: make list of valid s390s options const
A const global variable is stored in immutable memory.
You thus get a crash trying to modify it, which is desirable.

The user is really not supposed to modify this buffer,
even if nm_setting_wired_get_valid_s390_options() wrongly
returns a non-const pointer.
2021-03-16 09:55:48 +01:00
Thomas Haller
ec6e9f0cac
core: minor cleanup in NMDeviceEthernet:update_connection() to set s390 options
We should have variables of the correct type and cast where necessary,
and not use void pointers.
2021-03-16 09:55:47 +01:00
Thomas Haller
07610da4ca
shared: add mutable union field NMUtilsNamedValue.{name,value_str}_mutable
NMUtilsNamedValue is a generic tuple that we use for different purposes.
Often we require a mutable string, so add a union alias for that case.
2021-03-16 09:55:47 +01:00
Thomas Haller
ca869bff9f
shared: add nm_utils_strv_find_binary_search() helper 2021-03-16 09:55:47 +01:00
Thomas Haller
e4aa3f4b2d
libnm: add "bridge_role" option to "ethernet.s390-options"
https://bugzilla.redhat.com/show_bug.cgi?id=1935842
2021-03-16 09:02:07 +01:00
Jagadeesh Kotra
3df607f3c2
examples: use python3 compatible exception syntax
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/781
2021-03-16 07:55:12 +01:00
Wen Liang
ec3e2561a8
libnm/doc: document the type of each LLDP attribute of libnm
Signed-off-by: Wen Liang <liangwen12year@gmail.com>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/777
2021-03-15 17:40:14 +01:00
Thomas Haller
48c0305bb2
all: merge branch 'th/initrd-move'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/778
2021-03-15 17:11:25 +01:00
Thomas Haller
60c90f4410
build: fix dependencies for building src/libnm-platform/wifi/*
CC       src/libnm-platform/wifi/libnm_platform_la-nm-wifi-utils-wext.lo
    In file included from ../src/libnm-platform/wifi/nm-wifi-utils-wext.c:7:
    In file included from ../src/libnm-glib-aux/nm-default-glib-i18n-lib.h:13:
    In file included from ../src/libnm-glib-aux/nm-default-glib.h:11:
    ../src/libnm-std-aux/nm-default-std.h:30:10: fatal error: config-extra.h file not found
    #include "config-extra.h"
             ^~~~~~~~~~~~~~~~
      ...
      GEN      config-extra.h
2021-03-15 17:10:57 +01:00
Thomas Haller
e643703418
tests/client: run "test-client.py" also for meson 2021-03-15 17:10:56 +01:00
Thomas Haller
019bc3233a
client/tests: move "clients/tests/test-client.py" to "src/tests/client/"
Note that "test-client.py" currently only tests nmcli. But what it does
is to spawn test-networkmanager-service.py and run nmcli against it.

As such, it could really be used to test any NetworkManager client
against the stub service. Hence this test is not under
"src/nmcli/tests", but under "src/tests/client/" where it is more
general.
2021-03-15 17:10:55 +01:00
Thomas Haller
d8dd6e94e6
tui: move from "clients/tui/" to "src/nmtui/" 2021-03-15 17:10:54 +01:00
Thomas Haller
61f99307c6
cli: move from "clients/cli/" to "src/nmcli/" 2021-03-15 17:10:54 +01:00
Thomas Haller
71f0511b1f
cloud-setup: move from "clients/cloud-setup/" to "src/nm-cloud-setup/" 2021-03-15 17:10:53 +01:00
Thomas Haller
9fc1bf90fa
initrd: move "src/core/initrd/" to "src/nm-initrd-generator/" 2021-03-15 17:10:53 +01:00
Thomas Haller
9d647cbcbc
initrd: don't include headers of the daemon from src/core/ 2021-03-15 17:10:53 +01:00
Thomas Haller
0033da8f61
config: add "nm-base/nm-config-base.h"
Note that we take defines from "src/core/nm-config.h" which
are GPL-2.0-or-later licensed.

libnm-base we want to include in other LGPL licensed sources,
we it must also be LGPL.

"relicense" the code that I take. I don't think it's a problem, because:

- these are only plain defines. To which extend is that even
  copyrightable?

- as far as I see, all the code was contributed by people who agreed
  to such relicensing. See RELICENSE.md file.
2021-03-15 17:10:52 +01:00
Thomas Haller
5235ea3bf4
tests: move nmtst_init_with_logging() to "libnm-glib-aux/nm-test-utils.h" 2021-03-15 17:10:52 +01:00
Thomas Haller
e08a0a3a68
build/meson: fix test name for "test-dispatcher-envp" 2021-03-15 17:10:52 +01:00
Thomas Haller
2b37659c62
build/meson: don't try to buildlibnmt-newt without libnewt 2021-03-15 17:10:52 +01:00
Thomas Haller
10b4d10c9b
build: fix setting CFLAGS when building "libnm-vpn-plugin-utils-test.la"
Internally we set CPPFLAGS, because setting CFLAGS disables inheriting AM_CFLAGS --
which we use for example for "-Wno-pragmas" from the configure script.
2021-03-15 17:10:52 +01:00
Thomas Haller
0d856432b7
initrd/tests: avoid variable declaration in for loop in test_if_off()
src/core/initrd/tests/test-cmdline-reader.c: In function test_if_off:
    src/core/initrd/tests/test-cmdline-reader.c:564:5: error: for loop initial declarations are only allowed in C99 mode
        for (int i = 0; i < G_N_ELEMENTS(conn_expected); ++i) {
        ^
    src/core/initrd/tests/test-cmdline-reader.c:564:5: note: use option -std=c99 or -std=gnu99 to compile your code
2021-03-15 17:10:52 +01:00
Thomas Haller
c96a21e3cf
wwan/ofono: merge branch 'pr/771'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/771
2021-03-15 13:33:20 +01:00
Bhushan Shah
0daea018c6
wwan/ofono: use gs_unref_variant instead of g_variant_unref 2021-03-15 13:32:47 +01:00
Tony Espy
e4941696be
wwan/modem: do not mark connection as failed when connection drops
If the modem is connected, and registrations drops, and then is restored, the
connection isn't re-activated.

The fix was simply to change modem_state_cb to not return after setting the
state to failed, which allows nm_device_queue_recheck_available to be called,
which queues a state transition to UNAVAILABLE.
2021-03-15 13:32:47 +01:00
Tony Espy
c49fe910d6
wwan/ofono: Fix ofono re-connection problems
This patch fixes two issues,

- If ofono returns InProgress, don't treat as a PREPARE_FAILURE.

- If context in question is already active, instead of trying to wait
for "Active" property to change, check the current state of context
properties, and if it is Active = true, fetch the rest of context
settings and process them

Original bug: https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1565717

Co-Authored-by: Bhushan Shah <bshah@kde.org> [rebase patch to upstream,
and adjust it to newer coding style]
2021-03-15 13:32:47 +01:00
Thomas Haller
5d78d94445
libnm: merge branch 'th/lldp-neighbor-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/780
2021-03-12 18:56:53 +01:00
Thomas Haller
cba3113607
libnm: guard against empty attribute names for NMLldpNeighbor
The libnm API NMLldpNeighbor does not accept "" as an attribute name.
And it does not need to, because a reasonable NetworkManager should
never expose such names.

However, we should not trust NetworkManager to be reasonable. Check that
the attribute name is not empty.
2021-03-12 18:56:43 +01:00
Thomas Haller
84d64217f8
libnm: call nm_lldp_neighbor_get_attr_value() from redundant helpers 2021-03-12 18:56:42 +01:00
Thomas Haller
626a83d025
libnm/trivial: move code
Move nm_lldp_neighbor_get_attr_value() first. The other functions are all redundant
and should possibly be deprecated.
2021-03-12 18:56:41 +01:00
Thomas Haller
be40c8fdf7
libnm: for boxed type NMLldpNeighbor only ref the instance instead of deep cloning
There is no public API to modify a NMLldpNeighbor instance. They are only
created by NMDevice and afterwards immutable. There is no point to duplicate
them, when we can just take a ref.

Note that this means we must be careful if we ever add API to mutate a
NMLldpNeighbor. But immutable types are awesome, so we probably should
never do that anyway.
2021-03-12 18:56:41 +01:00
Thomas Haller
ae881b7b5b
libnm: minor cleanup of NMLldpNeighbor getters 2021-03-12 18:56:40 +01:00
Thomas Haller
88e22b6832
libnm: sort attributes in nm_lldp_neighbor_get_attr_names()
A hash table gives values in undefined order. Sort them, to
get a stable order.
2021-03-12 18:56:40 +01:00
Thomas Haller
f8e19f805f
libnm: make NMLldpNeighbor ref-counting thread-safe
At least ref-counting should be thread safe for our public API.

Note that NMLldpNeighbor has no public API for mutating a neighbor
instance. Especially for immutable types, it is very attractive that
ref-counting is thread-safe.

Also use slice allocator for NMLldpNeighbor structs.
2021-03-12 18:56:40 +01:00
Jonas Jelten
cc7bf676eb initrd: fix auto-establishment for dhcp6 and auto6 methods
Fixes: ecc074b2f8 ('initrd: add command line parser')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/586
2021-03-12 18:31:25 +01:00
Beniamino Galvani
5af95f9d79 initrd: fix indentation
Fixes: c907fecbc5 ('initrd: fix compilation error')
2021-03-12 11:47:59 +01:00
Beniamino Galvani
c907fecbc5 initrd: fix compilation error
../src/core/initrd/tests/test-cmdline-reader.c:461:36: error: unused variable 'connections' [-Werror,-Wunused-variable]
    gs_unref_hashtable GHashTable *connections = NULL;
                                   ^

Fixes: c27626a0ce ('initrd: set multi-connect=single for connections with static IP')
2021-03-12 11:02:27 +01:00
Beniamino Galvani
88aae71f22 initrd: merge branch 'bg/initrd-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/779
2021-03-12 09:47:18 +01:00
Beniamino Galvani
c27626a0ce initrd: set multi-connect=single for connections with static IP
We don't want to have multiple devices up with the same static IP. Set
multi-connect=single.

https://bugzilla.redhat.com/show_bug.cgi?id=1915493
2021-03-12 09:46:45 +01:00
Beniamino Galvani
389575a6b1 initrd: set the bootif MAC in existing connection with ifname
If an existing connection has an interface name set and the generator
finds a BOOTIF argument, it creates a new connection for BOOTIF.

Instead, the generator should set the MAC in the existing connection;
this sounds more correct and it is what the network-legacy module
does.

https://bugzilla.redhat.com/show_bug.cgi?id=1915493
2021-03-12 09:46:22 +01:00
Beniamino Galvani
5f73646524 initrd: fix may-fail for IPv6 2021-03-12 09:44:49 +01:00
Thomas Haller
4d609dd92f
libnm: fix exporting nm_setting_match_new() symbol 2021-03-11 19:00:34 +01:00
Thomas Haller
7b8e626529
libnm: add NM_VERSION_1_32, NM_AVAILABLE_IN_1_32, NM_DEPRECATED_IN_1_32 macros 2021-03-11 18:54:40 +01:00
Beniamino Galvani
840e54a96c devices: fail optional-802.1X connections if supplicant disappears
802-1x.optional=yes means that NM should tolerate a failure or a
timeout of the 802.1X authentication and should keep the connection
up. Even if the authentication doesn't succeed, NM keeps the
supplicant running so that it can continue trying.

If the supplicant disappears because it crashed or was killed
externally, NM should fail the connection so that it can be retried.

The current code is wrong also because after releasing the supplicant
interface, it calls wired_auth_cond_fail() which tries to connect a
signal to priv->supplicant.iface (which is NULL).

https://bugzilla.redhat.com/show_bug.cgi?id=1934291
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/776
2021-03-11 10:06:38 +01:00
Wen Liang
5e3482caec docs: improve manual page about ETHTOOL_OPTS
Signed-off-by: Wen Liang <liangwen12year@gmail.com>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/762
2021-03-10 14:25:51 +01:00
Beniamino Galvani
190fd9aa9f bond: restore MAC on release only when there is a cloned MAC address
Currently we unconditionally reset the MAC to the previous value after
releasing ports. This has some disadvantages:

 - by default, after the last port is removed the bond will have one
   of the previous port's address, which could conflict with the port;

 - in some cases, changing the bond MAC is not possible. For example
   when the bond is active-backup and has fail_over_mac=1|2. In such
   case the netlink call succeeds, but the address doesn't
   change; then NM would keep waiting for some time.

Don't try to restore the MAC unless the bond connection has a cloned
MAC set.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/775
2021-03-09 10:32:20 +01:00
Thomas Haller
ca43239beb
logging: merge branch 'th/platform-sysctl-logging-mt'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/772
2021-03-09 09:37:57 +01:00