Commit Graph

31938 Commits

Author SHA1 Message Date
Lubomir Rintel
088bfd817a cloud-setup: document detect() and get_config() methods
Clarify that detect() needs to succeed before get_config().

I thought it's sort of common sense, but it's better to be explicit as
we're going to rely on that.
2023-03-07 13:54:03 +01:00
Lubomir Rintel
cd74d75002 cloud-setup: make nm_http_client_req() accept a method argument
We'll need to be able to issue PUT calls.
2023-03-07 13:54:03 +01:00
Lubomir Rintel
85ce088616 cloud-setup: rename get/Get identifiers to req and Req
We're going to extend those to issue methods other than GET.
Also, "request" would've been too long, "req" looks nicer.
2023-03-07 13:54:03 +01:00
Lubomir Rintel
ce225b2c06 cloud_setup: unexport nm_http_client_get()
It's not used anywhere.
2023-03-07 13:54:03 +01:00
Jordi Mas
308e224e8e po/ca: fixes to Catalan translation
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1556
2023-03-06 08:38:07 +01:00
Thomas Haller
54c23f440b connectivity: avoid uninitialized variable warning in nm_connectivity_check_start()
In file included from ./src/libnm-std-aux/nm-default-std.h:102,
                   from ./src/libnm-glib-aux/nm-default-glib.h:11,
                   from ./src/libnm-glib-aux/nm-default-glib-i18n-prog.h:13,
                   from ./src/core/nm-default-daemon.h:11,
                   from src/core/nm-connectivity.c:8:
  src/core/nm-connectivity.c: In function ‘nm_connectivity_check_start’:
  ./src/libnm-std-aux/nm-std-aux.h:180:12: error: ‘reason’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
           if (expr)                      \
              ^
  src/core/nm-connectivity.c:1055:29: note: ‘reason’ was declared here
           const char         *reason;
                               ^~~~~~
2023-03-03 19:49:28 +01:00
Thomas Haller
40dd8bf93a platform/tests: avoid accessing in_addr_t via NMIPAddr union
The compiler may dislike this:

      CC       src/core/platform/tests/libNetworkManagerTest_la-test-common.lo
    In function '_ip_address_add',
        inlined from 'nmtstp_ip4_address_add' at ../src/core/platform/tests/test-common.c:1892:5:
    ../src/core/platform/tests/test-common.c:1807:63: error: array subscript 'NMIPAddr {aka const struct _NMIPAddr}[0]' is partly outside array bounds of 'in_addr_t[1]' {aka 'unsigned int[1]'} [-Werror=array-bounds]
     1807 |                                                   peer_address->addr4,
          |                                                   ~~~~~~~~~~~~^~~~~~~
    ../src/core/platform/tests/test-common.c: In function 'nmtstp_ip4_address_add':
    ../src/core/platform/tests/test-common.c:1886:36: note: object 'peer_address' of size 4
     1886 |                        in_addr_t   peer_address,
          |                        ~~~~~~~~~~~~^~~~~~~~~~~~
    ...

Fixes: 06aafabf14 ('platform/test: add test adding IPv4 addresses that only differ by their peer-address')
2023-03-03 19:31:18 +01:00
Thomas Haller
d0732962d2 contrib: install more packages in "nm-in-container.sh" 2023-03-03 15:42:05 +01:00
Beniamino Galvani
06219dbcf9 merge: branch 'bg/dnsmasq-global-conf'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1555
2023-03-03 14:53:29 +01:00
Beniamino Galvani
f57a848da5 man: update documentation about global DNS configuration
Now the settings in the [global-dns] section are used *in addition* to
connection-specific ones. Only the global domains sections, when
valid, override connection settings. Update the man page to clarify
that.

Fixes: 1f0d1d78d2 ('dns-manager: always apply options from [global-dns]')
2023-03-03 14:06:24 +01:00
Beniamino Galvani
5c0a927e0f dnsmasq: process both global and per-device configuration
The global configuration now can be valid when there are no global
domains defined. The dnsmasq backend must process it and then, if
there is no global default domain, also process the per-connection
settings.

