Commit graph

30977 commits

Author SHA1 Message Date
Thomas Haller 8686eb5927
contrib: fix syntax error in "configure-for-system.sh" 2022-09-08 15:29:10 +02:00
Lubomir Rintel a1de6810df device: don't ignore external slave removals
We've been outright ignoring master-slave checks if the link ended up
without a master since commit 2e22880894 ('device: don't remove the
device from master if its link has no master').

This was done to deal with OpenVSwitch port-interface relationship,
where the interface's platform link lacked an actual master in platform
(what matters there is the OVSDB entry), but the fix was too wide.

Let's limit the special case to devices whose were not enslaved to
masters that lack a platform link, which pretty much happens for
OpenVSwitch only.

Morale: Write better commit messages of future you is going to be upset
Fixes: 2e22880894 ('device: don't remove the device from master if its link has no master')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1358
2022-09-08 12:17:50 +02:00
Thomas Haller cfc36db2b7
release: bump version to 1.41.2 (development) 2022-09-08 10:31:30 +02:00
Thomas Haller af2bc358df
style: fix python black formatting of "generate-docs-nm-settings-docs-merge.py" 2022-09-08 09:00:27 +02:00
Wen Liang f225344812 Merge branch 'wl/ifcfg' into main
https://bugzilla.redhat.com/show_bug.cgi?id=2122703

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1357
2022-09-07 10:51:24 -04:00
Thomas Haller 61d74b0c15 ifcfg-rh: rework error handling in parse_infiniband_p_key() 2022-09-07 10:47:35 -04:00
Wen Liang 4c32dd9d25 ipoib: skip validating the DEVICE when reading the ifcfg file
For the ipoib connection, it is still considered as valid if the
profile does not set the device name. Also, the ifcfg reader should not
duplicate the checks that `nm_connection_verify()` performs (especially
not wrongly). Therefore, NM should skip validating the DEVICE when
reading the ifcfg file for the ipoib connection.

https://bugzilla.redhat.com/show_bug.cgi?id=2122703
2022-09-07 10:47:35 -04:00
Wen Liang a4fe16a426 infiniband: avoid normalizing the p-key when reading from ifcfg
When writing the p-key setting to the ifcfg file and reading the
setting back, the value has to be consistent. This is not limited to
p-key only, any setting value during the ifcfg write and read also has
to be consistent.

This was probably added in commit cb5606cf1c ('ifcfg-rh:
add support for Infiniband partitions') as this is also what
ifup-ib does ([1]). For NetworkManager profiles however, the
p-key is also valid without the high bit set, so the ifcfg-rh
reader must honor that.

[1] 0c9fb6ca7b/rdma.ifup-ib (L75)
2022-09-07 10:47:35 -04:00
Wen Liang 72144946c9
Revert "platform: add the a_no_auto_noprefixroute flag"
This flag won't be used. Instead we will pass a flag to
nm_platform_ip_route_sync() to disable addition of the prefix route
flag.

This reverts commit bd84ae4dc5.
2022-09-07 15:51:56 +02:00
Lubomir Rintel 0e0ac364a1 manager: don't bring up master connections on devices that are not disconnected
Otherwise we're likely interfering with an in-progress activation.
Consider the following connections, first two being active:

  id=bond0a type=bond interface-name=bond0, (Active)
    id=dummy0a type=dummy interface-name=dummy0 master=bond0a, (Active)
  id=bond0b type=bond interface-name=bond0
    id=dummy0b type=dummy interface-name=dummy0 master=bond0b

Note there's two hierarchies with bond0 bond having a dummy0 port,
first one (bond0a, dummy0a) being active.

Suppose the users wants to bring the other one up (bond0b, dummy0b) and
does a "nmcli c up bond0b". This is what happens:

  1.) bond0b starts activation due to user request
  2.) bond0a starts deactivation due to new activation
  3.) dummy0 loses its master, begins deactivation
  4.) dummy0 finishes deactivation
  5.) both dummy0 being deactivated and bond0b check for slaves enqueues
      auto-activation check for dummy0
  6.) auto-activation picks dummy0a for dummy0
  7.) dummy0a begins activation
  8.) dummy0a looks for master connection, picks bond0a
  9.) bond0a starts activating on bond0, kicks bond0b away
  10.) bond0a and dummy0a end up finishing activation
  11.) Everybody unhappy :(

NM's auto-activation logic is only takes autoconnect priority into
account when figuring out a connection to activate and can't be expected
to bring up most sensible combination of connection when there's
multiple ones for the same devices with complex dependencies.

Nevertheless, it shouldn't ever undo the activations if the user is
bringing up the connections manually.

This patch prevents bringing up of master devices that are not
DISCONNECTED and therefore shouldn't be up for grabs. This was
previously done for hardware devices only whereas I believe it should be
the case for *all* realized devices.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1172
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1364
2022-09-07 14:28:26 +02:00
Lubomir Rintel 5c3b553ea3 merge: branch 'lr/docs-deprec-props'
The documentation of property deprecation was not great in nm-settings-nmcli(5).

This aims to improve that, essentially changing:

  number
      Legacy setting that used to help establishing PPP data sessions for GSM-based modems. Deprecated: 1

Into

  number
      Legacy setting that used to help establishing PPP data sessions for GSM-based modems.

      This property is deprecated since version 1.16. User-provided values for this setting are no longer used.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1367
2022-09-07 14:15:39 +02:00
Lubomir Rintel 8af1404e54 generate-docs-nm-settings-docs-gir: remove space from the beginning of a para
From nm-settings-dbus(5):

Before (ugly, offensive, possibly in violation of geneva protocol):

  ...
  | set, the authentication retries for 3
  | times before failing the connection.
  |
  |  Currently, this only applies to 802-1x
  | authentication.

After (beautiful, smells good, in harmony with nature):

  ...
  | set, the authentication retries for 3
  | times before failing the connection.
  |
  | Currently, this only applies to 802-1x
  | authentication.
2022-09-07 12:10:21 +02:00
Lubomir Rintel d3ffd2f90a setting-bridge,wireless: improve some deprecation warnings
The documentation paragraph contained deprecation information redundant
with the deprecation tag. It looks ugly when rendered into a manual
page.
2022-09-07 11:06:38 +02:00
Lubomir Rintel 09c402d903 setting-8021x: add deprecation tags
Add deprecation tags to "subject-match" and "phase2-subject-match"
properties and adjust the documentation slightly.

They've been deprecated since commit 64b76ba906 ('libnm-core: add
domain-suffix-match properties to NMSetting8021x').
2022-09-07 11:04:17 +02:00
Lubomir Rintel 4d42b81d2a generate-docs-nm-settings-docs-gir: move deprecation info to a separate tag
Previously, the deprecation data was included in <description*>, in form
of an integer. E.g.:

  /**
   * NMSettingLala:hello:
   *
   * Does this and that.
   *
   * Deprecated: 1.12: Be sad instead.
   **/

Results in:

  <property name="hello">
    <description>Does this and that. Deprecated: 1</description>
  </property>

Let's make it do this instead:

  <property name="hello">
    <description>Does this and that.</description>
    <deprecated since="1.12">Be sad instead.</description>
  </property>
2022-09-07 11:01:40 +02:00
Lubomir Rintel d71f0aac39 generate-docs-nm-settings-docs-merge: merge <deprecated*> elements
They will be used to include property deprecation data.
2022-09-07 10:55:31 +02:00
Lubomir Rintel 6ce2aae011 generate-docs-nm-settings-docs-merge: streamline a bit
Replace a pair of overly sophisticated expressions with something that's
easier to follow, avoiding code duplication at the same time.
2022-09-07 10:55:31 +02:00
Lubomir Rintel 0f0c4e384d man/nm-settings-nmcli: include deprecation description, if present 2022-09-07 10:55:31 +02:00
Lubomir Rintel bc09568eb1 man/nm-settings-dbus: include deprecation description, if present 2022-09-07 10:55:31 +02:00
Thomas Haller a8b9aef08f
contrib: update bash history for "nm-in-container.sh" and motd 2022-09-07 09:09:32 +02:00
Fernando Fernandez Mancera 652b2a3885
l3cfg: re-use plen variable in NMIPRoute creation 2022-09-06 17:12:15 +02:00
Beniamino Galvani 12e5b944f6 dhcp: merge branch 'bg/dhcp6-dad-pt2'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1363
https://bugzilla.redhat.com/show_bug.cgi?id=2096386
2022-09-06 10:34:04 +02:00
Beniamino Galvani e4aefbc556 dhcp: implement decline on IPv6 DAD failure with dhclient
The dhclient plugin already supports sending a decline when IPv4 ACD
fails. Also implement support for IPv6 DAD.

See-also: 156d84217c ("dhcp/dhclient: implement accept/decline (ACD) for dhclient plugin")
2022-09-05 09:40:08 +02:00
Beniamino Galvani a7eb77260a dhcp: decline IPv6 lease if all adresses fail DAD
Currently we accept the DHCPv6 just after addresses are configured on
kernel, without waiting DAD result. Instead, wait that DAD completes
and decline the lease if all addresses are detected as duplicate.

Note that when an address has non-infinite lifetime and fails DAD,
kernel removes it automatically. With iproute2 we see something like:

602: testX6    inet6 2620:🔢5678/128 scope global tentative dynamic noprefixroute
       valid_lft 7500sec preferred_lft 7200sec
Deleted 602: testX6    inet6 2620:🔢5678/128 scope global dadfailed tentative dynamic noprefixroute
       valid_lft 7500sec preferred_lft 7200sec

Since the address gets removed from the platform cache, at the moment
we don't have a way to check the flags of the removal
message. Therefore, we assume that any address that goes away in
tentative state was detected as duplicate.

https://bugzilla.redhat.com/show_bug.cgi?id=2096386
2022-09-05 09:40:08 +02:00
Beniamino Galvani 9eb8cbca76 device: don't emit recheck-assume if there is a queued activation request
The @dracut_NM_vlan_over_team_no_boot sometimes fails, among other
things, because it fails to assume an indicated connection after a
restart.

That seems to happen because after the decision to activate the
indicated connection, the device does not move from DISCONNECTED state
quickly enough. Another assumption recheck runs in between and decides
to generate a connection, because the assume state was already reset
in between.

First start, creates and activates b3a61b68-f744-4a4c-a513-61399c154a67
on vlan0017:

  NetworkManager (version 1.41.1-30921.55767cf5.el9) is starting...
      (asserts:10000, boot:caf7301a-19cd-498b-b5ba-5d36ee939ffe)
  ...
  settings: update[b3a61b68-f744-4a4c-a513-61399c154a67]: adding connection "vlan0017"
      (45113870df0a4cfb/keyfile)

Second start:

  NetworkManager (version 1.41.1-30921.55767cf5.el9) is starting...
      (after a restart, asserts:10000, boot:caf7301a-19cd-498b-b5ba-5d36ee939ffe)

Assumption attempt successfully picks the right connection and thus
proceeds to reset the assume state:

  manager: (vlan0017): assume: will attempt to assume matching connection 'vlan0017'
      (b3a61b68-f744-4a4c-a513-61399c154a67) (indicated)
  device[c7c5101cf0b73f5f] (vlan0017): assume-state: set guess-assume=0, connection=(null)

Everything great so far, activation of the right connection is enqueued
and the device moves away from unavailable state. However, the
activation can't proceed immediately:

  device (vlan0017): state change: unmanaged -> unavailable
      (reason 'connection-assumed', sys-iface-state: 'assume')
  device (vlan0017): state change: unavailable -> disconnected
      (reason 'connection-assumed', sys-iface-state: 'assume')
  active-connection[0x55ba1162f1c0]: set device "vlan0017" [0x55ba1163c4f0]
  device[c7c5101cf0b73f5f] (vlan0017): queue activation request waiting for carrier

Now another assumption attempt is done. The original assume state is
gone, so a connection is generated:

  platform-linux: UDEV event: action 'add' subsys 'net' device 'vlan0017' (6); seqnum=1959
  device[c7c5101cf0b73f5f] (vlan0017): queued link change for ifindex 6
  manager: (vlan0017): assume: generated connection 'vlan0017' (57627119-8c20-4f9e-bf4d-4fc427b4a6a9)
  keyfile: commit: 57627119-8c20-4f9e-bf4d-4fc427b4a6a9 (vlan0017) added as
      "/run/NetworkManager/system-connections/vlan0017-57627119-8c20-4f9e-bf4d-4fc427b4a6a9.nmconnection"
      (nm-generated,volatile,external)

I think this shouldn't have happened. We've picked the correct
connection already and it's enqueued for activation!

Change the check in nm_device_emit_recheck_assume() to also consider
any queued activation.

Fixes-test: @dracut_NM_vlan_over_team_no_boot

Co-authored-by: Lubomir Rintel <lkundrak@v3.sk>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1351
2022-09-03 16:41:52 +02:00
Thomas Haller fde772643c
libnm: merge branch 'th/libnm-doc-annotation-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1352
2022-09-02 19:04:05 +02:00
Thomas Haller 18eeb4bf6c
libnm: fix invalid doc annotations for missing end tag 2022-09-02 19:03:35 +02:00
Thomas Haller 2ccbf8af3b
libnm: style cleanups for property annotations
The parser will become stricter, and expect certain
things. The strictness should help, to avoid writing wrong annotations.

Adjust for that.
2022-09-02 19:03:35 +02:00
Thomas Haller e70607aa55
libnm: avoid "tag:" text inside documentation
The parser is reworked, and this line could be wrongly parsed
because it starts with " *     value:" which could be misinterpreted
as a tag. It actually won't be parsed wrongly and is not parsed
wrongly now. Still, avoid this potential ambiguity by breaking
the line differently.
2022-09-02 19:02:57 +02:00
Thomas Haller 29dae2939a
libnm: drop invalid "---ifcfg-rh---" blocks 2022-09-02 19:02:25 +02:00
Thomas Haller 6d945b4fd3
libnm: fix documentation annotations for ifcfg-rh plugin 2022-09-02 19:02:24 +02:00
Lubomir Rintel f3327835c1 team: restore port configuration after teamd respawn
If teamd crashes, we restore it. That's very nice, but if it really
crashed then it left ports attached and the slave connections are not
going to fail and the port configuration (e.g. priority or link watcher) in
teamd's memory will be gone.

This will restore the port configuration when the teamd connection is
re-established. This probably also fixes a race where a slave connection
would be enslaved (only possible externally and manually?) while we
didn't establish a connection to teamd yet. We'll just send the port
configuration in once're connected.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1361
2022-09-02 12:51:25 +02:00
Lubomir Rintel 38251ad59f team: trivial: use a variable instead of nm_device_get_ip_iface() calls
This reads a little better and performs marginally better.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1361
2022-09-02 12:51:09 +02:00
Vojtech Bubela db88bc5090 ovs: merge branch 'add-ovs-option'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1322
2022-09-02 09:11:29 +00:00
Vojtech Bubela 5fde7814dc ovs: add ofport_request option to ovs interface
Add option to set ofport_request when configuring ovs interface. When
connection with ofport_request configured is activated ovsdb will first
try to activated on the port set by ofport_request.
2022-09-02 08:46:36 +00:00
Thomas Haller 39e8707f0d
version: reformat file for latest style
the .h.in file is not formatted by our nm-code-format.sh
file. It also contains .in template parameters that the
formatting would destroy.

Still, follow our current style and reformat the parts manually.
2022-09-01 16:33:39 +02:00
Thomas Haller 8ae132cc49
contrib: add "reset" command to "nm-in-container.sh"
It's between "stop" and "clean". It removes the container,
but keeps the container images. This is to fast restart without
rebuilding the container (image).
2022-09-01 16:33:39 +02:00
Lubomir Rintel 222bd85fdc nmcli: don't translate "%s"
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1354
2022-09-01 13:07:23 +02:00
Lubomir Rintel b071041d17 manager: drop useless use of a format string
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1355
2022-09-01 13:05:57 +02:00
Vojtech Bubela 7dccb5f548
version: add 1.42 macros 2022-08-31 19:23:26 +02:00
Thomas Haller 424f09e43d
nmcli: merge branch 'th/nmcli-modify-uuid'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1349
2022-08-31 19:22:27 +02:00
Thomas Haller ef712733aa
NEWS: update 2022-08-31 19:22:01 +02:00
Thomas Haller 130479c8b2
nmcli: allow setting the "connection.uuid" for new profiles
Because, why not?

The client side determines the UUID, so there is no security implication
by letting the nmcli user explicitly choose it.

  $ nmcli connection add type ethernet con-name x connection.uuid 6965f79c-4424-4918-98e8-3c0982434011
  Connection 'x' (6965f79c-4424-4918-98e8-3c0982434011) successfully added.
  $ nmcli connection add type ethernet con-name x connection.uuid 6965f79c-4424-4918-98e8-3c0982434011
  Error: Failed to add 'x' connection: a connection with this UUID already exists
  $ nmcli connection modify x connection.uuid 6965f79c-4424-4918-98e8-3c0982434011
  $ nmcli connection modify x connection.uuid 6965f79c-4424-4918-98e8-3c0982434012
  Error: failed to modify connection.uuid: the property can't be changed.
2022-08-31 19:20:12 +02:00
Thomas Haller fcf32d81bd
nmcli: allow changing the UUID of a profile in offline mode
It is useful to modify the UUID in offline mode. Otherwise, it's
cumbersome to clone a profile, because the cloned profile will
have the same UUID (and NetworkManager cannot load them both
at the same time).

  umask 077
  nmcli --offline connection modify \
      connection.id profile2 \
      connection.uuid new \
    < /etc/NetworkManager/system-connections/profile1.nmconnection \
    > /etc/NetworkManager/system-connections/profile2.nmconnection \

The doctext doesn't actually work for `man nm-settings-nmcli`. The
generation of our docs is still an incomprehensible mess that needs
fixing.
2022-08-31 19:20:11 +02:00
Thomas Haller 14828a0932
nmcli: support changing the connection type in offline mode 2022-08-31 19:20:11 +02:00
Thomas Haller 71a111bb9c
nmcli: add get_env_flags() accessor to NMMetaEnvironment for checking offline mode
We will want to know whether we are in offline mode.
Add an accessor to get environment flags, which libnmc-setting
can use.
2022-08-31 19:20:11 +02:00
Thomas Haller 686d9ebd4f
libnmc: avoid "g_set_error(error, 1, 0, ...)" and use nm_utils_error_set()
We really should not pass bogus values "1, 0" to g_set_error().
As we don't care about a particular error code, use
NM_UTILS_ERROR_UNKNOWN.

While at it, use nm_utils_error_set() everywhere.
2022-08-31 19:20:11 +02:00
Thomas Haller f16a6f55fb
glib-aux/trivial: fix typo in comment 2022-08-31 19:20:10 +02:00
Thomas Haller 1326e42823
glib-aux: first try stack allocated temporary buffer in nm_uuid_generate_from_strings()
Try to first use a stack allocated buffer for the temporary string.
Only if the data is too large, NMStrBuf will automatically grow
the buffer on the heap.

In many cases, this buffer will be large enough, and we can avoid the
heap allocation.
2022-08-31 19:20:10 +02:00
Thomas Haller c5ec4ebd77
glib-aux: fix spurious semicolon after NM_STR_BUF_INIT() macros
It's wrong, and it breaks certain uses.

Fixes: 13d25f9d0b ('glib-aux: add support for starting with stack-allocated buffer in NMStrBuf')
2022-08-31 19:20:10 +02:00