NetworkManager/src/nmcli
Thomas Haller e6a33c04eb
all: make "ipv6.addr-gen-mode" configurable by global default
It can be useful to choose a different "ipv6.addr-gen-mode". And it can be
useful to override the default for a set of profiles.

For example, in cloud or in a data center, stable-privacy might not be
the best choice. Add a mechanism to override the default via global defaults
in NetworkManager.conf:

  # /etc/NetworkManager/conf.d/90-ipv6-addr-gen-mode-override.conf
  [connection-90-ipv6-addr-gen-mode-override]
  match-device=type:ethernet
  ipv6.addr-gen-mode=0

"ipv6.addr-gen-mode" is a special property, because its default depends on
the component that configures the profile.

- when read from disk (keyfile and ifcfg-rh), a missing addr-gen-mode
  key means to default to "eui64".
- when configured via D-Bus, a missing addr-gen-mode property means to
  default to "stable-privacy".
- libnm's ip6-config::addr-gen-mode property defaults to
  "stable-privacy".
- when some tool creates a profile, they either can explicitly
  set the mode, or they get the default of the underlying mechanisms
  above.

  - nm-initrd-generator explicitly sets "eui64" for profiles it creates.
  - nmcli doesn' explicitly set it, but inherits the default form
    libnm's ip6-config::addr-gen-mode.
  - when NM creates a auto-default-connection for ethernet ("Wired connection 1"),
    it inherits the default from libnm's ip6-config::addr-gen-mode.

Global connection defaults only take effect when the per-profile
value is set to a special default/unset value. To account for the
different cases above, we add two such special values: "default" and
"default-or-eui64". That's something we didn't do before, but it seams
useful and easy to understand.

Also, this neatly expresses the current behaviors we already have. E.g.
if you don't specify the "addr-gen-mode" in a keyfile, "default-or-eui64"
is a pretty clear thing.

Note that usually we cannot change default values, in particular not for
libnm's properties. That is because we don't serialize the default
values to D-Bus/keyfile, so if we change the default, we change
behavior. Here we change from "stable-privacy" to "default" and
from "eui64" to "default-or-eui64". That means, the user only experiences
a change in behavior, if they have a ".conf" file that overrides the default.

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

See-also: https://github.com/coreos/fedora-coreos-tracker/issues/907

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1213
2022-06-29 07:38:48 +02:00
..
agent.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
common.c nmcli: be less insistant on exiting when readline() gets no input 2022-06-15 12:13:26 +02:00
common.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
connections.c nmcli/connections: fix setting ifname with "--ask c add" 2022-06-24 00:30:04 +02:00
connections.h nmcli/connections: export nmc_connection_check_deprecated() 2022-05-12 14:37:18 +02:00
devices.c nmcli/devices: fix a crash 2022-06-23 15:12:19 +02:00
devices.h cli: move from "clients/cli/" to "src/nmcli/" 2021-03-15 17:10:54 +01:00
general.c nmcli: add nmcli gen reload usage 2022-06-15 08:16:33 +02:00
generate-docs-nm-settings-nmcli.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
generate-docs-nm-settings-nmcli.xml.in all: make "ipv6.addr-gen-mode" configurable by global default 2022-06-29 07:38:48 +02:00
meson.build build/meson: use "rename" directive for installing nmcli bash completion 2022-05-13 16:15:18 +02:00
nmcli-completion bash-completion: localize the prev variable 2021-06-08 11:38:45 +02:00
nmcli.c nmcli: add --offline option for "add" and "modify" 2022-04-19 14:12:42 +02:00
nmcli.h cli: reformat file to look better 2022-06-16 11:02:20 +02:00
polkit-agent.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
polkit-agent.h cli: move from "clients/cli/" to "src/nmcli/" 2021-03-15 17:10:54 +01:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00
settings.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
settings.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
utils.c clients: bulk removal of g_assert*() statements 2022-03-28 13:51:44 +02:00
utils.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00

nmcli

The command line user interface of NetworkManager. It uses the D-Bus API of NetworkManager (via libnm).

See:

  • man 1 nmcli ([www])
  • man 7 nmcli-examples ([www])
  • man 5 nm-settings-nmcli ([www])

Try also with bash-completion!