Fixes: 1f0d1d78d2 ('dns-manager: always apply options from [global-dns]')
2023-03-03 14:06:24 +01:00
Thomas Haller
713de313dc contrib: add usage comment to "git-subtree-reimport.sh" 2023-03-03 13:45:31 +01:00
Thomas Haller
e94e759f3a c-stdaux: re-import git-subtree for 'src/c-stdaux'
git subtree pull --prefix src/c-stdaux git@github.com:c-util/c-stdaux.git main --squash
2023-03-03 13:40:38 +01:00
Thomas Haller
a6ead14f33 Squashed 'src/c-stdaux/' changes from eceefe959250..699c20de4e81
699c20de4e81 c-stdaux: workaround warning "-Wunused-value" in c_internal_assume_aligned()
193444c22c09 c-stdaux: workaround compiler error with clang 3.4 and __builtin_assume_aligned()
ed5fee49a3ec build: prepare v1.4.0
615c52daed67 Merge pull request #14 from dvdhrm/pr/load
32462ddc2ea5 c-stdaux: add c_load*() helpers
5878375d81ba c-stdaux: add c_assume_aligned()

git-subtree-dir: src/c-stdaux
git-subtree-split: 699c20de4e81f4b15786cb170340a87f69483f3d
2023-03-03 13:40:38 +01:00
Beniamino Galvani
aa66472146 platform: fix test_link_set_properties()
The link object is no longer valid after the cache gets updated in
nm_platform_link_change().

Fixes: e02fd76d9f ('platform: support changing link properties')
2023-03-03 12:04:38 +01:00
Beniamino Galvani
992e39e048 merge: branch 'bg/link-setting'
https://bugzilla.redhat.com/show_bug.cgi?id=2158328
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1541
2023-03-03 11:52:24 +01:00
Beniamino Galvani
220189b9e6 device: manually update link properties for ovs interfaces
OVS interfaces are special: the kernel link is created only after the
device is attached to the ovs-port, and as with all ports this happens
during stage3(ip-config). That means that the link doesn't exist
during stage2(config); therefore, explicitly update link properties
once the link appears.
2023-03-02 16:57:08 +01:00
Beniamino Galvani
16f491eb13 device: set link properties
Set link properties during activation and restore the previous values
on deactivation.
2023-03-02 16:53:54 +01:00
Beniamino Galvani
e02fd76d9f platform: support changing link properties
Add support in platform for changing the newly introduced link
properties.
2023-03-02 16:51:16 +01:00
Beniamino Galvani
39bfcf7aab all: add "link" setting
Introduce a new "link" setting that holds properties that are related
to the kernel link.
2023-03-02 16:51:16 +01:00
Beniamino Galvani
f97dd2bb95 libnm-core: remove assertion in test
It's another place to change when adding a new setting and it doesn't
seem useful to assert that the number is exactly 54.
2023-03-02 16:51:16 +01:00
Beniamino Galvani
cae5d1b89f libnmc-setting: allow the "match" setting for some port connections
A {bond, bridge, team, ovs-port} port profile should support a "match"
setting.
2023-03-02 16:51:16 +01:00
Beniamino Galvani
babe2bacd3 platform: rename link_change() to link_change_extra()
There are many functions to replace properties of a link
(link_set_address, link_set_mtu, link_set_name, link_change,
etc.). Eventually, they will be replaced by a function that does
everything and removes all the code duplication.

That function will be named link_change(); rename the current
link_change() to link_change_extra().
2023-03-02 16:51:16 +01:00
Beniamino Galvani
24deb07159 device: reconfigure ethtool and tc also for assumed devices
We need to set the ethtool and tc properties for assumed devices,
since they go through a normal activation. External devices should not
be touched by NM.
2023-03-02 16:51:16 +01:00
Beniamino Galvani
86b922695f settings: preserve existing connection flags on update
We are passing to the plugin only 'sett_flags', which is the bitmask
of flags to change and works together with 'sett_mask'; however,
plugins interpret that value as the new flags value. The result is
that if there is no change needed (0/0), the existing flags are lost.
Simple reproducer:

  ip link add dummy1 type dummy
  ip link set dummy1 up
  ip addr add dev dummy1 fd01::12/64
  sleep 1

  # now, a external connection is created by NM

  echo "BEFORE:"
  cat /run/NetworkManager/system-connections/dummy1.nmconnection | grep "nm-generated\|volatile\|external"

  # just add a new address to the interface to make it lose
  # the external flag

  ip addr add dev dummy1 172.25.42.1/24
  sleep 1

  echo "AFTER:"
  cat /run/NetworkManager/system-connections/dummy1.nmconnection | grep "nm-generated\|volatile\|external"

Output:

  BEFORE:
  nm-generated=true
  volatile=true
  external=true
  AFTER:

Fixes: d35d3c468a ('settings: rework tracking settings connections and settings plugins')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1548
2023-03-02 11:21:34 +01:00
Beniamino Galvani
a7405b0892 platform: fix bridge test with fake platform
Fixes: 5afb323ed8 ('platform/tests: add test for nm_platform_link_set_bridge_info()')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1552
2023-03-01 23:51:22 +01:00
Beniamino Galvani
7ba9f94237 merge: branch 'fix-suiteb'
nmcli: add WPA-EAP-SUITE-B-192 to SECURITY when ap is wpa-eap-suite-b-192

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1527
2023-03-01 22:49:47 +00:00
liaohanqin
2f8694c439 nmcli: add WPA-EAP-SUITE-B-192 to SECURITY 2023-03-01 13:59:32 +00:00
Thomas Haller
5afb323ed8 platform/tests: add test for nm_platform_link_set_bridge_info() 2023-03-01 11:39:07 +01:00
Vladislav Tsisyk
6de0bb6a86 bridge: set vlan_filtering and vlan_default_pvid via netlink
This commit changes setting values of said attributes from writing string to
sysfs to sending Netlink message.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1499
2023-03-01 11:39:01 +01:00
Thomas Haller
336b46d1c2 ifcfg-rh: fix wrong (transfer-full) annotation in internal code
The annotation is wrong. However, we don't generate
gtk-doc/introspection data for such internal code, so it doesn't really
matter.
2023-03-01 08:25:58 +01:00
Thomas Haller
dd5e769f24 build: add test for checking consistency of "nm-autoptr.h" 2023-02-28 16:33:07 +01:00
Thomas Haller
e3ae3b1732 libnm: add missing types to "nm-autoptr.h" header 2023-02-28 16:33:07 +01:00
Thomas Haller
4e1320eda1 vapi: merge branch 'tintou/gir-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1545
2023-02-28 13:07:32 +01:00
Thomas Haller
fdec6a97e8 vapi: add test for consistency of "vapi/NM-1.0.metadata" 2023-02-28 13:05:47 +01:00
Corentin Noël
4d325bafe1 vapi: Add several namespace changes and more specific types for properties
Add overrides for properties constants of new objects to allow to match them with their
object type as it was the case for former objects.

Specify the types of properties with element-types.

Namespace Attributes so that they are logically sorted.

Remove several skips to allow to use the entirety of the visible methods.
2023-02-28 13:05:47 +01:00
Corentin Noël
e0b2123c2c libnm/connection: Add missing annotations to nm_connection_diff
Allows to use this function in GObject introspected languages.

Also workaround a current issue with the gtk-doc parser not taking nested
element-type into account.
2023-02-28 13:05:47 +01:00
Corentin Noël
169f8748ba libnm: Specify the main header in the .gir file
Bindings compiling to C need to know which main header to include.
2023-02-28 13:05:47 +01:00
Thomas Haller
206bd71dbc platform: merge branch 'th/platform-nl-extack-msg'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1543
2023-02-28 12:52:55 +01:00
Thomas Haller
9bb47d07d9 platform: minor refactoring of temporary-not-available routes
This will be used also for IPv4 addresses. Rename and make the function
more generally useful.
2023-02-28 12:13:45 +01:00
Thomas Haller
eca8ebef18 platform: get extack_msg innm_platform_ip_route_sync()
Request the extack_msg for nm_platform_ip_route_add() call. Note that we (currently)
don't do anything with it, however requesting it has no downsides. That is, the
message already is heap allocated in the lower layers, so this only affects whether
it will be returned up to nm_platform_ip_route_sync().
2023-02-28 12:12:08 +01:00
Thomas Haller
d755b50808 platform: return extack message from add address/route operations 2023-02-28 12:08:07 +01:00
Thomas Haller
61388fd9c7 platform: drop logging for unexpected sequence number
It is not clear how that information is relevant. Since it is also
only logged when building with a non-default configure option, this
doesn't seem useful. Drop it.
2023-02-28 12:08:07 +01:00
Thomas Haller
bb9894abec platform: minor cleanup of event_seq_check()
- unindent the code by "continue" the loop for the irrelevant case.
- fix indentation of comments.
- avoid unnecessary g_strdup() call if the extack message is NULL.
2023-02-28 12:08:06 +01:00
Thomas Haller
1d69b41db9 platform: log extack warning messages for netlink requests
The extack can also be returned on success. In that case,
they are warnings. Log them, it might be useful.
2023-02-28 12:08:06 +01:00
Thomas Haller
6ca537fa6a platform: rename variables for extack message
Consistently name those variables and parameters "extack_msg".
The previous term "errmsg"/"msg" was not used consistently, and it
is also not clear what message this really is. For netlink, it
is well understood what Extended ACK means.
2023-02-28 12:08:06 +01:00
Thomas Haller
6f854ecaeb platform/netlink: cleanup nla_strlcpy() to not wipe remaining buffer
strlcpy()/g_strlcpy() has a well understood behavior. nla_strlcpy()
did not behave like that. Instead, it also used to always wipe the
remainder of the string, similar to what strncpy() would do.

True, if we do

  nla_strlcpy(obj->link.name, tb[IFLA_IFNAME], IFNAMSIZ);

then we might want to clear the remainder and don't care about the
overhead of writing up to 14 bytes unnecessarily... However, actually
all callers of nla_strlcpy() either operate on a buffer that is already
pre-inialized with zero, or they really don't care about the
uninitialized memory after the string. So this was nowhere the desired
behavior.

Change nla_strlcpy() to not wipe the remainder of the buffer, so it behaves
mostly like strlcpy()/g_strlcpy() and as one would expect.

Add nla_strlcpy_wipe(), which on top of it also clears the remaining
buffer. In that aspect, it bears some similarities with strncpy(), but it
differs in other regards from strncpy (always NUL terminating and
returning the srclen). Yes, the name nla_strlcpy_wipe() is maybe
unfamiliar to the user, but it really is like nla_strlcpy() with the
addition to clear the buffer. That seems simple enough to understand
based on the name.

Note that all existing callers of nla_strlcpy() do not care about
clearing the memory, and the change in behavior is fine for them.
2023-02-28 12:08:06 +01:00
Thomas Haller
d73a5d692b platform/netlink: assert for valid string in nla_get_string() 2023-02-28 12:08:06 +01:00
Thomas Haller
90cc458d31 libnm: merge branch 'champtar:route-unreachable'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1549
2023-02-28 11:30:45 +01:00
Etienne Champetier
0decc027ba platform/trivial: fix route type name (unavailable -> unreachable)
Fixes: 766349879e ('platform/trivial: add code comments for NMPGlobalTracker')
2023-02-28 11:29:59 +01:00